Mercurial > irccd
annotate doc/html/html.lua @ 746:fe3d80412701
Irccd: load config in irccd-test
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 03 Aug 2018 12:15:00 +0200 |
parents | 27587ff92a64 |
children |
rev | line source |
---|---|
607
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 -- |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 -- html.lua -- irccd HTML writer |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 -- |
628
27587ff92a64
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
607
diff
changeset
|
4 -- Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
607
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 -- |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 -- Permission to use, copy, modify, and/or distribute this software for any |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 -- purpose with or without fee is hereby granted, provided that the above |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 -- copyright notice and this permission notice appear in all copies. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 -- |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 -- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 -- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 -- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 -- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 -- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 -- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 -- |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 local function escape(s, in_attribute) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 return s:gsub("[<>&\"']", |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 function(x) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 if x == '<' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 return '<' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 elseif x == '>' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 return '>' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 elseif x == '&' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 return '&' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 elseif x == '"' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 return '"' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 elseif x == "'" then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 return ''' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 else |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 return x |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 end) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 local function attributes(attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 local attr_table = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 for x,y in pairs(attr) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 if y and y ~= "" then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 table.insert(attr_table, ' ' .. x .. '="' .. escape(y,true) .. '"') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 return table.concat(attr_table) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 local function html_align(align) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 if align == 'AlignLeft' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 return 'left' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 elseif align == 'AlignRight' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 return 'right' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 elseif align == 'AlignCenter' then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 return 'center' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 else |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 return 'left' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 local notes = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 function Blocksep() |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 return "\n\n" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 function Doc(body, metadata, variables) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 for k, v in pairs(metadata) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 print(k .. " = " .. tostring(v)) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 local buffer = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 local function add(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 table.insert(buffer, s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 add(body) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 if #notes > 0 then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 add('<ol class="footnotes">') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 for _,note in pairs(notes) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 add(note) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 add('</ol>') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 return table.concat(buffer,'\n') .. '\n' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 function Str(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 return escape(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 function Space() |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 return " " |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 function SoftBreak() |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 return "\n" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 function LineBreak() |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 return "<br/>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 function Emph(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 return "<em>" .. s .. "</em>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 function Strong(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 return "<strong>" .. s .. "</strong>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 function Subscript(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 return "<sub>" .. s .. "</sub>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 function Superscript(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 return "<sup>" .. s .. "</sup>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 function SmallCaps(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 return '<span style="font-variant: small-caps;">' .. s .. '</span>' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 function Strikeout(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 return '<del>' .. s .. '</del>' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 function Link(s, src, tit, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 return "<a href='" .. escape(src,true) .. "' title='" .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 escape(tit,true) .. "'>" .. s .. "</a>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 function Image(s, src, tit, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 return "<img src='" .. escape(src,true) .. "' title='" .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 escape(tit,true) .. "'/>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 function Code(s, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 return "<code" .. attributes(attr) .. ">" .. escape(s) .. "</code>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 function InlineMath(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 return "\\(" .. escape(s) .. "\\)" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 function DisplayMath(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 return "\\[" .. escape(s) .. "\\]" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 function Note(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 local num = #notes + 1 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 -- insert the back reference right before the final closing tag. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 s = string.gsub(s, |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 '(.*)</', '%1 <a href="#fnref' .. num .. '">↩</a></') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 -- add a list item with the note to the note table. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 table.insert(notes, '<li id="fn' .. num .. '">' .. s .. '</li>') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 -- return the footnote reference, linked to the note. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 return '<a id="fnref' .. num .. '" href="#fn' .. num .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 '"><sup>' .. num .. '</sup></a>' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 function Span(s, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 return "<span" .. attributes(attr) .. ">" .. s .. "</span>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 function RawInline(format, str) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 if format == "html" then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 return str |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 else |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 return '' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 function Cite(s, cs) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 local ids = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 for _,cit in ipairs(cs) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 table.insert(ids, cit.citationId) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
180 return "<span class=\"cite\" data-citation-ids=\"" .. table.concat(ids, ",") .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 "\">" .. s .. "</span>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
182 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
183 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
184 function Plain(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
185 return s |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
186 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 function Para(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 return "<p>" .. s .. "</p>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
190 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
191 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
192 function Header(lev, s, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
193 return "<h" .. lev .. attributes(attr) .. ">" .. s .. "</h" .. lev .. ">" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
194 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
195 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
196 function BlockQuote(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
197 return "<blockquote>\n" .. s .. "\n</blockquote>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 function HorizontalRule() |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 return "<hr/>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
204 function LineBlock(ls) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 return '<div style="white-space: pre-line;">' .. table.concat(ls, '\n') .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 '</div>' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
209 function CodeBlock(s, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 return "<pre><code" .. attributes(attr) .. ">" .. escape(s) .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 "</code></pre>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
213 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 function BulletList(items) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 local buffer = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 for _, item in pairs(items) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 table.insert(buffer, "<li>" .. item .. "</li>") |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
218 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 return "<ul>\n" .. table.concat(buffer, "\n") .. "\n</ul>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
220 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 function OrderedList(items) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 local buffer = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 for _, item in pairs(items) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 table.insert(buffer, "<li>" .. item .. "</li>") |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 return "<ol>\n" .. table.concat(buffer, "\n") .. "\n</ol>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
228 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 -- Revisit association list STackValue instance. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 function DefinitionList(items) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 local buffer = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 for _,item in pairs(items) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
234 for k, v in pairs(item) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
235 table.insert(buffer,"<dt>" .. k .. "</dt>\n<dd>" .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
236 table.concat(v,"</dd>\n<dd>") .. "</dd>") |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
237 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
238 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
239 return "<dl>\n" .. table.concat(buffer, "\n") .. "\n</dl>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
240 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
241 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
242 function CaptionedImage(src, tit, caption, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
243 return '<div class="figure">\n<img src="' .. escape(src,true) .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 '" title="' .. escape(tit,true) .. '"/>\n' .. |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 '<p class="caption">' .. caption .. '</p>\n</div>' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
247 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
248 function Table(caption, aligns, widths, headers, rows) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
249 local buffer = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
250 local function add(s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
251 table.insert(buffer, s) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
252 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
253 add("<table>") |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
254 if caption ~= "" then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
255 add("<caption>" .. caption .. "</caption>") |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
256 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
257 if widths and widths[1] ~= 0 then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
258 for _, w in pairs(widths) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
259 add('<col width="' .. string.format("%d%%", w * 100) .. '" />') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
260 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
261 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
262 local header_row = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
263 local empty_header = true |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
264 for i, h in pairs(headers) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
265 local align = html_align(aligns[i]) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
266 table.insert(header_row,'<th align="' .. align .. '">' .. h .. '</th>') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
267 empty_header = empty_header and h == "" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
268 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
269 if empty_header then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
270 head = "" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
271 else |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
272 add('<tr class="header">') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
273 for _,h in pairs(header_row) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
274 add(h) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
275 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
276 add('</tr>') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
277 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
278 local class = "even" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
279 for _, row in pairs(rows) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
280 class = (class == "even" and "odd") or "even" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
281 add('<tr class="' .. class .. '">') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
282 for i,c in pairs(row) do |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
283 add('<td align="' .. html_align(aligns[i]) .. '">' .. c .. '</td>') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
284 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
285 add('</tr>') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
286 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
287 add('</table') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
288 return table.concat(buffer,'\n') |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
289 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
290 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
291 function RawBlock(format, str) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
292 if format == "html" then |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
293 return str |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
294 else |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
295 return '' |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
296 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
297 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
298 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
299 function Div(s, attr) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
300 return "<div" .. attributes(attr) .. ">\n" .. s .. "</div>" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
301 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
302 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
303 local meta = {} |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
304 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
305 function meta.__index(_, key) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
306 io.stderr:write(string.format("WARNING: Undefined function '%s'\n",key)) |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
307 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
308 return function () |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
309 return "" |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
310 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
311 end |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
312 |
bb9771fb5f44
Docs: rework documentation
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
313 setmetatable(_G, meta) |