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 | ``` |