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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
package markdown
import (
"strings"
"testing"
)
var raw = `
# Je suis un titre
Avec une description classique,
sur plusieurs lignes !
Et je peux mettre du texte en **gras**,
en *italique* et les **_deux en même temps_** !
> Je suis une magnifique citation
> sur plusieurs lignes
avec une source
> qui recommence après !
qui a elle aussi une source :D
> [!NOTE] Hey :3
> Hehe
> That's cool
- Ceci est une liste
- pas ordonnée
1. et maintenant
2. elle l'est
- hehe

[Ma pfp](https://now.anhgelus.world/) hehe :D
Elle est **magnifique**, n'est-ce pas ?
`
var parsed = `
<h1>Je suis un titre</h1>
<p>Avec une description classique, sur plusieurs lignes !</p>
<p>Et je peux mettre du texte en <b>gras</b>, en <em>italique</em> et les <b><em>deux en même temps</em></b> !</p>
<div class="quote"><blockquote>Je suis une magnifique citation sur plusieurs lignes</blockquote><p>avec une source</p></div>
<div class="quote"><blockquote>qui recommence après !</blockquote><p>qui a elle aussi une source :D</p></div>
<div data-kind="note" class="callout"><h4>Hey :3</h4><div><p>Hehe</p><p>That's cool</p></div></div>
<ul><li>Ceci est une liste</li><li>pas ordonnée</li></ul>
<ol><li>et maintenant</li><li>elle l'est</li></ol>
<ul><li>hehe</li></ul>
<figure>
<img alt="Ceci est ma pfp :3" src="https://cdn.anhgelus.world/pfp.jpg">
<figcaption><a href="https://now.anhgelus.world/" target="_blank" rel="noreferer">Ma pfp</a> hehe :D Elle est <b>magnifique</b>, n'est-ce pas ?</figcaption>
</figure>
`
var parsedPoem = `
<h1>Je suis un titre</h1>
<p>Avec une description classique,<br>sur plusieurs lignes !</p>
<p>Et je peux mettre du texte en <b>gras</b>,<br>en <em>italique</em> et les <b><em>deux en même temps</em></b> !</p>
<div class="quote"><blockquote>Je suis une magnifique citation sur plusieurs lignes</blockquote><p>avec une source</p></div>
<div class="quote"><blockquote>qui recommence après !</blockquote><p>qui a elle aussi une source :D</p></div>
<div data-kind="note" class="callout"><h4>Hey :3</h4><div><p>Hehe</p><p>That's cool</p></div></div>
<ul><li>Ceci est une liste</li><li>pas ordonnée</li></ul>
<ol><li>et maintenant</li><li>elle l'est</li></ol>
<ul><li>hehe</li></ul>
<figure>
<img alt="Ceci est ma pfp :3" src="https://cdn.anhgelus.world/pfp.jpg">
<figcaption><a href="https://now.anhgelus.world/" target="_blank" rel="noreferer">Ma pfp</a> hehe :D Elle est <b>magnifique</b>, n'est-ce pas ?</figcaption>
</figure>
`
func test(input, expected string) func(*testing.T) {
return testWithOptions(nil, input, expected)
}
func testWithOptions(opt *Option, input, expected string) func(*testing.T) {
return func(t *testing.T) {
t.Parallel()
got, err := Parse(input, opt)
if err != nil {
t.Fatal(err.Pretty())
}
if string(got) != expected {
t.Errorf("invalid value, got %s", got)
}
}
}
func TestAst(t *testing.T) {
t.Run("ast", func(t *testing.T) {
t.Run("complete", test(raw, strings.ReplaceAll(parsed, "\n", "")))
t.Run("poem", testWithOptions(&Option{Poem: true}, raw, strings.ReplaceAll(parsedPoem, "\n", "")))
})
}
|