Blame
| 76d856 | Ralph Thesen | 2023-11-29 21:45:06 | 1 | # Syntax Highlighting |
| 2 | ||||
| 3 | On this page you can find examples on how An Otter Wiki highlights code block with a given syntax. |
|||
| 4 | ||||
| 5 | 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. |
|||
| 6 | ||||
| 7a2860 | Ralph Thesen | 2024-03-21 01:29:55 | 7 | A fenced code block with language yaml, like |
| 76d856 | Ralph Thesen | 2023-11-29 21:45:06 | 8 | |
| 9 | ```yaml |
|||
| 10 | version: '3' |
|||
| 11 | services: |
|||
| 12 | otterwiki: |
|||
| 1df4a0 | Ralph Thesen | 2024-02-28 11:36:01 | 13 | image: redimp/otterwiki:2 |
| 76d856 | Ralph Thesen | 2023-11-29 21:45:06 | 14 | ports: |
| 15 | - 8080:80 |
|||
| 16 | ``` |
|||
| 17 | ||||
| 18 | will be rendered as |
|||
| 19 | ||||
| 20 | ```yaml |
|||
| 21 | version: '3' |
|||
| 22 | services: |
|||
| 23 | otterwiki: |
|||
| 1df4a0 | Ralph Thesen | 2024-02-28 11:36:01 | 24 | image: redimp/otterwiki:2 |
| 76d856 | Ralph Thesen | 2023-11-29 21:45:06 | 25 | ports: |
| 26 | - 8080:80 |
|||
| 27 | ``` |
|||
| 28 | ||||
| 29 | 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). |
|||
| 30 | ||||
| 31 | --- |
|||
| 32 | ||||
| 33 | ### bash |
|||
| 34 | ||||
| 35 | ```bash |
|||
| 36 | fib() |
|||
| 37 | { |
|||
| 38 | if [ $1 -le 0 ] |
|||
| 39 | then |
|||
| 40 | echo 0 |
|||
| 41 | return 0 |
|||
| 42 | fi |
|||
| 43 | if [ $1 -le 2 ] |
|||
| 44 | then |
|||
| 45 | echo 1 |
|||
| 46 | else |
|||
| 47 | a=$(fib $[$1-1]) |
|||
| 48 | b=$(fib $[$1-2]) |
|||
| 49 | echo $(($a+$b)) |
|||
| 50 | fi |
|||
| 51 | } |
|||
| 52 | ``` |
|||
| 53 | ||||
| 54 | ### C |
|||
| 55 | ||||
| 56 | ```c |
|||
| 57 | long long int fibb(int n) { |
|||
| 58 | int fnow = 0, fnext = 1, tempf; |
|||
| 59 | while(--n>0){ |
|||
| 60 | tempf = fnow + fnext; |
|||
| 61 | fnow = fnext; |
|||
| 62 | fnext = tempf; |
|||
| 63 | } |
|||
| 7a2860 | Ralph Thesen | 2024-03-21 01:29:55 | 64 | return fnext; |
| 76d856 | Ralph Thesen | 2023-11-29 21:45:06 | 65 | } |
| 66 | ``` |
|||
| 67 | ||||
| 68 | ### C++ |
|||
| 69 | ||||
| 70 | ```cpp |
|||
| 71 | #include <numeric> |
|||
| 72 | #include <vector> |
|||
| 73 | #include <functional> |
|||
| 74 | #include <iostream> |
|||
| 75 | ||||
| 76 | unsigned int fibonacci(unsigned int n) { |
|||
| 77 | if (n == 0) return 0; |
|||
| 78 | std::vector<int> v(n, 1); |
|||
| 79 | adjacent_difference(v.begin(), v.end()-1, v.begin()+1, std::plus<int>()); |
|||
| 80 | // "array" now contains the Fibonacci sequence from 1 up |
|||
| 81 | return v[n-1]; |
|||
| 82 | } |
|||
| 83 | ``` |
|||
| 84 | ||||
| 85 | ### Dockerfile |
|||
| 86 | ||||
| 87 | ```Dockerfile |
|||
| 88 | FROM alpine:3.18.0 |
|||
| 89 | MAINTAINER mail@example.com |
|||
| 90 | ||||
| 91 | RUN set -ex \ |
|||
| 92 | && apk update && apk upgrade \ |
|||
| 93 | && apk add --no-cache \ |
|||
| 94 | bash curl dhcping iftop httpie netcat-openbsd py3-pip \ |
|||
| 95 | py3-setuptools vim git |
|||
| 96 | ||||
| 97 | USER root |
|||
| 98 | WORKDIR /root |
|||
| 99 | ENV HOSTNAME toolkit |
|||
| 100 | ||||
| 101 | CMD ["bash"] |
|||
| 102 | ``` |
|||
| 103 | ||||
| 104 | ### Go |
|||
| 105 | ||||
| 106 | ```go |
|||
| 107 | import ( |
|||
| 108 | "math/big" |
|||
| 109 | ) |
|||
| 110 | ||||
| 111 | func fib(n uint64) *big.Int { |
|||
| 112 | if n < 2 { |
|||
| 113 | return big.NewInt(int64(n)) |
|||
| 114 | } |
|||
| 115 | a, b := big.NewInt(0), big.NewInt(1) |
|||
| 116 | for n--; n > 0; n-- { |
|||
| 117 | a.Add(a, b) |
|||
| 118 | a, b = b, a |
|||
| 119 | } |
|||
| 120 | return b |
|||
| 121 | } |
|||
| 122 | ``` |
|||
| 123 | ||||
| 124 | ### Haskell |
|||
| 125 | ||||
| 126 | ```haskell |
|||
| 127 | fib x = |
|||
| 128 | if x < 1 |
|||
| 129 | then 0 |
|||
| 130 | else if x == 1 |
|||
| 131 | then 1 |
|||
| 132 | else fibs !! (x - 1) + fibs !! (x - 2) |
|||
| 133 | where |
|||
| 134 | fibs = map fib [0 ..] |
|||
| 135 | ``` |
|||
| 136 | ||||
| 137 | ### html |
|||
| 138 | ||||
| 139 | ```html |
|||
| 140 | <!DOCTYPE html> |
|||
| 141 | <html> |
|||
| 142 | <head> |
|||
| 143 | <meta charset="UTF-8"> |
|||
| 144 | <title>The title goes here</title> |
|||
| 145 | </head> |
|||
| 146 | <body> |
|||
| 147 | <!-- a comment --> |
|||
| 148 | The content goes here. |
|||
| 149 | </body> |
|||
| 150 | </html> |
|||
| 151 | ``` |
|||
| 152 | ||||
| 153 | ### json |
|||
| 154 | ||||
| 155 | ```json |
|||
| 156 | { |
|||
| 157 | "mixed list": [ |
|||
| 158 | "string", |
|||
| 159 | 42 |
|||
| 160 | ], |
|||
| 161 | "object": { |
|||
| 162 | "key": "value", |
|||
| 163 | "array": [ |
|||
| 164 | { |
|||
| 165 | "null_value": null |
|||
| 166 | }, |
|||
| 167 | { |
|||
| 168 | "boolean": true |
|||
| 169 | }, |
|||
| 170 | { |
|||
| 171 | "float": 1.2 |
|||
| 172 | } |
|||
| 173 | ] |
|||
| 174 | }, |
|||
| 175 | "content": "Some lines\nwith line breaks" |
|||
| 176 | } |
|||
| 177 | ``` |
|||
| 178 | ||||
| 179 | ### nginx |
|||
| 180 | ||||
| 181 | ```nginx |
|||
| 182 | user www www; |
|||
| 183 | worker_processes 2; |
|||
| 184 | pid /var/run/nginx.pid; |
|||
| 185 | error_log /var/log/nginx.error_log debug | info | notice | warn | error | crit; |
|||
| 186 | ||||
| 187 | events { |
|||
| 188 | connections 2000; |
|||
| 189 | use kqueue | rtsig | epoll | /dev/poll | select | poll; |
|||
| 190 | } |
|||
| 191 | ||||
| 192 | http { |
|||
| 193 | log_format main '$remote_addr - $remote_user [$time_local] ' |
|||
| 194 | '"$request" $status $bytes_sent ' |
|||
| 195 | '"$http_referer" "$http_user_agent" ' |
|||
| 196 | '"$gzip_ratio"'; |
|||
| 197 | send_timeout 3m; |
|||
| 198 | client_header_buffer_size 1k; |
|||
| 199 | ... |
|||
| 200 | ``` |
|||
| 201 | ||||
| 202 | ### python |
|||
| 203 | ||||
| 204 | ```python |
|||
| 205 | def fibMemo(): |
|||
| 206 | pad = {0:0, 1:1} |
|||
| 207 | def func(n): |
|||
| 208 | if n not in pad: |
|||
| 209 | pad[n] = func(n-1) + func(n-2) |
|||
| 210 | return pad[n] |
|||
| 211 | return func |
|||
| 212 | ||||
| 213 | fm = fibMemo() |
|||
| 214 | for i in range(1,31): |
|||
| 215 | print fm(i), |
|||
| 216 | ``` |
|||
| 217 | ||||
| 218 | ### php |
|||
| 219 | ||||
| 220 | ```php |
|||
| 221 | <?php |
|||
| 222 | function fibIter($n) { |
|||
| 223 | if ($n < 2) { |
|||
| 224 | return $n; |
|||
| 225 | } |
|||
| 226 | $fibPrev = 0; |
|||
| 227 | $fib = 1; |
|||
| 228 | foreach (range(1, $n-1) as $i) { |
|||
| 229 | list($fibPrev, $fib) = array($fib, $fib + $fibPrev); |
|||
| 230 | } |
|||
| 231 | return $fib; |
|||
| 232 | } |
|||
| 233 | ?> |
|||
| 234 | ``` |
|||
| 235 | ||||
| 236 | ### rust |
|||
| 237 | ||||
| 238 | ```rust |
|||
| 239 | use std::mem; |
|||
| 240 | fn main() { |
|||
| 241 | fibonacci(0,1); |
|||
| 242 | } |
|||
| 243 | ||||
| 244 | fn fibonacci(mut prev: usize, mut curr: usize) { |
|||
| 245 | mem::swap(&mut prev, &mut curr); |
|||
| 246 | if let Some(n) = curr.checked_add(prev) { |
|||
| 247 | println!("{}", n); |
|||
| 248 | fibonacci(prev, n); |
|||
| 249 | } |
|||
| 250 | } |
|||
| 251 | ``` |
|||
| 252 | ||||
| 253 | ### yaml |
|||
| 254 | ||||
| 255 | ```yaml |
|||
| 256 | --- |
|||
| 257 | mixed list: |
|||
| 258 | - string |
|||
| 259 | - 42 |
|||
| 260 | object: |
|||
| 261 | key: value |
|||
| 262 | array: |
|||
| 263 | - null_value: |
|||
| 264 | - boolean: true |
|||
| 265 | - float: 1.2 |
|||
| 266 | content: |- |
|||
| 267 | Some lines |
|||
| 268 | with line breaks |
|||
| 269 | ``` |
|||
| 270 | ||||
| 271 | ### xml |
|||
| 272 | ||||
| 273 | ```xml |
|||
| 274 | <?xml version="1.0" encoding="UTF-8" ?> |
|||
| 275 | <root> |
|||
| 276 | <mixed_list>string</mixed_list> |
|||
| 277 | <mixed_list>42</mixed_list> |
|||
| 278 | <object> |
|||
| 279 | <key>value</key> |
|||
| 280 | <array> |
|||
| 281 | <null_value /> |
|||
| 282 | </array> |
|||
| 283 | <array> |
|||
| 284 | <boolean>true</boolean> |
|||
| 285 | </array> |
|||
| 286 | <array> |
|||
| 287 | <float>1.2</float> |
|||
| 288 | </array> |
|||
| 289 | </object> |
|||
| 290 | <content>Some lines |
|||
| 291 | with line breaks</content> |
|||
| 292 | </root> |
|||
| 293 | ``` |
