metanorma-iso 1.7.1 → 1.7.2
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/.rubocop.yml +0 -4
- data/lib/asciidoctor/iso/base.rb +12 -12
- data/lib/asciidoctor/iso/cleanup.rb +1 -1
- data/lib/asciidoctor/iso/isodoc.rng +19 -1
- data/lib/asciidoctor/iso/isostandard-amd.rng +3 -0
- data/lib/asciidoctor/iso/isostandard.rng +6 -0
- data/lib/metanorma/iso/version.rb +1 -1
- data/spec/asciidoctor-iso/amd_spec.rb +575 -573
- data/spec/asciidoctor-iso/base_spec.rb +445 -454
- data/spec/asciidoctor-iso/blocks_spec.rb +333 -288
- data/spec/asciidoctor-iso/cleanup_spec.rb +813 -704
- data/spec/asciidoctor-iso/inline_spec.rb +116 -91
- data/spec/asciidoctor-iso/lists_spec.rb +128 -121
- data/spec/asciidoctor-iso/refs_spec.rb +308 -250
- data/spec/asciidoctor-iso/section_spec.rb +273 -242
- data/spec/asciidoctor-iso/table_spec.rb +258 -242
- data/spec/asciidoctor-iso/validate_spec.rb +1099 -1165
- data/spec/isodoc/amd_spec.rb +967 -946
- data/spec/isodoc/blocks_spec.rb +530 -507
- data/spec/isodoc/i18n_spec.rb +953 -911
- data/spec/isodoc/inline_spec.rb +355 -293
- data/spec/isodoc/iso_spec.rb +338 -314
- data/spec/isodoc/metadata_spec.rb +392 -382
- data/spec/isodoc/postproc_spec.rb +833 -656
- data/spec/isodoc/ref_spec.rb +374 -331
- data/spec/isodoc/section_spec.rb +608 -525
- data/spec/isodoc/table_spec.rb +472 -411
- data/spec/isodoc/terms_spec.rb +209 -185
- data/spec/isodoc/xref_spec.rb +1370 -1236
- data/spec/metanorma/processor_spec.rb +28 -26
- data/spec/spec_helper.rb +176 -193
- metadata +2 -4
- data/.rubocop.ribose.yml +0 -66
- data/spec/assets/xref_error.adoc +0 -7
data/spec/isodoc/i18n_spec.rb
CHANGED
@@ -4,951 +4,993 @@ RSpec.describe IsoDoc do
|
|
4
4
|
it "processes English" do
|
5
5
|
input = <<~INPUT
|
6
6
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
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
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
<div class="Section3" id="B">
|
173
|
-
<h1 class="IntroTitle">0  Introduction</h1>
|
174
|
-
<div id="C"><h2>0.1  Introduction Subsection</h2>
|
175
|
-
|
176
|
-
</div>
|
177
|
-
<p>This is patent boilerplate</p>
|
178
|
-
</div>
|
179
|
-
<p class="zzSTDTitle1"/>
|
180
|
-
<div id="D">
|
181
|
-
<h1>1  Scope</h1>
|
182
|
-
<p id="E">Text</p>
|
183
|
-
</div>
|
184
|
-
<div>
|
185
|
-
<h1>2  Normative References</h1>
|
186
|
-
</div>
|
187
|
-
<div id="H"><h1>3  Terms, definitions, symbols and abbreviated terms</h1>
|
188
|
-
<div id="I"><h2>3.1  Normal Terms</h2>
|
189
|
-
|
190
|
-
<p class="TermNum" id="J">3.1.1</p>
|
191
|
-
<p class="Terms" style="text-align:left;">Term2</p>
|
192
|
-
|
193
|
-
</div><div id="K">
|
194
|
-
<span class='zzMoveToFollowing'>
|
195
|
-
<b>3.2  </b>
|
196
|
-
</span>
|
197
|
-
<dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
|
198
|
-
</div></div>
|
199
|
-
<div id="L" class="Symbols">
|
200
|
-
<h1>4</h1>
|
201
|
-
<dl>
|
202
|
-
<dt>
|
203
|
-
<p>Symbol</p>
|
204
|
-
</dt>
|
205
|
-
<dd>Definition</dd>
|
206
|
-
</dl>
|
207
|
-
</div>
|
208
|
-
<div id="M">
|
209
|
-
<h1>5  Clause 4</h1>
|
210
|
-
<div id="N"><h2>5.1  Introduction</h2>
|
211
|
-
|
212
|
-
</div>
|
213
|
-
<div id="O"><h2>5.2  Clause 4.2</h2>
|
214
|
-
|
215
|
-
</div>
|
216
|
-
</div>
|
217
|
-
<br/>
|
218
|
-
<div id="P" class="Section3">
|
219
|
-
<h1 class="Annex"><b>Annex A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
|
220
|
-
<div id="Q"><h2>A.1  Annex A.1</h2>
|
7
|
+
<bibdata>
|
8
|
+
<language>en</language>
|
9
|
+
</bibdata>
|
10
|
+
<preface>
|
11
|
+
<foreword obligation="informative">
|
12
|
+
<title>Foreword</title>
|
13
|
+
<p id="A">This is a preamble</p>
|
14
|
+
</foreword>
|
15
|
+
<introduction id="B" obligation="informative">
|
16
|
+
<title>Introduction</title>
|
17
|
+
<clause id="C" inline-header="false" obligation="informative">
|
18
|
+
<title>Introduction Subsection</title>
|
19
|
+
</clause>
|
20
|
+
<p>This is patent boilerplate</p>
|
21
|
+
</introduction>
|
22
|
+
</preface>
|
23
|
+
<sections>
|
24
|
+
<clause id="D" obligation="normative" type="scope">
|
25
|
+
<title>Scope</title>
|
26
|
+
<p id="E">Text</p>
|
27
|
+
</clause>
|
28
|
+
<clause id="H" obligation="normative">
|
29
|
+
<title>Terms, definitions, symbols and abbreviated terms</title>
|
30
|
+
<terms id="I" obligation="normative">
|
31
|
+
<title>Normal Terms</title>
|
32
|
+
<term id="J">
|
33
|
+
<preferred>Term2</preferred>
|
34
|
+
</term>
|
35
|
+
</terms>
|
36
|
+
<definitions id="K">
|
37
|
+
<dl>
|
38
|
+
<dt>Symbol</dt>
|
39
|
+
<dd>Definition</dd>
|
40
|
+
</dl>
|
41
|
+
</definitions>
|
42
|
+
</clause>
|
43
|
+
<definitions id="L">
|
44
|
+
<dl>
|
45
|
+
<dt>Symbol</dt>
|
46
|
+
<dd>Definition</dd>
|
47
|
+
</dl>
|
48
|
+
</definitions>
|
49
|
+
<clause id="M" inline-header="false" obligation="normative">
|
50
|
+
<title>Clause 4</title>
|
51
|
+
<clause id="N" inline-header="false" obligation="normative">
|
52
|
+
<title>Introduction</title>
|
53
|
+
</clause>
|
54
|
+
<clause id="O" inline-header="false" obligation="normative">
|
55
|
+
<title>Clause 4.2</title>
|
56
|
+
</clause>
|
57
|
+
</clause>
|
58
|
+
</sections>
|
59
|
+
<annex id="P" inline-header="false" obligation="normative">
|
60
|
+
<title>Annex</title>
|
61
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
62
|
+
<title>Annex A.1</title>
|
63
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
64
|
+
<title>Annex A.1a</title>
|
65
|
+
</clause>
|
66
|
+
</clause>
|
67
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
68
|
+
<title>An Appendix</title>
|
69
|
+
</appendix>
|
70
|
+
</annex>
|
71
|
+
<bibliography>
|
72
|
+
<references id="R" normative="true" obligation="informative">
|
73
|
+
<title>Normative References</title>
|
74
|
+
</references>
|
75
|
+
<clause id="S" obligation="informative">
|
76
|
+
<title>Bibliography</title>
|
77
|
+
<references id="T" normative="false" obligation="informative">
|
78
|
+
<title>Bibliography Subsection</title>
|
79
|
+
</references>
|
80
|
+
</clause>
|
81
|
+
</bibliography>
|
82
|
+
</iso-standard>
|
83
|
+
INPUT
|
84
|
+
|
85
|
+
presxml = <<~OUTPUT
|
86
|
+
<iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
|
87
|
+
<bibdata>
|
88
|
+
<language current="true">en</language>
|
89
|
+
</bibdata>
|
90
|
+
<preface>
|
91
|
+
<foreword obligation="informative">
|
92
|
+
<title>Foreword</title>
|
93
|
+
<p id="A">This is a preamble</p>
|
94
|
+
</foreword>
|
95
|
+
<introduction id="B" obligation="informative">
|
96
|
+
<title depth="1">0<tab/>Introduction</title>
|
97
|
+
<clause id="C" inline-header="false" obligation="informative">
|
98
|
+
<title depth="2">0.1<tab/>Introduction Subsection</title>
|
99
|
+
</clause>
|
100
|
+
<p>This is patent boilerplate</p>
|
101
|
+
</introduction>
|
102
|
+
</preface>
|
103
|
+
<sections>
|
104
|
+
<clause id="D" obligation="normative" type="scope">
|
105
|
+
<title depth="1">1<tab/>Scope</title>
|
106
|
+
<p id="E">Text</p>
|
107
|
+
</clause>
|
108
|
+
<clause id="H" obligation="normative">
|
109
|
+
<title depth="1">3<tab/>Terms, definitions, symbols and abbreviated terms</title>
|
110
|
+
<terms id="I" obligation="normative">
|
111
|
+
<title depth="2">3.1<tab/>Normal Terms</title>
|
112
|
+
<term id="J">
|
113
|
+
<name>3.1.1</name>
|
114
|
+
<preferred>Term2</preferred>
|
115
|
+
</term>
|
116
|
+
</terms>
|
117
|
+
<definitions id="K" inline-header="true">
|
118
|
+
<title>3.2</title>
|
119
|
+
<dl>
|
120
|
+
<dt>Symbol</dt>
|
121
|
+
<dd>Definition</dd>
|
122
|
+
</dl>
|
123
|
+
</definitions>
|
124
|
+
</clause>
|
125
|
+
<definitions id="L">
|
126
|
+
<title>4</title>
|
127
|
+
<dl>
|
128
|
+
<dt>Symbol</dt>
|
129
|
+
<dd>Definition</dd>
|
130
|
+
</dl>
|
131
|
+
</definitions>
|
132
|
+
<clause id="M" inline-header="false" obligation="normative">
|
133
|
+
<title depth="1">5<tab/>Clause 4</title>
|
134
|
+
<clause id="N" inline-header="false" obligation="normative">
|
135
|
+
<title depth="2">5.1<tab/>Introduction</title>
|
136
|
+
</clause>
|
137
|
+
<clause id="O" inline-header="false" obligation="normative">
|
138
|
+
<title depth="2">5.2<tab/>Clause 4.2</title>
|
139
|
+
</clause>
|
140
|
+
</clause>
|
141
|
+
</sections>
|
142
|
+
<annex id="P" inline-header="false" obligation="normative">
|
143
|
+
<title>
|
144
|
+
<strong>Annex A</strong>
|
145
|
+
<br/>(normative)
|
146
|
+
<br/>
|
147
|
+
<br/>
|
148
|
+
<strong>Annex</strong></title>
|
149
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
150
|
+
<title depth="2">A.1<tab/>Annex A.1</title>
|
151
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
152
|
+
<title depth="3">A.1.1<tab/>Annex A.1a</title>
|
153
|
+
</clause>
|
154
|
+
</clause>
|
155
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
156
|
+
<title depth="2">Appendix 1<tab/>An Appendix</title>
|
157
|
+
</appendix>
|
158
|
+
</annex>
|
159
|
+
<bibliography>
|
160
|
+
<references id="R" normative="true" obligation="informative">
|
161
|
+
<title depth="1">2<tab/>Normative References</title>
|
162
|
+
</references>
|
163
|
+
<clause id="S" obligation="informative">
|
164
|
+
<title depth="1">Bibliography</title>
|
165
|
+
<references id="T" normative="false" obligation="informative">
|
166
|
+
<title depth="2">Bibliography Subsection</title>
|
167
|
+
</references>
|
168
|
+
</clause>
|
169
|
+
</bibliography>
|
170
|
+
</iso-standard>
|
171
|
+
OUTPUT
|
221
172
|
|
222
|
-
|
173
|
+
html = <<~OUTPUT
|
174
|
+
#{HTML_HDR}
|
175
|
+
<br/>
|
176
|
+
<div>
|
177
|
+
<h1 class="ForewordTitle">Foreword</h1>
|
178
|
+
<p id="A">This is a preamble</p>
|
179
|
+
</div>
|
180
|
+
<br/>
|
181
|
+
<div class="Section3" id="B">
|
182
|
+
<h1 class="IntroTitle">0  Introduction</h1>
|
183
|
+
<div id="C">
|
184
|
+
<h2>0.1  Introduction Subsection</h2>
|
185
|
+
</div>
|
186
|
+
<p>This is patent boilerplate</p>
|
187
|
+
</div>
|
188
|
+
<p class="zzSTDTitle1"/>
|
189
|
+
<div id="D">
|
190
|
+
<h1>1  Scope</h1>
|
191
|
+
<p id="E">Text</p>
|
192
|
+
</div>
|
193
|
+
<div>
|
194
|
+
<h1>2  Normative References</h1>
|
195
|
+
</div>
|
196
|
+
<div id="H">
|
197
|
+
<h1>3  Terms, definitions, symbols and abbreviated terms</h1>
|
198
|
+
<div id="I">
|
199
|
+
<h2>3.1  Normal Terms</h2>
|
223
200
|
|
201
|
+
<p class="TermNum" id="J">3.1.1</p>
|
202
|
+
<p class="Terms" style="text-align:left;">Term2</p>
|
203
|
+
</div>
|
204
|
+
<div id="K">
|
205
|
+
<span class="zzMoveToFollowing">
|
206
|
+
<b>3.2  </b>
|
207
|
+
</span>
|
208
|
+
<dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
|
209
|
+
</div>
|
210
|
+
</div>
|
211
|
+
<div id="L" class="Symbols">
|
212
|
+
<h1>4</h1>
|
213
|
+
<dl>
|
214
|
+
<dt>
|
215
|
+
<p>Symbol</p>
|
216
|
+
</dt>
|
217
|
+
<dd>Definition</dd>
|
218
|
+
</dl>
|
219
|
+
</div>
|
220
|
+
<div id="M">
|
221
|
+
<h1>5  Clause 4</h1>
|
222
|
+
<div id="N">
|
223
|
+
<h2>5.1  Introduction</h2>
|
224
|
+
</div>
|
225
|
+
<div id="O">
|
226
|
+
<h2>5.2  Clause 4.2</h2>
|
227
|
+
</div>
|
228
|
+
</div>
|
229
|
+
<br/>
|
230
|
+
<div id="P" class="Section3">
|
231
|
+
<h1 class="Annex"><b>Annex A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
|
232
|
+
<div id="Q"><h2>A.1  Annex A.1</h2>
|
233
|
+
<div id="Q1">
|
234
|
+
<h3>A.1.1  Annex A.1a</h3>
|
235
|
+
</div>
|
236
|
+
</div>
|
237
|
+
<div id="Q2">
|
238
|
+
<h2>Appendix 1  An Appendix</h2>
|
239
|
+
</div>
|
240
|
+
</div>
|
241
|
+
<br/>
|
242
|
+
<div>
|
243
|
+
<h1 class="Section3">Bibliography</h1>
|
244
|
+
<div>
|
245
|
+
<h2 class="Section3">Bibliography Subsection</h2>
|
246
|
+
</div>
|
247
|
+
</div>
|
224
248
|
</div>
|
225
|
-
</
|
226
|
-
|
227
|
-
|
228
|
-
</div>
|
229
|
-
</div>
|
230
|
-
<br/>
|
231
|
-
<div>
|
232
|
-
<h1 class="Section3">Bibliography</h1>
|
233
|
-
<div>
|
234
|
-
<h2 class="Section3">Bibliography Subsection</h2>
|
235
|
-
</div>
|
236
|
-
</div>
|
237
|
-
</div>
|
238
|
-
</body>
|
239
|
-
</html>
|
249
|
+
</body>
|
250
|
+
</html>
|
240
251
|
OUTPUT
|
241
|
-
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
|
252
|
+
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
|
253
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, "")).to be_equivalent_to xmlpp(presxml)
|
242
254
|
expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
|
243
255
|
end
|
244
256
|
|
245
257
|
it "defaults to English" do
|
246
|
-
|
258
|
+
output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)
|
247
259
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
<clause id='Q1' inline-header='false' obligation='normative'>
|
418
|
-
<title depth='3'>
|
419
|
-
A.1.1
|
420
|
-
<tab/>
|
421
|
-
Annex A.1a
|
422
|
-
</title>
|
423
|
-
</clause>
|
424
|
-
</clause>
|
425
|
-
<appendix id='Q2' inline-header='false' obligation='normative'>
|
426
|
-
<title depth='2'>
|
427
|
-
Appendix 1
|
428
|
-
<tab/>
|
429
|
-
An Appendix
|
430
|
-
</title>
|
431
|
-
</appendix>
|
432
|
-
</annex>
|
433
|
-
<bibliography>
|
434
|
-
<references id='R' obligation='informative' normative='true'>
|
435
|
-
<title depth='1'>
|
436
|
-
2
|
437
|
-
<tab/>
|
438
|
-
Normative References
|
439
|
-
</title>
|
440
|
-
</references>
|
441
|
-
<clause id='S' obligation='informative'>
|
442
|
-
<title depth='1'>Bibliography</title>
|
443
|
-
<references id='T' obligation='informative' normative='false'>
|
444
|
-
<title depth='2'>Bibliography Subsection</title>
|
445
|
-
</references>
|
446
|
-
</clause>
|
447
|
-
</bibliography>
|
448
|
-
</iso-standard>
|
449
|
-
OUTPUT
|
260
|
+
<bibdata>
|
261
|
+
<language>tlh</language>
|
262
|
+
</bibdata>
|
263
|
+
<preface>
|
264
|
+
<foreword obligation="informative">
|
265
|
+
<title>Foreword</title>
|
266
|
+
<p id="A">This is a preamble</p>
|
267
|
+
</foreword>
|
268
|
+
<introduction id="B" obligation="informative">
|
269
|
+
<title>Introduction</title>
|
270
|
+
<clause id="C" inline-header="false" obligation="informative">
|
271
|
+
<title>Introduction Subsection</title>
|
272
|
+
</clause>
|
273
|
+
<p>This is patent boilerplate</p>
|
274
|
+
</introduction>
|
275
|
+
</preface>
|
276
|
+
<sections>
|
277
|
+
<clause id="D" obligation="normative" type="scope">
|
278
|
+
<title>Scope</title>
|
279
|
+
<p id="E">Text</p>
|
280
|
+
</clause>
|
281
|
+
<clause id="H" obligation="normative">
|
282
|
+
<title>Terms, definitions, symbols and abbreviated terms</title>
|
283
|
+
<terms id="I" obligation="normative">
|
284
|
+
<title>Normal Terms</title>
|
285
|
+
<term id="J">
|
286
|
+
<preferred>Term2</preferred>
|
287
|
+
</term>
|
288
|
+
</terms>
|
289
|
+
<definitions id="K">
|
290
|
+
<dl>
|
291
|
+
<dt>Symbol</dt>
|
292
|
+
<dd>Definition</dd>
|
293
|
+
</dl>
|
294
|
+
</definitions>
|
295
|
+
</clause>
|
296
|
+
<definitions id="L">
|
297
|
+
<dl>
|
298
|
+
<dt>Symbol</dt>
|
299
|
+
<dd>Definition</dd>
|
300
|
+
</dl>
|
301
|
+
</definitions>
|
302
|
+
<clause id="M" inline-header="false" obligation="normative">
|
303
|
+
<title>Clause 4</title>
|
304
|
+
<clause id="N" inline-header="false" obligation="normative">
|
305
|
+
<title>Introduction</title>
|
306
|
+
</clause>
|
307
|
+
<clause id="O" inline-header="false" obligation="normative">
|
308
|
+
<title>Clause 4.2</title>
|
309
|
+
</clause>
|
310
|
+
</clause>
|
311
|
+
</sections>
|
312
|
+
<annex id="P" inline-header="false" obligation="normative">
|
313
|
+
<title>Annex</title>
|
314
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
315
|
+
<title>Annex A.1</title>
|
316
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
317
|
+
<title>Annex A.1a</title>
|
318
|
+
</clause>
|
319
|
+
</clause>
|
320
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
321
|
+
<title>An Appendix</title>
|
322
|
+
</appendix>
|
323
|
+
</annex>
|
324
|
+
<bibliography>
|
325
|
+
<references id="R" normative="true" obligation="informative">
|
326
|
+
<title>Normative References</title>
|
327
|
+
</references>
|
328
|
+
<clause id="S" obligation="informative">
|
329
|
+
<title>Bibliography</title>
|
330
|
+
<references id="T" normative="false" obligation="informative">
|
331
|
+
<title>Bibliography Subsection</title>
|
332
|
+
</references>
|
333
|
+
</clause>
|
334
|
+
</bibliography>
|
335
|
+
</iso-standard>
|
336
|
+
INPUT
|
337
|
+
expect(xmlpp(output).sub(%r{<localized-strings>.*</localized-strings>}m, ""))
|
338
|
+
.to be_equivalent_to xmlpp(<<~"OUTPUT")
|
339
|
+
<iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
|
340
|
+
<bibdata>
|
341
|
+
<language current="true">tlh</language>
|
342
|
+
</bibdata>
|
343
|
+
<preface>
|
344
|
+
<foreword obligation="informative">
|
345
|
+
<title>Foreword</title>
|
346
|
+
<p id="A">This is a preamble</p>
|
347
|
+
</foreword>
|
348
|
+
<introduction id="B" obligation="informative">
|
349
|
+
<title depth="1">
|
350
|
+
0
|
351
|
+
<tab/>
|
352
|
+
Introduction
|
353
|
+
</title>
|
354
|
+
<clause id="C" inline-header="false" obligation="informative">
|
355
|
+
<title depth="2">0.1<tab/>Introduction Subsection</title>
|
356
|
+
</clause>
|
357
|
+
<p>This is patent boilerplate</p>
|
358
|
+
</introduction>
|
359
|
+
</preface>
|
360
|
+
<sections>
|
361
|
+
<clause id="D" obligation="normative" type="scope">
|
362
|
+
<title depth="1">1<tab/>Scope</title>
|
363
|
+
<p id="E">Text</p>
|
364
|
+
</clause>
|
365
|
+
<clause id="H" obligation="normative">
|
366
|
+
<title depth="1">3<tab/>Terms, definitions, symbols and abbreviated terms</title>
|
367
|
+
<terms id="I" obligation="normative">
|
368
|
+
<title depth="2">3.1<tab/>Normal Terms</title>
|
369
|
+
<term id="J">
|
370
|
+
<name>3.1.1</name>
|
371
|
+
<preferred>Term2</preferred>
|
372
|
+
</term>
|
373
|
+
</terms>
|
374
|
+
<definitions id="K" inline-header="true">
|
375
|
+
<title>3.2</title>
|
376
|
+
<dl>
|
377
|
+
<dt>Symbol</dt>
|
378
|
+
<dd>Definition</dd>
|
379
|
+
</dl>
|
380
|
+
</definitions>
|
381
|
+
</clause>
|
382
|
+
<definitions id="L">
|
383
|
+
<title>4</title>
|
384
|
+
<dl>
|
385
|
+
<dt>Symbol</dt>
|
386
|
+
<dd>Definition</dd>
|
387
|
+
</dl>
|
388
|
+
</definitions>
|
389
|
+
<clause id="M" inline-header="false" obligation="normative">
|
390
|
+
<title depth="1">5<tab/>Clause 4</title>
|
391
|
+
<clause id="N" inline-header="false" obligation="normative">
|
392
|
+
<title depth="2">5.1<tab/>Introduction</title>
|
393
|
+
</clause>
|
394
|
+
<clause id="O" inline-header="false" obligation="normative">
|
395
|
+
<title depth="2">5.2<tab/>Clause 4.2</title>
|
396
|
+
</clause>
|
397
|
+
</clause>
|
398
|
+
</sections>
|
399
|
+
<annex id="P" inline-header="false" obligation="normative">
|
400
|
+
<title>
|
401
|
+
<strong>Annex A</strong>
|
402
|
+
<br/>(normative)
|
403
|
+
<br/>
|
404
|
+
<br/>
|
405
|
+
<strong>Annex</strong></title>
|
406
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
407
|
+
<title depth="2">A.1<tab/>Annex A.1</title>
|
408
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
409
|
+
<title depth="3">A.1.1<tab/>Annex A.1a</title>
|
410
|
+
</clause>
|
411
|
+
</clause>
|
412
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
413
|
+
<title depth="2">Appendix 1<tab/>An Appendix</title>
|
414
|
+
</appendix>
|
415
|
+
</annex>
|
416
|
+
<bibliography>
|
417
|
+
<references id="R" normative="true" obligation="informative">
|
418
|
+
<title depth="1">2<tab/>Normative References</title>
|
419
|
+
</references>
|
420
|
+
<clause id="S" obligation="informative">
|
421
|
+
<title depth="1">Bibliography</title>
|
422
|
+
<references id="T" normative="false" obligation="informative">
|
423
|
+
<title depth="2">Bibliography Subsection</title>
|
424
|
+
</references>
|
425
|
+
</clause>
|
426
|
+
</bibliography>
|
427
|
+
</iso-standard>
|
428
|
+
OUTPUT
|
450
429
|
end
|
451
430
|
|
452
431
|
it "processes French" do
|
453
432
|
input = <<~INPUT
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
<h1 class="IntroTitle">0  Introduction</h1>
|
621
|
-
<div id="C"><h2>0.1  Introduction Subsection</h2>
|
622
|
-
|
623
|
-
</div>
|
624
|
-
<p>This is patent boilerplate</p>
|
625
|
-
</div>
|
626
|
-
<p class="zzSTDTitle1"/>
|
627
|
-
<div id="D">
|
628
|
-
<h1>1  Scope</h1>
|
629
|
-
<p id="E">Text</p>
|
630
|
-
</div>
|
631
|
-
<div>
|
632
|
-
<h1>2  Normative References</h1>
|
633
|
-
</div>
|
634
|
-
<div id="H"><h1>3  Terms, definitions, symbols and abbreviated terms</h1>
|
635
|
-
<div id="I"><h2>3.1  Normal Terms</h2>
|
636
|
-
|
637
|
-
<p class="TermNum" id="J">3.1.1</p>
|
638
|
-
<p class="Terms" style="text-align:left;">Term2</p>
|
639
|
-
|
640
|
-
</div><div id="K">
|
641
|
-
<span class='zzMoveToFollowing'>
|
642
|
-
<b>3.2  </b>
|
643
|
-
</span>
|
644
|
-
<dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
|
645
|
-
</div></div>
|
646
|
-
<div id="L" class="Symbols">
|
647
|
-
<h1>4</h1>
|
648
|
-
<dl>
|
649
|
-
<dt>
|
650
|
-
<p>Symbol</p>
|
651
|
-
</dt>
|
652
|
-
<dd>Definition</dd>
|
653
|
-
</dl>
|
654
|
-
</div>
|
655
|
-
<div id="M">
|
656
|
-
<h1>5  Clause 4</h1>
|
657
|
-
<div id="N"><h2>5.1  Introduction</h2>
|
658
|
-
|
659
|
-
</div>
|
660
|
-
<div id="O"><h2>5.2  Clause 4.2</h2>
|
661
|
-
|
662
|
-
</div>
|
663
|
-
</div>
|
664
|
-
<br/>
|
665
|
-
<div id="P" class="Section3">
|
666
|
-
<h1 class="Annex"><b>Annexe A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
|
667
|
-
<div id="Q"><h2>A.1  Annex A.1</h2>
|
668
|
-
|
669
|
-
<div id="Q1"><h3>A.1.1  Annex A.1a</h3>
|
433
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
434
|
+
<bibdata>
|
435
|
+
<language>fr</language>
|
436
|
+
</bibdata>
|
437
|
+
<preface>
|
438
|
+
<foreword obligation="informative">
|
439
|
+
<title>Foreword</title>
|
440
|
+
<p id="A">This is a preamble</p>
|
441
|
+
</foreword>
|
442
|
+
<introduction id="B" obligation="informative">
|
443
|
+
<title>Introduction</title>
|
444
|
+
<clause id="C" inline-header="false" obligation="informative">
|
445
|
+
<title>Introduction Subsection</title>
|
446
|
+
</clause>
|
447
|
+
<p>This is patent boilerplate</p>
|
448
|
+
</introduction>
|
449
|
+
</preface>
|
450
|
+
<sections>
|
451
|
+
<clause id="D" obligation="normative" type="scope">
|
452
|
+
<title>Scope</title>
|
453
|
+
<p id="E">Text</p>
|
454
|
+
</clause>
|
455
|
+
<clause id="H" obligation="normative">
|
456
|
+
<title>Terms, definitions, symbols and abbreviated terms</title>
|
457
|
+
<terms id="I" obligation="normative">
|
458
|
+
<title>Normal Terms</title>
|
459
|
+
<term id="J">
|
460
|
+
<preferred>Term2</preferred>
|
461
|
+
</term>
|
462
|
+
</terms>
|
463
|
+
<definitions id="K">
|
464
|
+
<dl>
|
465
|
+
<dt>Symbol</dt>
|
466
|
+
<dd>Definition</dd>
|
467
|
+
</dl>
|
468
|
+
</definitions>
|
469
|
+
</clause>
|
470
|
+
<definitions id="L">
|
471
|
+
<dl>
|
472
|
+
<dt>Symbol</dt>
|
473
|
+
<dd>Definition</dd>
|
474
|
+
</dl>
|
475
|
+
</definitions>
|
476
|
+
<clause id="M" inline-header="false" obligation="normative">
|
477
|
+
<title>Clause 4</title>
|
478
|
+
<clause id="N" inline-header="false" obligation="normative">
|
479
|
+
<title>Introduction</title>
|
480
|
+
</clause>
|
481
|
+
<clause id="O" inline-header="false" obligation="normative">
|
482
|
+
<title>Clause 4.2</title>
|
483
|
+
</clause>
|
484
|
+
</clause>
|
485
|
+
</sections>
|
486
|
+
<annex id="P" inline-header="false" obligation="normative">
|
487
|
+
<title>Annex</title>
|
488
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
489
|
+
<title>Annex A.1</title>
|
490
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
491
|
+
<title>Annex A.1a</title>
|
492
|
+
</clause>
|
493
|
+
</clause>
|
494
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
495
|
+
<title>An Appendix</title>
|
496
|
+
</appendix>
|
497
|
+
</annex>
|
498
|
+
<bibliography>
|
499
|
+
<references id="R" normative="true" obligation="informative">
|
500
|
+
<title>Normative References</title>
|
501
|
+
</references>
|
502
|
+
<clause id="S" obligation="informative">
|
503
|
+
<title>Bibliography</title>
|
504
|
+
<references id="T" normative="false" obligation="informative">
|
505
|
+
<title>Bibliography Subsection</title>
|
506
|
+
</references>
|
507
|
+
</clause>
|
508
|
+
</bibliography>
|
509
|
+
</iso-standard>
|
510
|
+
INPUT
|
511
|
+
|
512
|
+
presxml = <<~OUTPUT
|
513
|
+
<iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
|
514
|
+
<bibdata>
|
515
|
+
<language current="true">fr</language>
|
516
|
+
</bibdata>
|
517
|
+
<preface>
|
518
|
+
<foreword obligation="informative">
|
519
|
+
<title>Foreword</title>
|
520
|
+
<p id="A">This is a preamble</p>
|
521
|
+
</foreword>
|
522
|
+
<introduction id="B" obligation="informative">
|
523
|
+
<title depth="1">0<tab/>Introduction</title>
|
524
|
+
<clause id="C" inline-header="false" obligation="informative">
|
525
|
+
<title depth="2">0.1<tab/>Introduction Subsection</title>
|
526
|
+
</clause>
|
527
|
+
<p>This is patent boilerplate</p>
|
528
|
+
</introduction>
|
529
|
+
</preface>
|
530
|
+
<sections>
|
531
|
+
<clause id="D" obligation="normative" type="scope">
|
532
|
+
<title depth="1">1<tab/>Scope</title>
|
533
|
+
<p id="E">Text</p>
|
534
|
+
</clause>
|
535
|
+
<clause id="H" obligation="normative">
|
536
|
+
<title depth="1">3<tab/>Terms, definitions, symbols and abbreviated terms</title>
|
537
|
+
<terms id="I" obligation="normative">
|
538
|
+
<title depth="2">3.1<tab/>Normal Terms</title>
|
539
|
+
<term id="J">
|
540
|
+
<name>3.1.1</name>
|
541
|
+
<preferred>Term2</preferred>
|
542
|
+
</term>
|
543
|
+
</terms>
|
544
|
+
<definitions id="K" inline-header="true">
|
545
|
+
<title>3.2</title>
|
546
|
+
<dl>
|
547
|
+
<dt>Symbol</dt>
|
548
|
+
<dd>Definition</dd>
|
549
|
+
</dl>
|
550
|
+
</definitions>
|
551
|
+
</clause>
|
552
|
+
<definitions id="L">
|
553
|
+
<title>4</title>
|
554
|
+
<dl>
|
555
|
+
<dt>Symbol</dt>
|
556
|
+
<dd>Definition</dd>
|
557
|
+
</dl>
|
558
|
+
</definitions>
|
559
|
+
<clause id="M" inline-header="false" obligation="normative">
|
560
|
+
<title depth="1">5<tab/>Clause 4</title>
|
561
|
+
<clause id="N" inline-header="false" obligation="normative">
|
562
|
+
<title depth="2">5.1<tab/>Introduction</title>
|
563
|
+
</clause>
|
564
|
+
<clause id="O" inline-header="false" obligation="normative">
|
565
|
+
<title depth="2">5.2<tab/>Clause 4.2</title>
|
566
|
+
</clause>
|
567
|
+
</clause>
|
568
|
+
</sections>
|
569
|
+
<annex id="P" inline-header="false" obligation="normative">
|
570
|
+
<title>
|
571
|
+
<strong>Annexe A</strong>
|
572
|
+
<br/>(normative)
|
573
|
+
<br/>
|
574
|
+
<br/>
|
575
|
+
<strong>Annex</strong></title>
|
576
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
577
|
+
<title depth="2">A.1<tab/>Annex A.1</title>
|
578
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
579
|
+
<title depth="3">A.1.1<tab/>Annex A.1a</title>
|
580
|
+
</clause>
|
581
|
+
</clause>
|
582
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
583
|
+
<title depth="2">Appendice 1<tab/>An Appendix</title>
|
584
|
+
</appendix>
|
585
|
+
</annex>
|
586
|
+
<bibliography>
|
587
|
+
<references id="R" normative="true" obligation="informative">
|
588
|
+
<title depth="1">2<tab/>Normative References</title>
|
589
|
+
</references>
|
590
|
+
<clause id="S" obligation="informative">
|
591
|
+
<title depth="1">Bibliography</title>
|
592
|
+
<references id="T" normative="false" obligation="informative">
|
593
|
+
<title depth="2">Bibliography Subsection</title>
|
594
|
+
</references>
|
595
|
+
</clause>
|
596
|
+
</bibliography>
|
597
|
+
</iso-standard>
|
598
|
+
OUTPUT
|
670
599
|
|
600
|
+
html = <<~OUTPUT
|
601
|
+
#{HTML_HDR.gsub(/"en"/, '"fr"')}
|
602
|
+
<br/>
|
603
|
+
<div>
|
604
|
+
<h1 class="ForewordTitle">Foreword</h1>
|
605
|
+
<p id="A">This is a preamble</p>
|
606
|
+
</div>
|
607
|
+
<br/>
|
608
|
+
<div class="Section3" id="B">
|
609
|
+
<h1 class="IntroTitle">0  Introduction</h1>
|
610
|
+
<div id="C">
|
611
|
+
<h2>0.1  Introduction Subsection</h2>
|
612
|
+
</div>
|
613
|
+
<p>This is patent boilerplate</p>
|
614
|
+
</div>
|
615
|
+
<p class="zzSTDTitle1"/>
|
616
|
+
<div id="D">
|
617
|
+
<h1>1  Scope</h1>
|
618
|
+
<p id="E">Text</p>
|
619
|
+
</div>
|
620
|
+
<div>
|
621
|
+
<h1>2  Normative References</h1>
|
622
|
+
</div>
|
623
|
+
<div id="H">
|
624
|
+
<h1>3  Terms, definitions, symbols and abbreviated terms</h1>
|
625
|
+
<div id="I">
|
626
|
+
<h2>3.1  Normal Terms</h2>
|
627
|
+
<p class="TermNum" id="J">3.1.1</p>
|
628
|
+
<p class="Terms" style="text-align:left;">Term2</p>
|
629
|
+
</div>
|
630
|
+
<div id="K">
|
631
|
+
<span class="zzMoveToFollowing">
|
632
|
+
<b>3.2  </b>
|
633
|
+
</span>
|
634
|
+
<dl>
|
635
|
+
<dt>
|
636
|
+
<p>Symbol</p>
|
637
|
+
</dt>
|
638
|
+
<dd>Definition</dd>
|
639
|
+
</dl>
|
640
|
+
</div>
|
641
|
+
</div>
|
642
|
+
<div class="Symbols" id="L">
|
643
|
+
<h1>4</h1>
|
644
|
+
<dl>
|
645
|
+
<dt>
|
646
|
+
<p>Symbol</p>
|
647
|
+
</dt>
|
648
|
+
<dd>Definition</dd>
|
649
|
+
</dl>
|
650
|
+
</div>
|
651
|
+
<div id="M">
|
652
|
+
<h1>5  Clause 4</h1>
|
653
|
+
<div id="N">
|
654
|
+
<h2>5.1  Introduction</h2>
|
655
|
+
</div>
|
656
|
+
<div id="O">
|
657
|
+
<h2>5.2  Clause 4.2</h2>
|
658
|
+
</div>
|
659
|
+
</div>
|
660
|
+
<br/>
|
661
|
+
<div class="Section3" id="P">
|
662
|
+
<h1 class="Annex">
|
663
|
+
<b>Annexe A</b>
|
664
|
+
<br/>(normative)
|
665
|
+
<br/>
|
666
|
+
<br/>
|
667
|
+
<b>Annex</b></h1>
|
668
|
+
<div id="Q">
|
669
|
+
<h2>A.1  Annex A.1</h2>
|
670
|
+
<div id="Q1">
|
671
|
+
<h3>A.1.1  Annex A.1a</h3>
|
672
|
+
</div>
|
673
|
+
</div>
|
674
|
+
<div id="Q2">
|
675
|
+
<h2>Appendice 1  An Appendix</h2>
|
676
|
+
</div>
|
677
|
+
</div>
|
678
|
+
<br/>
|
679
|
+
<div>
|
680
|
+
<h1 class="Section3">Bibliography</h1>
|
681
|
+
<div>
|
682
|
+
<h2 class="Section3">Bibliography Subsection</h2>
|
683
|
+
</div>
|
684
|
+
</div>
|
671
685
|
</div>
|
672
|
-
</
|
673
|
-
|
674
|
-
|
675
|
-
</div>
|
676
|
-
</div>
|
677
|
-
<br/>
|
678
|
-
<div>
|
679
|
-
<h1 class="Section3">Bibliography</h1>
|
680
|
-
<div>
|
681
|
-
<h2 class="Section3">Bibliography Subsection</h2>
|
682
|
-
</div>
|
683
|
-
</div>
|
684
|
-
</div>
|
685
|
-
</body>
|
686
|
-
</html>
|
686
|
+
</body>
|
687
|
+
</html>
|
687
688
|
OUTPUT
|
688
|
-
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
|
689
|
+
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
|
690
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, "")).to be_equivalent_to xmlpp(presxml)
|
689
691
|
expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
|
690
692
|
end
|
691
693
|
|
692
|
-
|
693
|
-
|
694
|
+
it "processes Simplified Chinese" do
|
695
|
+
input = <<~INPUT
|
694
696
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
<
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
</
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
<
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
697
|
+
<bibdata>
|
698
|
+
<language>zh</language>
|
699
|
+
<script>Hans</script>
|
700
|
+
</bibdata>
|
701
|
+
<preface>
|
702
|
+
<foreword obligation="informative">
|
703
|
+
<title>Foreword</title>
|
704
|
+
<p id="A">This is a preamble</p>
|
705
|
+
</foreword>
|
706
|
+
<introduction id="B" obligation="informative">
|
707
|
+
<title>Introduction</title>
|
708
|
+
<clause id="C" inline-header="false" obligation="informative">
|
709
|
+
<title>Introduction Subsection</title>
|
710
|
+
</clause>
|
711
|
+
<p>This is patent boilerplate</p>
|
712
|
+
</introduction>
|
713
|
+
</preface>
|
714
|
+
<sections>
|
715
|
+
<clause id="D" obligation="normative" type="scope">
|
716
|
+
<title>Scope</title>
|
717
|
+
<p id="E">
|
718
|
+
<eref bibitemid="ISO712" type="inline">
|
719
|
+
<locality type="table">
|
720
|
+
<referenceFrom>1</referenceFrom>
|
721
|
+
<referenceTo>1</referenceTo>
|
722
|
+
</locality>
|
723
|
+
</eref>
|
724
|
+
</p>
|
725
|
+
</clause>
|
726
|
+
<clause id="H" obligation="normative">
|
727
|
+
<title>Terms, definitions, symbols and abbreviated terms</title>
|
728
|
+
<terms id="I" obligation="normative">
|
729
|
+
<title>Normal Terms</title>
|
730
|
+
<term id="J">
|
731
|
+
<preferred>Term2</preferred>
|
732
|
+
</term>
|
733
|
+
</terms>
|
734
|
+
<definitions id="K">
|
735
|
+
<dl>
|
736
|
+
<dt>Symbol</dt>
|
737
|
+
<dd>Definition</dd>
|
738
|
+
</dl>
|
739
|
+
</definitions>
|
740
|
+
</clause>
|
741
|
+
<definitions id="L">
|
742
|
+
<dl>
|
743
|
+
<dt>Symbol</dt>
|
744
|
+
<dd>Definition</dd>
|
745
|
+
</dl>
|
746
|
+
</definitions>
|
747
|
+
<clause id="M" inline-header="false" obligation="normative">
|
748
|
+
<title>Clause 4</title>
|
749
|
+
<clause id="N" inline-header="false" obligation="normative">
|
750
|
+
<title>Introduction</title>
|
751
|
+
</clause>
|
752
|
+
<clause id="O" inline-header="false" obligation="normative">
|
753
|
+
<title>Clause 4.2</title>
|
754
|
+
</clause>
|
755
|
+
</clause>
|
756
|
+
</sections>
|
757
|
+
<annex id="P" inline-header="false" obligation="normative">
|
758
|
+
<title>Annex</title>
|
759
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
760
|
+
<title>Annex A.1</title>
|
761
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
762
|
+
<title>Annex A.1a</title>
|
763
|
+
</clause>
|
764
|
+
</clause>
|
765
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
766
|
+
<title>An Appendix</title>
|
767
|
+
</appendix>
|
768
|
+
</annex>
|
769
|
+
<bibliography>
|
770
|
+
<references id="R" normative="true" obligation="informative">
|
771
|
+
<title>Normative References</title>
|
772
|
+
<bibitem id="ISO712" type="standard">
|
773
|
+
<title format="text/plain">Cereals and cereal products</title>
|
774
|
+
<docidentifier>ISO 712</docidentifier>
|
775
|
+
<contributor>
|
776
|
+
<role type="publisher"/>
|
777
|
+
<organization>
|
778
|
+
<abbreviation>ISO</abbreviation>
|
779
|
+
</organization>
|
780
|
+
</contributor>
|
781
|
+
</bibitem>
|
782
|
+
</references>
|
783
|
+
<clause id="S" obligation="informative">
|
784
|
+
<title>Bibliography</title>
|
785
|
+
<references id="T" normative="false" obligation="informative">
|
786
|
+
<title>Bibliography Subsection</title>
|
787
|
+
</references>
|
788
|
+
</clause>
|
789
|
+
</bibliography>
|
790
|
+
</iso-standard>
|
791
|
+
INPUT
|
792
|
+
presxml = <<~OUTPUT
|
793
|
+
<iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
|
794
|
+
<bibdata>
|
795
|
+
<language current="true">zh</language>
|
796
|
+
<script current="true">Hans</script>
|
797
|
+
</bibdata>
|
798
|
+
<preface>
|
799
|
+
<foreword obligation="informative">
|
800
|
+
<title>Foreword</title>
|
801
|
+
<p id="A">This is a preamble</p>
|
802
|
+
</foreword>
|
803
|
+
<introduction id="B" obligation="informative">
|
804
|
+
<title depth="1">0
|
805
|
+
<tab/>
|
806
|
+
Introduction</title>
|
807
|
+
<clause id="C" inline-header="false" obligation="informative">
|
808
|
+
<title depth="2">0.1
|
809
|
+
<tab/>
|
810
|
+
Introduction Subsection</title>
|
811
|
+
</clause>
|
812
|
+
<p>This is patent boilerplate</p>
|
813
|
+
</introduction>
|
814
|
+
</preface>
|
815
|
+
<sections>
|
816
|
+
<clause id="D" obligation="normative" type="scope">
|
817
|
+
<title depth="1">1
|
818
|
+
<tab/>
|
819
|
+
Scope</title>
|
820
|
+
<p id="E">
|
821
|
+
<eref bibitemid="ISO712" type="inline"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712、第1–1表</eref>
|
822
|
+
</p>
|
823
|
+
</clause>
|
824
|
+
<clause id="H" obligation="normative">
|
825
|
+
<title depth="1">3
|
826
|
+
<tab/>
|
827
|
+
Terms, definitions, symbols and abbreviated terms</title>
|
828
|
+
<terms id="I" obligation="normative">
|
829
|
+
<title depth="2">3.1
|
830
|
+
<tab/>
|
831
|
+
Normal Terms</title>
|
832
|
+
<term id="J">
|
833
|
+
<name>3.1.1</name>
|
834
|
+
<preferred>Term2</preferred>
|
835
|
+
</term>
|
836
|
+
</terms>
|
837
|
+
<definitions id="K" inline-header="true">
|
838
|
+
<title>3.2</title>
|
839
|
+
<dl>
|
840
|
+
<dt>Symbol</dt>
|
841
|
+
<dd>Definition</dd>
|
842
|
+
</dl>
|
843
|
+
</definitions>
|
844
|
+
</clause>
|
845
|
+
<definitions id="L">
|
816
846
|
<title>4</title>
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
</title>
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
847
|
+
<dl>
|
848
|
+
<dt>Symbol</dt>
|
849
|
+
<dd>Definition</dd>
|
850
|
+
</dl>
|
851
|
+
</definitions>
|
852
|
+
<clause id="M" inline-header="false" obligation="normative">
|
853
|
+
<title depth="1">5
|
854
|
+
<tab/>
|
855
|
+
Clause 4</title>
|
856
|
+
<clause id="N" inline-header="false" obligation="normative">
|
857
|
+
<title depth="2">5.1
|
858
|
+
<tab/>
|
859
|
+
Introduction</title>
|
860
|
+
</clause>
|
861
|
+
<clause id="O" inline-header="false" obligation="normative">
|
862
|
+
<title depth="2">5.2
|
863
|
+
<tab/>
|
864
|
+
Clause 4.2</title>
|
865
|
+
</clause>
|
866
|
+
</clause>
|
867
|
+
</sections>
|
868
|
+
<annex id="P" inline-header="false" obligation="normative">
|
869
|
+
<title>
|
870
|
+
<strong>附件A</strong>
|
871
|
+
<br/>(规范性附录)
|
872
|
+
<br/>
|
873
|
+
<br/>
|
874
|
+
<strong>Annex</strong></title>
|
875
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
876
|
+
<title depth="2">A.1
|
877
|
+
<tab/>
|
878
|
+
Annex A.1</title>
|
879
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
880
|
+
<title depth="3">A.1.1
|
881
|
+
<tab/>
|
882
|
+
Annex A.1a</title>
|
883
|
+
</clause>
|
884
|
+
</clause>
|
885
|
+
<appendix id="Q2" inline-header="false" obligation="normative">
|
886
|
+
<title depth="2">附录1
|
887
|
+
<tab/>
|
888
|
+
An Appendix</title>
|
889
|
+
</appendix>
|
890
|
+
</annex>
|
891
|
+
<bibliography>
|
892
|
+
<references id="R" normative="true" obligation="informative">
|
893
|
+
<title depth="1">2
|
894
|
+
<tab/>
|
895
|
+
Normative References</title>
|
896
|
+
<bibitem id="ISO712" type="standard">
|
897
|
+
<title format="text/plain">Cereals and cereal products</title>
|
898
|
+
<docidentifier>ISO 712</docidentifier>
|
899
|
+
<contributor>
|
900
|
+
<role type="publisher"/>
|
901
|
+
<organization>
|
902
|
+
<abbreviation>ISO</abbreviation>
|
903
|
+
</organization>
|
904
|
+
</contributor>
|
905
|
+
</bibitem>
|
906
|
+
</references>
|
907
|
+
<clause id="S" obligation="informative">
|
908
|
+
<title depth="1">Bibliography</title>
|
909
|
+
<references id="T" normative="false" obligation="informative">
|
910
|
+
<title depth="2">Bibliography Subsection</title>
|
911
|
+
</references>
|
912
|
+
</clause>
|
913
|
+
</bibliography>
|
914
|
+
</iso-standard>
|
915
|
+
OUTPUT
|
868
916
|
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
917
|
+
html = <<~OUTPUT
|
918
|
+
#{HTML_HDR.gsub(/"en"/, '"zh"')}
|
919
|
+
<br/>
|
920
|
+
<div>
|
921
|
+
<h1 class="ForewordTitle">Foreword</h1>
|
922
|
+
<p id="A">This is a preamble</p>
|
923
|
+
</div>
|
924
|
+
<br/>
|
925
|
+
<div class="Section3" id="B">
|
926
|
+
<h1 class="IntroTitle">0   Introduction</h1>
|
927
|
+
<div id="C">
|
928
|
+
<h2>0.1   Introduction Subsection</h2>
|
881
929
|
</div>
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
<h1>3 Terms, definitions, symbols and abbreviated terms</h1>
|
897
|
-
<div id="I"><h2>3.1 Normal Terms</h2>
|
898
|
-
|
930
|
+
<p>This is patent boilerplate</p>
|
931
|
+
</div>
|
932
|
+
<p class="zzSTDTitle1"/>
|
933
|
+
<div id="D">
|
934
|
+
<h1>1   Scope</h1>
|
935
|
+
<p id="E"><a href='#ISO712'>ISO 712、第1–1表</a></p>
|
936
|
+
</div>
|
937
|
+
<div>
|
938
|
+
<h1>2   Normative References</h1>
|
939
|
+
<p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i></p>
|
940
|
+
</div>
|
941
|
+
<div id="H">
|
942
|
+
<h1>3   Terms, definitions, symbols and abbreviated terms</h1>
|
943
|
+
<div id="I"><h2>3.1   Normal Terms</h2>
|
899
944
|
<p class="TermNum" id="J">3.1.1</p>
|
900
945
|
<p class="Terms" style="text-align:left;">Term2</p>
|
901
|
-
|
902
946
|
</div><div id="K">
|
903
947
|
<span class='zzMoveToFollowing'>
|
904
|
-
|
905
|
-
</span>
|
948
|
+
<b>3.2 </b>
|
949
|
+
</span>
|
906
950
|
<dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
|
907
951
|
</div></div>
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
952
|
+
<div id="L" class="Symbols">
|
953
|
+
<h1>4</h1>
|
954
|
+
<dl>
|
955
|
+
<dt>
|
956
|
+
<p>Symbol</p>
|
957
|
+
</dt>
|
958
|
+
<dd>Definition</dd>
|
959
|
+
</dl>
|
960
|
+
</div>
|
961
|
+
<div id="M">
|
962
|
+
<h1>5   Clause 4</h1>
|
963
|
+
<div id="N">
|
964
|
+
<h2>5.1   Introduction</h2>
|
921
965
|
</div>
|
922
|
-
|
923
|
-
|
966
|
+
<div id="O">
|
967
|
+
<h2>5.2   Clause 4.2</h2>
|
924
968
|
</div>
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
<div id="Q1"><h3>A.1.1 Annex A.1a</h3>
|
932
|
-
|
933
|
-
</div>
|
969
|
+
</div>
|
970
|
+
<br/>
|
971
|
+
<div id="P" class="Section3">
|
972
|
+
<h1 class="Annex"><b>附件A</b><br/>(规范性附录)<br/><br/><b>Annex</b></h1>
|
973
|
+
<div id="Q">
|
974
|
+
<h2>A.1   Annex A.1</h2>
|
975
|
+
<div id="Q1"><h3>A.1.1   Annex A.1a</h3></div>
|
934
976
|
</div>
|
935
|
-
|
936
|
-
|
977
|
+
<div id="Q2">
|
978
|
+
<h2>附录1   An Appendix</h2>
|
937
979
|
</div>
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
980
|
+
</div>
|
981
|
+
<br/>
|
982
|
+
<div>
|
983
|
+
<h1 class="Section3">Bibliography</h1>
|
984
|
+
<div>
|
985
|
+
<h2 class="Section3">Bibliography Subsection</h2>
|
986
|
+
</div>
|
987
|
+
</div>
|
988
|
+
</div>
|
989
|
+
</body>
|
990
|
+
</html>
|
949
991
|
OUTPUT
|
950
|
-
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
|
992
|
+
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
|
993
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, "")).to be_equivalent_to xmlpp(presxml)
|
951
994
|
expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
|
952
995
|
end
|
953
|
-
|
954
996
|
end
|