metanorma-standoc 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.adoc +4 -0
- data/lib/asciidoctor/standoc/blocks.rb +1 -0
- data/lib/asciidoctor/standoc/section.rb +26 -8
- data/lib/asciidoctor/standoc/validate_section.rb +1 -1
- data/lib/metanorma/standoc/version.rb +1 -1
- data/spec/asciidoctor-standoc/blocks_spec.rb +69 -14
- data/spec/asciidoctor-standoc/section_spec.rb +102 -59
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5a2ad92a10730612ba26466f6508a0359c4a12ecd7f973618f0b01d80a83b83
|
4
|
+
data.tar.gz: 395911c6e85240c42682d2a14e310162dd19fbe4a863478d0c90067e32aa6650
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17a60dd786a93b4982d2c9408b3308af6b9b31bb852aae30143da11a62c8a35715a77cdbba3bc899445987e646a4a7550ab6942662522c744fb38e76661f9d0e
|
7
|
+
data.tar.gz: 121aa21c43db0262c907b54b0e03f033a319f54756a7dbaca9d0da94fbd3fe85700d576327ab3d581329c4d6a606a2d76f0fefd6ad949db3fc10bad6116f2b05
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
metanorma-standoc (1.1.
|
4
|
+
metanorma-standoc (1.1.3)
|
5
5
|
asciidoctor (~> 1.5.7)
|
6
6
|
concurrent-ruby
|
7
7
|
html2doc (~> 0.8.0)
|
@@ -16,7 +16,7 @@ GEM
|
|
16
16
|
specs:
|
17
17
|
addressable (2.6.0)
|
18
18
|
public_suffix (>= 2.0.2, < 4.0)
|
19
|
-
algoliasearch (1.
|
19
|
+
algoliasearch (1.26.0)
|
20
20
|
httpclient (~> 2.8, >= 2.8.3)
|
21
21
|
json (>= 1.5.1)
|
22
22
|
asciidoctor (1.5.8)
|
@@ -81,7 +81,7 @@ GEM
|
|
81
81
|
algoliasearch
|
82
82
|
iecbib (~> 0.2.1)
|
83
83
|
iso-bib-item (~> 0.4.2)
|
84
|
-
isodoc (0.9.
|
84
|
+
isodoc (0.9.17)
|
85
85
|
asciimath
|
86
86
|
html2doc (~> 0.8.6)
|
87
87
|
htmlentities (~> 4.3.4)
|
data/README.adoc
CHANGED
@@ -373,6 +373,10 @@ The following terms have non-normative effect, and should be ignored by the amet
|
|
373
373
|
metrical foot consisting of a short, a long, and a short
|
374
374
|
--
|
375
375
|
|
376
|
+
Any clause within a Terms & Definitions section which is a nonterminal subclause (has
|
377
|
+
child nodes) is automatically itself a terms (or definitions) section. On the other hand,
|
378
|
+
any descendant of a nonterm clause is also a nonterm clause.
|
379
|
+
|
376
380
|
=== Cross-references to external documents
|
377
381
|
|
378
382
|
Metanorma Asciidoctor, like normal Asciidoctor, will process cross-references to
|
@@ -21,7 +21,8 @@ module Asciidoctor
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def sectiontype(node)
|
24
|
-
ret = node&.attr("heading")&.downcase ||
|
24
|
+
ret = node&.attr("heading")&.downcase ||
|
25
|
+
node.title.gsub(/<[^>]+>/, "").downcase
|
25
26
|
return ret if ["symbols and abbreviated terms", "abbreviations",
|
26
27
|
"abbreviated terms", "symbols"].include? ret
|
27
28
|
return nil unless node.level == 1
|
@@ -53,8 +54,9 @@ module Asciidoctor
|
|
53
54
|
when "bibliography" then bibliography_parse(a, xml, node)
|
54
55
|
else
|
55
56
|
if @term_def then term_def_subclause_parse(a, xml, node)
|
57
|
+
elsif @definitions then symbols_parse(a, xml, node)
|
56
58
|
elsif @biblio then bibliography_parse(a, xml, node)
|
57
|
-
elsif node.attr("style") == "bibliography"
|
59
|
+
elsif node.attr("style") == "bibliography"
|
58
60
|
bibliography_parse(a, xml, node)
|
59
61
|
elsif node.attr("style") == "abstract"
|
60
62
|
abstract_parse(a, xml, node)
|
@@ -114,24 +116,40 @@ module Asciidoctor
|
|
114
116
|
@biblio = false
|
115
117
|
end
|
116
118
|
|
119
|
+
def nonterm_symbols_parse(attrs, xml, node)
|
120
|
+
@definitions = false
|
121
|
+
clause_parse(attrs, xml, node)
|
122
|
+
@definitions = true
|
123
|
+
end
|
124
|
+
|
117
125
|
def symbols_parse(attrs, xml, node)
|
126
|
+
node.role == "nonterm" and return nonterm_symbols_parse(attrs, xml, node)
|
118
127
|
xml.definitions **attr_code(attrs) do |xml_section|
|
119
128
|
xml_section.title { |t| t << node.title }
|
129
|
+
defs = @definitions
|
130
|
+
termdefs = @term_def
|
131
|
+
@definitions = true
|
132
|
+
@term_def = false
|
120
133
|
xml_section << node.content
|
134
|
+
@definitions = defs
|
135
|
+
@term_def = termdefs
|
121
136
|
end
|
122
137
|
end
|
123
138
|
|
124
139
|
SYMBOLS_TITLES = ["symbols and abbreviated terms", "symbols",
|
125
140
|
"abbreviated terms"].freeze
|
126
141
|
|
142
|
+
def nonterm_term_def_subclause_parse(attrs, xml, node)
|
143
|
+
@term_def = false
|
144
|
+
clause_parse(attrs, xml, node)
|
145
|
+
@term_def = true
|
146
|
+
end
|
147
|
+
|
127
148
|
# subclause contains subclauses
|
128
149
|
def term_def_subclause_parse(attrs, xml, node)
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
@term_def = true
|
133
|
-
return
|
134
|
-
end
|
150
|
+
node.role == "nonterm" and
|
151
|
+
return nonterm_term_def_subclause_parse(attrs, xml, node)
|
152
|
+
return symbols_parse(attrs, xml, node) if @definitions
|
135
153
|
sub = node.find_by(context: :section) { |s| s.level == node.level + 1 }
|
136
154
|
sub.empty? || (return term_def_parse(attrs, xml, node, false))
|
137
155
|
SYMBOLS_TITLES.include?(node.title.downcase) and
|
@@ -26,7 +26,7 @@ module Asciidoctor
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def asset_title_style(root)
|
29
|
-
root.xpath("//figure[image][not(
|
29
|
+
root.xpath("//figure[image][not(name)]").each do |node|
|
30
30
|
style_warning(node, "Figure should have title", nil)
|
31
31
|
end
|
32
32
|
root.xpath("//table[not(name)]").each do |node|
|
@@ -180,6 +180,34 @@ RSpec.describe Asciidoctor::Standoc do
|
|
180
180
|
</clause>
|
181
181
|
</terms>
|
182
182
|
</sections>
|
183
|
+
</standard-document>
|
184
|
+
|
185
|
+
OUTPUT
|
186
|
+
end
|
187
|
+
|
188
|
+
it "processes term notes as plain notes in definitions subclauses of terms & definitions" do
|
189
|
+
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
190
|
+
#{ASCIIDOC_BLANK_HDR}
|
191
|
+
== Terms and Definitions
|
192
|
+
|
193
|
+
=== Term1
|
194
|
+
|
195
|
+
=== Symbols
|
196
|
+
|
197
|
+
NOTE: This is a note
|
198
|
+
INPUT
|
199
|
+
#{BLANK_HDR}
|
200
|
+
<sections>
|
201
|
+
<terms id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><term id="_">
|
202
|
+
<preferred>Term1</preferred>
|
203
|
+
</term>
|
204
|
+
<definitions id="_">
|
205
|
+
<title>Symbols</title>
|
206
|
+
<note id="_">
|
207
|
+
<p id="_">This is a note</p>
|
208
|
+
</note>
|
209
|
+
</definitions></terms>
|
210
|
+
</sections>
|
183
211
|
</standard-document>
|
184
212
|
|
185
213
|
OUTPUT
|
@@ -253,7 +281,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
253
281
|
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
254
282
|
#{ASCIIDOC_BLANK_HDR}
|
255
283
|
[CAUTION,type=Safety Precautions]
|
256
|
-
.
|
284
|
+
.Precautions
|
257
285
|
====
|
258
286
|
While werewolves are hardy community members, keep in mind the following dietary concerns:
|
259
287
|
|
@@ -264,7 +292,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
264
292
|
INPUT
|
265
293
|
#{BLANK_HDR}
|
266
294
|
<sections>
|
267
|
-
<admonition id="_" type="safety precautions"><p id="_">While werewolves are hardy community members, keep in mind the following dietary concerns:</p>
|
295
|
+
<admonition id="_" type="safety precautions"><name>Precautions</name><p id="_">While werewolves are hardy community members, keep in mind the following dietary concerns:</p>
|
268
296
|
<ol id="_" type="arabic">
|
269
297
|
<li>
|
270
298
|
<p id="_">They are allergic to cinnamon.</p>
|
@@ -293,19 +321,18 @@ RSpec.describe Asciidoctor::Standoc do
|
|
293
321
|
This is an example
|
294
322
|
INPUT
|
295
323
|
#{BLANK_HDR}
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
<termexample id="_">
|
302
|
-
<p id="_">This is an example</p>
|
303
|
-
</termexample>
|
304
|
-
</term>
|
305
|
-
</terms>
|
306
|
-
</sections>
|
307
|
-
</standard-document>
|
324
|
+
<sections>
|
325
|
+
<terms id="_" obligation="normative">
|
326
|
+
<title>Terms and definitions</title>
|
327
|
+
<term id="_">
|
328
|
+
<preferred>Term1</preferred>
|
308
329
|
|
330
|
+
<termexample id="_">
|
331
|
+
<p id="_">This is an example</p>
|
332
|
+
</termexample></term>
|
333
|
+
</terms>
|
334
|
+
</sections>
|
335
|
+
</standard-document>
|
309
336
|
OUTPUT
|
310
337
|
end
|
311
338
|
|
@@ -336,6 +363,34 @@ RSpec.describe Asciidoctor::Standoc do
|
|
336
363
|
OUTPUT
|
337
364
|
end
|
338
365
|
|
366
|
+
it "processes term examples as plain examples in definitions subclauses of terms & definitions" do
|
367
|
+
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
368
|
+
#{ASCIIDOC_BLANK_HDR}
|
369
|
+
== Terms and Definitions
|
370
|
+
|
371
|
+
=== Term1
|
372
|
+
|
373
|
+
=== Symbols
|
374
|
+
|
375
|
+
[example]
|
376
|
+
This is an example
|
377
|
+
INPUT
|
378
|
+
#{BLANK_HDR}
|
379
|
+
<sections>
|
380
|
+
<terms id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><term id="_">
|
381
|
+
<preferred>Term1</preferred>
|
382
|
+
</term>
|
383
|
+
<definitions id="_">
|
384
|
+
<title>Symbols</title>
|
385
|
+
<example id="_">
|
386
|
+
<p id="_">This is an example</p>
|
387
|
+
</example>
|
388
|
+
</definitions></terms>
|
389
|
+
</sections>
|
390
|
+
</standard-document>
|
391
|
+
OUTPUT
|
392
|
+
end
|
393
|
+
|
339
394
|
|
340
395
|
it "processes examples" do
|
341
396
|
expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
|
@@ -32,12 +32,30 @@ RSpec.describe Asciidoctor::Standoc do
|
|
32
32
|
[.nonterm]
|
33
33
|
=== Introduction
|
34
34
|
|
35
|
+
==== Intro 1
|
36
|
+
|
37
|
+
=== Intro 2
|
38
|
+
|
39
|
+
[.nonterm]
|
40
|
+
==== Intro 3
|
41
|
+
|
42
|
+
=== Intro 4
|
43
|
+
|
44
|
+
==== Intro 5
|
45
|
+
|
46
|
+
===== Term1
|
47
|
+
|
35
48
|
=== Normal Terms
|
36
49
|
|
37
50
|
==== Term2
|
38
51
|
|
39
52
|
=== Symbols and Abbreviated Terms
|
40
53
|
|
54
|
+
[.nonterm]
|
55
|
+
==== General
|
56
|
+
|
57
|
+
==== Symbols 1
|
58
|
+
|
41
59
|
== Abbreviated Terms
|
42
60
|
|
43
61
|
== Clause 4
|
@@ -57,65 +75,90 @@ RSpec.describe Asciidoctor::Standoc do
|
|
57
75
|
|
58
76
|
=== Bibliography Subsection
|
59
77
|
INPUT
|
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
|
-
|
78
|
+
<preface><abstract id="_">
|
79
|
+
<p id="_">Text</p>
|
80
|
+
</abstract><foreword obligation="informative">
|
81
|
+
<title>Foreword</title>
|
82
|
+
<p id="_">Text</p>
|
83
|
+
</foreword><introduction id="_" obligation="informative">
|
84
|
+
<title>Introduction</title>
|
85
|
+
<clause id="_" inline-header="false" obligation="informative">
|
86
|
+
<title>Introduction Subsection</title>
|
87
|
+
</clause>
|
88
|
+
</introduction></preface><sections>
|
89
|
+
|
90
|
+
|
91
|
+
<clause id="_" inline-header="false" obligation="normative">
|
92
|
+
<title>Scope</title>
|
93
|
+
<p id="_">Text</p>
|
94
|
+
</clause>
|
95
|
+
|
96
|
+
<terms id="_" obligation="normative">
|
97
|
+
<title>Terms and definitions</title>
|
98
|
+
<term id="_">
|
99
|
+
<preferred>Term1</preferred>
|
100
|
+
</term>
|
101
|
+
</terms>
|
102
|
+
<clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><clause id="_" inline-header="false" obligation="normative">
|
103
|
+
<title>Introduction</title>
|
104
|
+
<clause id="_" inline-header="false" obligation="normative">
|
105
|
+
<title>Intro 1</title>
|
106
|
+
</clause>
|
107
|
+
</clause>
|
108
|
+
<terms id="_" obligation="normative">
|
109
|
+
<title>Intro 2</title>
|
110
|
+
<clause id="_" inline-header="false" obligation="normative">
|
111
|
+
<title>Intro 3</title>
|
112
|
+
</clause>
|
113
|
+
</terms>
|
114
|
+
<clause id="_" obligation="normative">
|
115
|
+
<title>Intro 4</title>
|
116
|
+
<terms id="_" obligation="normative">
|
117
|
+
<title>Intro 5</title>
|
118
|
+
<term id="_">
|
119
|
+
<preferred>Term1</preferred>
|
120
|
+
</term>
|
121
|
+
</terms>
|
122
|
+
</clause>
|
123
|
+
<terms id="_" obligation="normative">
|
124
|
+
<title>Normal Terms</title>
|
125
|
+
<term id="_">
|
126
|
+
<preferred>Term2</preferred>
|
127
|
+
</term>
|
128
|
+
</terms>
|
129
|
+
<definitions id="_"><title>Symbols and Abbreviated Terms</title><clause id="_" inline-header="false" obligation="normative">
|
130
|
+
<title>General</title>
|
131
|
+
</clause>
|
132
|
+
<definitions id="_">
|
133
|
+
<title>Symbols 1</title>
|
134
|
+
</definitions></definitions></clause>
|
135
|
+
<definitions id="_">
|
136
|
+
<title>Abbreviated Terms</title>
|
137
|
+
</definitions>
|
138
|
+
<clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="_" inline-header="false" obligation="normative">
|
139
|
+
<title>Introduction</title>
|
140
|
+
</clause>
|
141
|
+
<clause id="_" inline-header="false" obligation="normative">
|
142
|
+
<title>Clause 4.2</title>
|
143
|
+
</clause></clause>
|
144
|
+
<clause id="_" inline-header="false" obligation="normative">
|
145
|
+
<title>Terms and Definitions</title>
|
146
|
+
</clause>
|
147
|
+
|
148
|
+
</sections><annex id="_" inline-header="false" obligation="normative">
|
149
|
+
<title>Annex</title>
|
150
|
+
<clause id="_" inline-header="false" obligation="normative">
|
151
|
+
<title>Annex A.1</title>
|
152
|
+
</clause>
|
153
|
+
</annex><bibliography><references id="_" obligation="informative">
|
154
|
+
<title>Normative References</title>
|
155
|
+
</references><clause id="_" obligation="informative">
|
156
|
+
<title>Bibliography</title>
|
157
|
+
<references id="_" obligation="informative">
|
158
|
+
<title>Bibliography Subsection</title>
|
159
|
+
</references>
|
160
|
+
</clause></bibliography>
|
161
|
+
</standard-document>
|
119
162
|
OUTPUT
|
120
163
|
end
|
121
164
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-standoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|