# 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 language yaml, like ```yaml version: '3' services: otterwiki: image: redimp/otterwiki:2 ports: - 8080:80 ``` will be rendered as ```yaml version: '3' services: otterwiki: image: redimp/otterwiki:2 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> ```