1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
import pytest
from fietsboek import pdf
@pytest.mark.parametrize("value, expected", [
('', '""'),
('a', '"\\u{61}"'),
('FOO', '"\\u{46}\\u{4f}\\u{4f}"'),
('äß', '"\\u{e4}\\u{df}"'),
('"', '"\\u{22}"'),
("'", '"\\u{27}"'),
])
def test_typst_string(value, expected):
assert pdf.typst_string(value) == expected
@pytest.mark.parametrize("value, expected", [
("foo", "foo"),
("*foo*", "\\*foo\\*"),
("#strong[foo]", "\\#strong\\[foo\\]"),
("= foo", "\\= foo"),
("par 1\n\npar 2", "par 1\n\npar 2"),
])
def test_typst_escape(value, expected):
assert pdf.typst_escape(value) == expected
@pytest.mark.parametrize("md_source, typst_source", [
("*foo*", "#emph[foo]\n\n"),
("**foo**", "#strong[foo]\n\n"),
("***foo***", "#strong[#emph[foo]]\n\n"),
("[Teksd](https://link)",
'#link("\\u{68}\\u{74}\\u{74}\\u{70}\\u{73}\\u{3a}'
'\\u{2f}\\u{2f}\\u{6c}\\u{69}\\u{6e}\\u{6b}")[Teksd]\n\n'),
("""\
# Uperschrift
Teksd""", """\
#heading(level: 1)[Uperschrift]
Teksd\n\n"""),
("""\
* Eitem 1
* Eitem 2""", """\
#list(
[Eitem 1],
[Eitem 2],
)"""),
("""\
1. Eitem 1
1. Eitem 2""", """\
#enum(
[Eitem 1],
[Eitem 2],
)"""),
])
def test_md_to_typst(md_source, typst_source):
assert pdf.md_to_typst(md_source) == typst_source
|