/
html_renderer.cr
122 lines (95 loc) · 1.56 KB
/
html_renderer.cr
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
require "./renderer"
class Markdown::HTMLRenderer
include Renderer
def initialize(@io : IO)
end
def begin_paragraph
@io << "<p>"
end
def end_paragraph
@io << "</p>"
end
def begin_italic
@io << "<em>"
end
def end_italic
@io << "</em>"
end
def begin_bold
@io << "<strong>"
end
def end_bold
@io << "</strong>"
end
def begin_header(level)
@io << "<h"
@io << level
@io << '>'
end
def end_header(level)
@io << "</h"
@io << level
@io << '>'
end
def begin_inline_code
@io << "<code>"
end
def end_inline_code
@io << "</code>"
end
def begin_code(language)
if language.nil?
@io << "<pre><code>"
else
@io << "<pre><code class='language-#{language}'>"
end
end
def end_code
@io << "</code></pre>"
end
def begin_quote
@io << "<blockquote>"
end
def end_quote
@io << "</blockquote>"
end
def begin_unordered_list
@io << "<ul>"
end
def end_unordered_list
@io << "</ul>"
end
def begin_ordered_list
@io << "<ol>"
end
def end_ordered_list
@io << "</ol>"
end
def begin_list_item
@io << "<li>"
end
def end_list_item
@io << "</li>"
end
def begin_link(url)
@io << %(<a href=")
@io << url
@io << %(">)
end
def end_link
@io << "</a>"
end
def image(url, alt)
@io << %(<img src=")
@io << url
@io << %(" alt=")
@io << alt
@io << %("/>)
end
def text(text)
@io << text.gsub('<', "<")
end
def horizontal_rule
@io << "<hr/>"
end
end