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>
+ ```
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9