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