asciidoctor-iso 0.0.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +2 -0
- data/.gitignore +1 -0
- data/.hound.yml +3 -0
- data/.rubocop.ribose.yml +65 -0
- data/.rubocop.tb.yml +640 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +162 -0
- data/Makefile +39 -0
- data/README.adoc +396 -59
- data/Rakefile +6 -0
- data/asciidoctor-iso.gemspec +11 -3
- data/lib/asciidoctor/iso/base.rb +122 -51
- data/lib/asciidoctor/iso/blocks.rb +119 -108
- data/lib/asciidoctor/iso/cleanup.rb +214 -0
- data/lib/asciidoctor/iso/cleanup_block.rb +157 -0
- data/lib/asciidoctor/iso/converter.rb +5 -3
- data/lib/asciidoctor/iso/front.rb +37 -28
- data/lib/asciidoctor/iso/html/header.html +184 -0
- data/lib/asciidoctor/iso/html/html_iso_intro.html +73 -0
- data/lib/asciidoctor/iso/html/html_iso_titlepage.html +31 -0
- data/lib/asciidoctor/iso/html/htmlstyle.css +67 -0
- data/lib/asciidoctor/iso/html/isodoc.css +679 -0
- data/lib/asciidoctor/iso/html/word_iso_intro.html +72 -0
- data/lib/asciidoctor/iso/html/word_iso_titlepage.html +58 -0
- data/lib/asciidoctor/iso/inline_anchor.rb +20 -26
- data/lib/asciidoctor/iso/isostandard.rnc +177 -0
- data/lib/asciidoctor/iso/isostandard.rng +1478 -0
- data/lib/asciidoctor/iso/isostandard_diff.rnc +295 -0
- data/lib/asciidoctor/iso/lists.rb +152 -109
- data/lib/asciidoctor/iso/section.rb +164 -0
- data/lib/asciidoctor/iso/table.rb +30 -27
- data/lib/asciidoctor/iso/utils.rb +61 -183
- data/lib/asciidoctor/iso/validate.make.sh +8 -0
- data/lib/asciidoctor/iso/validate.rb +195 -24
- data/lib/asciidoctor/iso/validate_style.rb +175 -0
- data/lib/asciidoctor/iso/version.rb +1 -1
- data/spec/examples/rice.adoc +45 -24
- data/spec/examples/rice.doc +17708 -0
- data/spec/examples/rice.html +1574 -1662
- data/spec/examples/rice.preview.html +1811 -0
- data/spec/examples/rice.sh +4 -0
- data/spec/examples/rice.xml +888 -62
- data/spec/examples/rice_images/rice_image1.png +0 -0
- data/spec/examples/rice_images/rice_image2.png +0 -0
- data/spec/examples/rice_images/rice_image3_1.png +0 -0
- data/spec/examples/rice_images/rice_image3_2.png +0 -0
- data/spec/examples/rice_images/rice_image3_3.png +0 -0
- metadata +135 -12
- data/grammar1.gif +0 -0
- data/grammar2.gif +0 -0
- data/grammar3.gif +0 -0
- data/grammar4.gif +0 -0
- data/lib/asciidoctor/iso/validate.rnc +0 -444
- data/lib/asciidoctor/iso/validate.rng +0 -1001
@@ -0,0 +1,295 @@
|
|
1
|
+
default namespace = "http://riboseinc.com/isoxml"
|
2
|
+
|
3
|
+
# grammar {
|
4
|
+
|
5
|
+
start = iso-standard
|
6
|
+
|
7
|
+
iso-standard =
|
8
|
+
element iso-standard {
|
9
|
+
title+,
|
10
|
+
status,
|
11
|
+
creator,
|
12
|
+
language,
|
13
|
+
script,
|
14
|
+
type,
|
15
|
+
id,
|
16
|
+
version?,
|
17
|
+
copyright,
|
18
|
+
sections
|
19
|
+
}
|
20
|
+
|
21
|
+
language =
|
22
|
+
element language { ( "en" | "fr" ) }
|
23
|
+
|
24
|
+
script =
|
25
|
+
element script { "latn" }
|
26
|
+
|
27
|
+
# draft into isodoc? To replace version/version?
|
28
|
+
version =
|
29
|
+
element version {
|
30
|
+
edition?,
|
31
|
+
revision-date?,
|
32
|
+
draft?
|
33
|
+
}
|
34
|
+
|
35
|
+
draft = element draft {text}
|
36
|
+
|
37
|
+
copyright =
|
38
|
+
element copyright {
|
39
|
+
from, owner
|
40
|
+
}
|
41
|
+
|
42
|
+
owner =
|
43
|
+
element owner {
|
44
|
+
owner-affiliation
|
45
|
+
}
|
46
|
+
|
47
|
+
owner-affiliation = element affiliation { "ISO" }
|
48
|
+
|
49
|
+
id =
|
50
|
+
element id {
|
51
|
+
documentnumber,
|
52
|
+
tc-documentnumber?
|
53
|
+
}
|
54
|
+
|
55
|
+
creator =
|
56
|
+
element creator {
|
57
|
+
attribute role { text },
|
58
|
+
technical-committee,
|
59
|
+
subcommittee?,
|
60
|
+
workgroup?,
|
61
|
+
secretariat?
|
62
|
+
}
|
63
|
+
|
64
|
+
type =
|
65
|
+
element type {
|
66
|
+
( "international-standard" | "technical-specification" |
|
67
|
+
"technical-report" | "publicly-available-specification" |
|
68
|
+
"international-workshop-agreement" | "guide" )
|
69
|
+
}
|
70
|
+
|
71
|
+
status =
|
72
|
+
element status {
|
73
|
+
stage,
|
74
|
+
substage?
|
75
|
+
}
|
76
|
+
|
77
|
+
stage =
|
78
|
+
element stage {
|
79
|
+
("00" | "10" | "20" | "30" | "40" | "50" | "60" | "90" | "95" )
|
80
|
+
}
|
81
|
+
|
82
|
+
substage =
|
83
|
+
element substage {
|
84
|
+
("00" | "20" | "60" | "90" | "92" | "93" | "98" | "99" )
|
85
|
+
}
|
86
|
+
|
87
|
+
documentnumber =
|
88
|
+
element project-number {
|
89
|
+
attribute part { xsd:int }?,
|
90
|
+
xsd:int
|
91
|
+
}
|
92
|
+
|
93
|
+
tc-documentnumber =
|
94
|
+
element tc-document-number {
|
95
|
+
xsd:int
|
96
|
+
}
|
97
|
+
|
98
|
+
technical-committee =
|
99
|
+
element technical-committee {
|
100
|
+
attribute number { xsd:int }?,
|
101
|
+
text
|
102
|
+
}
|
103
|
+
|
104
|
+
subcommittee =
|
105
|
+
element subcommittee {
|
106
|
+
attribute number { xsd:int }?,
|
107
|
+
text
|
108
|
+
}
|
109
|
+
|
110
|
+
workgroup =
|
111
|
+
element workgroup {
|
112
|
+
attribute number { xsd:int }?,
|
113
|
+
text
|
114
|
+
}
|
115
|
+
|
116
|
+
secretariat =
|
117
|
+
element secretariat { text }
|
118
|
+
|
119
|
+
title =
|
120
|
+
element title {
|
121
|
+
attribute language { text },
|
122
|
+
title-intro?, title-main, title-part?
|
123
|
+
}
|
124
|
+
|
125
|
+
title-intro =
|
126
|
+
element title-intro { text }
|
127
|
+
|
128
|
+
title-main =
|
129
|
+
element title-main { text }
|
130
|
+
|
131
|
+
title-part =
|
132
|
+
element title-part { text }
|
133
|
+
|
134
|
+
sections =
|
135
|
+
element sections {
|
136
|
+
content, content?,
|
137
|
+
clause, references, terms, clause+,
|
138
|
+
annex*, references?
|
139
|
+
}
|
140
|
+
|
141
|
+
references =
|
142
|
+
element references {
|
143
|
+
attribute id { xsd:ID }?,
|
144
|
+
section-title?,
|
145
|
+
bibitem*,
|
146
|
+
references*
|
147
|
+
}
|
148
|
+
|
149
|
+
terms =
|
150
|
+
element terms {
|
151
|
+
attribute id { xsd:ID }?,
|
152
|
+
section-title?,
|
153
|
+
# boilerplate
|
154
|
+
paragraph-with-footnote*, ul?,
|
155
|
+
(term+ | terms? )
|
156
|
+
}
|
157
|
+
|
158
|
+
term =
|
159
|
+
element term {
|
160
|
+
attribute id { xsd:ID }?,
|
161
|
+
preferred, admitted*, deprecates*,
|
162
|
+
termdomain?, definition, termnote*, termexample*, termsource*
|
163
|
+
}
|
164
|
+
|
165
|
+
definition =
|
166
|
+
element definition {
|
167
|
+
( paragraph | figure | formula )+
|
168
|
+
}
|
169
|
+
|
170
|
+
origin =
|
171
|
+
element origin {
|
172
|
+
attribute citeas { text },
|
173
|
+
CitationType
|
174
|
+
}
|
175
|
+
|
176
|
+
clause-hanging-paragraph-with-footnote =
|
177
|
+
element subsection {
|
178
|
+
attribute id { xsd:ID }?,
|
179
|
+
attribute inline-header { xsd:boolean } ? ,
|
180
|
+
section-title?,
|
181
|
+
# allow hanging paragraphs in annexes: they introduce lists
|
182
|
+
BasicBlock*,
|
183
|
+
clause-hanging-paragraph-with-footnote*
|
184
|
+
}
|
185
|
+
|
186
|
+
annex =
|
187
|
+
element annex {
|
188
|
+
attribute id { xsd:ID }?,
|
189
|
+
attribute inline-header { xsd:boolean }?,
|
190
|
+
attribute subtype { "normative" | "informative" }?,
|
191
|
+
section-title?,
|
192
|
+
# allow hanging paragraps in annexes: they introduce lists
|
193
|
+
#( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | figure | quote | sourcecode | review | example )*,
|
194
|
+
BasicBlock*,
|
195
|
+
clause-hanging-paragraph-with-footnote*
|
196
|
+
}
|
197
|
+
|
198
|
+
figure =
|
199
|
+
element figure {
|
200
|
+
attribute id { xsd:ID },
|
201
|
+
tname?,
|
202
|
+
( image | figure+ ),
|
203
|
+
fn*,
|
204
|
+
dl?,
|
205
|
+
note*
|
206
|
+
}
|
207
|
+
|
208
|
+
li =
|
209
|
+
element li {
|
210
|
+
#( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | quote | sourcecode | review | example )+
|
211
|
+
BasicBlock+
|
212
|
+
# exclude figures?
|
213
|
+
}
|
214
|
+
|
215
|
+
dd =
|
216
|
+
element dd {
|
217
|
+
#( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | quote | sourcecode | review | example )*
|
218
|
+
# exclude figures?
|
219
|
+
BasicBlock
|
220
|
+
}
|
221
|
+
|
222
|
+
admonition =
|
223
|
+
element admonition {
|
224
|
+
attribute id { xsd:ID },
|
225
|
+
attribute type {
|
226
|
+
( "danger" | "caution" | "warning" | "important" | "safety precautions" )},
|
227
|
+
paragraph-with-footnote+
|
228
|
+
}
|
229
|
+
|
230
|
+
xref =
|
231
|
+
element xref {
|
232
|
+
attribute target { xsd:IDREF },
|
233
|
+
text
|
234
|
+
}
|
235
|
+
|
236
|
+
hyperlink =
|
237
|
+
element link {
|
238
|
+
attribute target {xsd:anyURI},
|
239
|
+
text
|
240
|
+
}
|
241
|
+
|
242
|
+
thead =
|
243
|
+
element thead { tr+ }
|
244
|
+
|
245
|
+
td =
|
246
|
+
element td {
|
247
|
+
attribute colspan { text }?,
|
248
|
+
attribute rowspan { text }?,
|
249
|
+
attribute align { "left" | "right" | "center" }?,
|
250
|
+
(
|
251
|
+
(TextElement | fn | review )* |
|
252
|
+
paragraph-with-footnote+
|
253
|
+
)
|
254
|
+
}
|
255
|
+
|
256
|
+
th =
|
257
|
+
element th {
|
258
|
+
attribute colspan { text }?,
|
259
|
+
attribute rowspan { text }?,
|
260
|
+
attribute align { "left" | "right" | "center" }?,
|
261
|
+
(
|
262
|
+
(TextElement | fn | review )* |
|
263
|
+
paragraph-with-footnote+
|
264
|
+
)
|
265
|
+
}
|
266
|
+
|
267
|
+
table-note = element note {
|
268
|
+
attribute id { xsd:ID }?,
|
269
|
+
paragraph
|
270
|
+
}
|
271
|
+
|
272
|
+
|
273
|
+
Clause-Section =
|
274
|
+
attribute id { xsd:ID }?,
|
275
|
+
attribute inline-header { xsd:boolean }?,
|
276
|
+
section-title?,
|
277
|
+
(
|
278
|
+
BasicBlock+ |
|
279
|
+
clause-subsection+
|
280
|
+
)
|
281
|
+
|
282
|
+
|
283
|
+
BibliographicItem =
|
284
|
+
attribute id { xsd:ID },
|
285
|
+
attribute type { "article" | "book" | "booklet" | "conference" | "manual" |
|
286
|
+
"proceedings" | "presentation" | "thesis" | "techreport" |
|
287
|
+
"standard" | "unpublished" }?,
|
288
|
+
(bname | formatted), source?, publishdate?, docidentifier*, accesseddate?, creator*,
|
289
|
+
publisher*, edition?,
|
290
|
+
biblionote*, partof*, creationdate?, language*, script*, abstract?
|
291
|
+
|
292
|
+
|
293
|
+
# }
|
294
|
+
|
295
|
+
|
@@ -2,156 +2,199 @@ require "pp"
|
|
2
2
|
module Asciidoctor
|
3
3
|
module ISO
|
4
4
|
module Lists
|
5
|
+
def li(xml_ul, item)
|
6
|
+
xml_ul.li do |xml_li|
|
7
|
+
style(item, item.text)
|
8
|
+
if item.blocks?
|
9
|
+
xml_li.p **id_attr(item) do |t|
|
10
|
+
t << item.text
|
11
|
+
end
|
12
|
+
xml_li << item.content
|
13
|
+
else
|
14
|
+
xml_li.p **id_attr(item) do |p|
|
15
|
+
p << item.text
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
5
21
|
def ulist(node)
|
6
|
-
return
|
7
|
-
return
|
22
|
+
return reference(node, true) if in_norm_ref
|
23
|
+
return reference(node, false) if in_biblio
|
8
24
|
noko do |xml|
|
9
|
-
xml.ul **
|
25
|
+
xml.ul **id_attr(node) do |xml_ul|
|
10
26
|
node.items.each do |item|
|
11
|
-
|
12
|
-
if item.blocks?
|
13
|
-
xml_li.p { |t| t << item.text }
|
14
|
-
xml_li << item.content
|
15
|
-
else
|
16
|
-
xml_li.p { |p| p << item.text }
|
17
|
-
end
|
18
|
-
end
|
27
|
+
li(xml_ul, item)
|
19
28
|
end
|
20
29
|
end
|
21
|
-
end.join
|
30
|
+
end.join("\n")
|
31
|
+
end
|
32
|
+
|
33
|
+
def iso_publisher(t)
|
34
|
+
t.publisher **{ role: "publisher" } do |p|
|
35
|
+
p.affiliation do |aff|
|
36
|
+
aff.name "ISO"
|
37
|
+
end
|
38
|
+
end
|
22
39
|
end
|
23
40
|
|
24
41
|
def isorefmatches(xml, matched)
|
25
|
-
ref_attributes = {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
t.
|
30
|
-
t
|
31
|
-
t.isotitle { |i| i << ref_normalise(matched[:text]) }
|
42
|
+
ref_attributes = { id: matched[:anchor], type: "standard" }
|
43
|
+
xml.bibitem **attr_code(ref_attributes) do |t|
|
44
|
+
t.name { |i| i << ref_normalise(matched[:text]) }
|
45
|
+
t.publishDate matched[:year] if matched[:year]
|
46
|
+
t.docidentifier matched[:code]
|
47
|
+
iso_publisher(t)
|
32
48
|
end
|
33
49
|
end
|
34
50
|
|
35
|
-
def isorefmatches2(xml,
|
36
|
-
ref_attributes = {
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
t.
|
41
|
-
t
|
42
|
-
t.
|
43
|
-
|
51
|
+
def isorefmatches2(xml, matched)
|
52
|
+
ref_attributes = { id: matched[:anchor], type: "standard" }
|
53
|
+
xml.bibitem **attr_code(ref_attributes) do |t|
|
54
|
+
t.name { |i| i << ref_normalise(matched[:text]) }
|
55
|
+
t.publishDate "--"
|
56
|
+
t.docidentifier matched[:code]
|
57
|
+
iso_publisher(t)
|
58
|
+
t.note { |p| p << "ISO DATE: #{matched[:fn]}" }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def isorefmatches3(xml, matched)
|
63
|
+
ref_attributes = { id: matched[:anchor], type: "standard" }
|
64
|
+
xml.bibitem **attr_code(ref_attributes) do |t|
|
65
|
+
t.name { |i| i << ref_normalise(matched[:text]) }
|
66
|
+
t.publishDate matched[:year] if matched[:year]
|
67
|
+
t.docidentifier "#{matched[:code]}:All Parts"
|
68
|
+
iso_publisher(t)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def refitem(xml, item, node)
|
73
|
+
m = NON_ISO_REF.match item
|
74
|
+
if m.nil? then Utils::warning(node, "no anchor on reference", item)
|
75
|
+
else
|
76
|
+
xml.bibitem **attr_code(id: m[:anchor]) do |t|
|
77
|
+
t.formatted { |i| i << ref_normalise_no_format(m[:text]) }
|
78
|
+
code = m[:code]
|
79
|
+
code = "[#{code}]" if /^\d+$?/.match? code
|
80
|
+
t.docidentifier code
|
81
|
+
end
|
44
82
|
end
|
45
83
|
end
|
46
84
|
|
47
85
|
def ref_normalise(ref)
|
48
|
-
ref.
|
86
|
+
ref.
|
87
|
+
# gsub(/ — /, " -- ").
|
88
|
+
gsub(/&amp;/, "&").
|
89
|
+
gsub(%r{^<em>(.*)</em>}, "\\1")
|
90
|
+
end
|
91
|
+
|
92
|
+
def ref_normalise_no_format(ref)
|
93
|
+
ref.
|
94
|
+
# gsub(/ — /, " -- ").
|
49
95
|
gsub(/&amp;/, "&")
|
50
96
|
end
|
51
97
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
98
|
+
ISO_REF = %r{^<ref\sid="(?<anchor>[^"]+)">
|
99
|
+
\[ISO\s(?<code>[0-9-]+)(:(?<year>[0-9]+))?\]</ref>,?\s
|
100
|
+
(?<text>.*)$}xm
|
101
|
+
|
102
|
+
ISO_REF_NO_YEAR = %r{^<ref\sid="(?<anchor>[^"]+)">
|
103
|
+
\[ISO\s(?<code>[0-9-]+):--\]</ref>,?\s?
|
104
|
+
<fn[^>]*>\s*<p>(?<fn>[^\]]+)</p>\s*</fn>,?\s?(?<text>.*)$}xm
|
105
|
+
|
106
|
+
ISO_REF_ALL_PARTS = %r{^<ref\sid="(?<anchor>[^"]+)">
|
107
|
+
\[ISO\s(?<code>[0-9]+)\s\(all\sparts\)\]</ref>(<p>)?,?\s?
|
108
|
+
(?<text>.*)(</p>)?$}xm
|
109
|
+
|
110
|
+
NON_ISO_REF = %r{^<ref\sid="(?<anchor>[^"]+)">
|
111
|
+
\[(?<code>[^\]]+)\]</ref>,?\s
|
112
|
+
(?<text>.*)$}xm
|
113
|
+
|
114
|
+
def reference1(node, item, xml, normative)
|
115
|
+
matched = ISO_REF.match item
|
116
|
+
matched2 = ISO_REF_NO_YEAR.match item
|
117
|
+
matched3 = ISO_REF_ALL_PARTS.match item
|
118
|
+
if matched3.nil? && matched2.nil? && matched.nil?
|
119
|
+
refitem(xml, item, node)
|
120
|
+
elsif !matched.nil? then isorefmatches(xml, matched)
|
121
|
+
elsif !matched2.nil? then isorefmatches2(xml, matched2)
|
122
|
+
elsif !matched3.nil? then isorefmatches3(xml, matched3)
|
123
|
+
end
|
124
|
+
if matched3.nil? && matched2.nil? && matched.nil? && normative
|
125
|
+
Utils::warning(node,
|
126
|
+
"non-ISO/IEC reference not expected as normative",
|
127
|
+
item)
|
128
|
+
end
|
72
129
|
end
|
73
130
|
|
74
|
-
def
|
131
|
+
def reference(node, normative)
|
75
132
|
noko do |xml|
|
76
133
|
node.items.each do |item|
|
77
|
-
|
78
|
-
\[ISO\s(?<code>[0-9-]+)(:(?<year>[0-9]+))?\]</ref>,?\s
|
79
|
-
(?<text>.*)$}.match item.text
|
80
|
-
matched2 = %r{^<ref\sanchor="(?<anchor>[^"]+)">
|
81
|
-
\[ISO\s(?<code>[0-9-]+):--\]</ref>,?\s?
|
82
|
-
<fn>(?<fn>[^\]]+)</fn>,?\s?(?<text>.*)$}.match item.text
|
83
|
-
if matched2.nil?
|
84
|
-
if matched.nil?
|
85
|
-
xml.reference do |t|
|
86
|
-
t.p { |p| p << ref_normalise(item.text) }
|
87
|
-
end
|
88
|
-
else
|
89
|
-
isorefmatches(xml, matched)
|
90
|
-
end
|
91
|
-
else
|
92
|
-
isorefmatches2(xml, matched2)
|
93
|
-
end
|
134
|
+
reference1(node, item.text, xml, normative)
|
94
135
|
end
|
95
|
-
end.join
|
136
|
+
end.join("\n")
|
137
|
+
end
|
138
|
+
|
139
|
+
def olist_style(style)
|
140
|
+
return "alphabet" if style == "loweralpha"
|
141
|
+
return "roman" if style == "lowerroman"
|
142
|
+
return "roman_upper" if style == "upperroman"
|
143
|
+
return "alphabet_upper" if style == "upperalpha"
|
144
|
+
return style
|
96
145
|
end
|
97
146
|
|
98
147
|
def olist(node)
|
99
148
|
noko do |xml|
|
100
|
-
xml.ol **attr_code(
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
149
|
+
xml.ol **attr_code(id: Utils::anchor_or_uuid(node),
|
150
|
+
type: olist_style(node.style)) do |xml_ol|
|
151
|
+
node.items.each { |item| li(xml_ol, item) }
|
152
|
+
end
|
153
|
+
end.join("\n")
|
154
|
+
end
|
155
|
+
|
156
|
+
def dt(terms, xml_dl)
|
157
|
+
terms.each_with_index do |dt, idx|
|
158
|
+
style(dt, dt.text)
|
159
|
+
xml_dl.dt { |xml_dt| xml_dt << dt.text }
|
160
|
+
if idx < terms.size - 1
|
161
|
+
xml_dl.dd
|
111
162
|
end
|
112
|
-
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def dd(dd, xml_dl)
|
167
|
+
if dd.nil?
|
168
|
+
xml_dl.dd
|
169
|
+
return
|
170
|
+
end
|
171
|
+
xml_dl.dd do |xml_dd|
|
172
|
+
style(dd, dd.text)
|
173
|
+
xml_dd.p { |t| t << dd.text } if dd.text?
|
174
|
+
xml_dd << dd.content if dd.blocks?
|
175
|
+
end
|
113
176
|
end
|
114
177
|
|
115
178
|
def dlist(node)
|
116
179
|
noko do |xml|
|
117
|
-
xml.dl **
|
180
|
+
xml.dl **id_attr(node) do |xml_dl|
|
118
181
|
node.items.each do |terms, dd|
|
119
|
-
terms
|
120
|
-
|
121
|
-
if idx < terms.size - 1
|
122
|
-
xml_dl.dd
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
if dd.nil?
|
127
|
-
xml_dl.dd
|
128
|
-
else
|
129
|
-
xml_dl.dd do |xml_dd|
|
130
|
-
if dd.blocks?
|
131
|
-
if dd.text?
|
132
|
-
xml_dd.p { |t| t << dd.text }
|
133
|
-
end
|
134
|
-
xml_dd << dd.content
|
135
|
-
else
|
136
|
-
xml_dd.p { |t| t << dd.text }
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
182
|
+
dt(terms, xml_dl)
|
183
|
+
dd(dd, xml_dl)
|
140
184
|
end
|
141
185
|
end
|
142
|
-
end.join
|
186
|
+
end.join("\n")
|
143
187
|
end
|
144
188
|
|
145
189
|
def colist(node)
|
146
190
|
noko do |xml|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
191
|
+
node.items.each_with_index do |item, i|
|
192
|
+
xml_ul.annotation **attr_code(id: i + 1) do |xml_li|
|
193
|
+
style(item, item.text)
|
194
|
+
xml_li.p { |p| p << item.text }
|
152
195
|
end
|
153
196
|
end
|
154
|
-
end.join
|
197
|
+
end.join("\n")
|
155
198
|
end
|
156
199
|
end
|
157
200
|
end
|