Commit 76d856
2023-11-29 21:45:06 Ralph Thesen: added example code blocks/dev/null .. examples/syntax highlighting.md | |
@@ 0,0 1,293 @@ | |
+ | # Syntax Highlighting |
+ | |
+ | On this page you can find examples on how An Otter Wiki highlights code block with a given syntax. |
+ | |
+ | A code block is fenced with three backticks `` ``` `` on the line before and after the code block. To add syntax highlighting specify the language next to the backticks of the first line, e.g. |
+ | |
+ | A fenced code block with langeuage yaml, like |
+ | |
+ | ```yaml |
+ | version: '3' |
+ | services: |
+ | otterwiki: |
+ | image: redimp/otterwiki:2.0 |
+ | ports: |
+ | - 8080:80 |
+ | ``` |
+ | |
+ | will be rendered as |
+ | |
+ | ```yaml |
+ | version: '3' |
+ | services: |
+ | otterwiki: |
+ | image: redimp/otterwiki:2.0 |
+ | ports: |
+ | - 8080:80 |
+ | ``` |
+ | |
+ | Examples for multiple other languages can be found below. All the examples implementing the Fibonacci sequence (and more examples in more languages) can be found on [rosettacode.org](https://rosettacode.org/wiki/Fibonacci_sequence). |
+ | |
+ | --- |
+ | |
+ | ### bash |
+ | |
+ | ```bash |
+ | fib() |
+ | { |
+ | if [ $1 -le 0 ] |
+ | then |
+ | echo 0 |
+ | return 0 |
+ | fi |
+ | if [ $1 -le 2 ] |
+ | then |
+ | echo 1 |
+ | else |
+ | a=$(fib $[$1-1]) |
+ | b=$(fib $[$1-2]) |
+ | echo $(($a+$b)) |
+ | fi |
+ | } |
+ | ``` |
+ | |
+ | ### C |
+ | |
+ | ```c |
+ | long long int fibb(int n) { |
+ | int fnow = 0, fnext = 1, tempf; |
+ | while(--n>0){ |
+ | tempf = fnow + fnext; |
+ | fnow = fnext; |
+ | fnext = tempf; |
+ | } |
+ | return fnext; |
+ | } |
+ | ``` |
+ | |
+ | ### C++ |
+ | |
+ | ```cpp |
+ | #include <numeric> |
+ | #include <vector> |
+ | #include <functional> |
+ | #include <iostream> |
+ | |
+ | unsigned int fibonacci(unsigned int n) { |
+ | if (n == 0) return 0; |
+ | std::vector<int> v(n, 1); |
+ | adjacent_difference(v.begin(), v.end()-1, v.begin()+1, std::plus<int>()); |
+ | // "array" now contains the Fibonacci sequence from 1 up |
+ | return v[n-1]; |
+ | } |
+ | ``` |
+ | |
+ | ### Dockerfile |
+ | |
+ | ```Dockerfile |
+ | FROM alpine:3.18.0 |
+ | MAINTAINER mail@example.com |
+ | |
+ | RUN set -ex \ |
+ | && apk update && apk upgrade \ |
+ | && apk add --no-cache \ |
+ | bash curl dhcping iftop httpie netcat-openbsd py3-pip \ |
+ | py3-setuptools vim git |
+ | |
+ | USER root |
+ | WORKDIR /root |
+ | ENV HOSTNAME toolkit |
+ | |
+ | CMD ["bash"] |
+ | ``` |
+ | |
+ | ### Go |
+ | |
+ | ```go |
+ | import ( |
+ | "math/big" |
+ | ) |
+ | |
+ | func fib(n uint64) *big.Int { |
+ | if n < 2 { |
+ | return big.NewInt(int64(n)) |
+ | } |
+ | a, b := big.NewInt(0), big.NewInt(1) |
+ | for n--; n > 0; n-- { |
+ | a.Add(a, b) |
+ | a, b = b, a |
+ | } |
+ | return b |
+ | } |
+ | ``` |
+ | |
+ | ### Haskell |
+ | |
+ | ```haskell |
+ | fib x = |
+ | if x < 1 |
+ | then 0 |
+ | else if x == 1 |
+ | then 1 |
+ | else fibs !! (x - 1) + fibs !! (x - 2) |
+ | where |
+ | fibs = map fib [0 ..] |
+ | ``` |
+ | |
+ | ### html |
+ | |
+ | ```html |
+ | <!DOCTYPE html> |
+ | <html> |
+ | <head> |
+ | <meta charset="UTF-8"> |
+ | <title>The title goes here</title> |
+ | </head> |
+ | <body> |
+ | <!-- a comment --> |
+ | The content goes here. |
+ | </body> |
+ | </html> |
+ | ``` |
+ | |
+ | ### json |
+ | |
+ | ```json |
+ | { |
+ | "mixed list": [ |
+ | "string", |
+ | 42 |
+ | ], |
+ | "object": { |
+ | "key": "value", |
+ | "array": [ |
+ | { |
+ | "null_value": null |
+ | }, |
+ | { |
+ | "boolean": true |
+ | }, |
+ | { |
+ | "float": 1.2 |
+ | } |
+ | ] |
+ | }, |
+ | "content": "Some lines\nwith line breaks" |
+ | } |
+ | ``` |
+ | |
+ | ### nginx |
+ | |
+ | ```nginx |
+ | user www www; |
+ | worker_processes 2; |
+ | pid /var/run/nginx.pid; |
+ | error_log /var/log/nginx.error_log debug | info | notice | warn | error | crit; |
+ | |
+ | events { |
+ | connections 2000; |
+ | use kqueue | rtsig | epoll | /dev/poll | select | poll; |
+ | } |
+ | |
+ | http { |
+ | log_format main '$remote_addr - $remote_user [$time_local] ' |
+ | '"$request" $status $bytes_sent ' |
+ | '"$http_referer" "$http_user_agent" ' |
+ | '"$gzip_ratio"'; |
+ | send_timeout 3m; |
+ | client_header_buffer_size 1k; |
+ | ... |
+ | ``` |
+ | |
+ | ### python |
+ | |
+ | ```python |
+ | def fibMemo(): |
+ | pad = {0:0, 1:1} |
+ | def func(n): |
+ | if n not in pad: |
+ | pad[n] = func(n-1) + func(n-2) |
+ | return pad[n] |
+ | return func |
+ | |
+ | fm = fibMemo() |
+ | for i in range(1,31): |
+ | print fm(i), |
+ | ``` |
+ | |
+ | ### php |
+ | |
+ | ```php |
+ | <?php |
+ | function fibIter($n) { |
+ | if ($n < 2) { |
+ | return $n; |
+ | } |
+ | $fibPrev = 0; |
+ | $fib = 1; |
+ | foreach (range(1, $n-1) as $i) { |
+ | list($fibPrev, $fib) = array($fib, $fib + $fibPrev); |
+ | } |
+ | return $fib; |
+ | } |
+ | ?> |
+ | ``` |
+ | |
+ | ### rust |
+ | |
+ | ```rust |
+ | use std::mem; |
+ | fn main() { |
+ | fibonacci(0,1); |
+ | } |
+ | |
+ | fn fibonacci(mut prev: usize, mut curr: usize) { |
+ | mem::swap(&mut prev, &mut curr); |
+ | if let Some(n) = curr.checked_add(prev) { |
+ | println!("{}", n); |
+ | fibonacci(prev, n); |
+ | } |
+ | } |
+ | ``` |
+ | |
+ | ### yaml |
+ | |
+ | ```yaml |
+ | --- |
+ | mixed list: |
+ | - string |
+ | - 42 |
+ | object: |
+ | key: value |
+ | array: |
+ | - null_value: |
+ | - boolean: true |
+ | - float: 1.2 |
+ | content: |- |
+ | Some lines |
+ | with line breaks |
+ | ``` |
+ | |
+ | ### xml |
+ | |
+ | ```xml |
+ | <?xml version="1.0" encoding="UTF-8" ?> |
+ | <root> |
+ | <mixed_list>string</mixed_list> |
+ | <mixed_list>42</mixed_list> |
+ | <object> |
+ | <key>value</key> |
+ | <array> |
+ | <null_value /> |
+ | </array> |
+ | <array> |
+ | <boolean>true</boolean> |
+ | </array> |
+ | <array> |
+ | <float>1.2</float> |
+ | </array> |
+ | </object> |
+ | <content>Some lines |
+ | with line breaks</content> |
+ | </root> |
+ | ``` |