metanorma-iso 1.4.0 → 1.5.0
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/.github/workflows/macos.yml +0 -1
- data/.github/workflows/ubuntu.yml +6 -3
- data/.github/workflows/windows.yml +0 -1
- data/Gemfile +1 -0
- data/Rakefile +2 -0
- data/lib/asciidoctor/iso/base.rb +8 -19
- data/lib/asciidoctor/iso/cleanup.rb +2 -3
- data/lib/asciidoctor/iso/front.rb +0 -1
- data/lib/asciidoctor/iso/front_id.rb +1 -1
- data/lib/asciidoctor/iso/isodoc.rng +12 -6
- data/lib/asciidoctor/iso/section.rb +5 -11
- data/lib/asciidoctor/iso/term_lookup_cleanup.rb +0 -1
- data/lib/asciidoctor/iso/validate_section.rb +30 -44
- data/lib/isodoc/iso/base_convert.rb +3 -64
- data/lib/isodoc/iso/html/htmlstyle.css +47 -0
- data/lib/isodoc/iso/html/htmlstyle.scss +0 -1
- data/lib/isodoc/iso/html/isodoc.css +862 -0
- data/lib/isodoc/iso/html/isodoc.scss +0 -1
- data/lib/isodoc/iso/html/style-human.css +968 -0
- data/lib/isodoc/iso/html/style-iso.css +996 -0
- data/lib/isodoc/iso/html/wordstyle.css +1515 -0
- data/lib/isodoc/iso/html/wordstyle.scss +0 -1
- data/lib/isodoc/iso/html_convert.rb +2 -1
- data/lib/{asciidoctor → isodoc}/iso/i18n-en.yaml +0 -0
- data/lib/{asciidoctor → isodoc}/iso/i18n-fr.yaml +0 -0
- data/lib/{asciidoctor → isodoc}/iso/i18n-zh-Hans.yaml +0 -0
- data/lib/isodoc/iso/i18n.rb +19 -0
- data/lib/isodoc/iso/init.rb +33 -0
- data/lib/isodoc/iso/iso.amendment.xsl +32 -0
- data/lib/isodoc/iso/iso.international-standard.xsl +32 -0
- data/lib/isodoc/iso/metadata.rb +1 -1
- data/lib/isodoc/iso/pdf_convert.rb +1 -1
- data/lib/isodoc/iso/presentation_xml_convert.rb +99 -1
- data/lib/isodoc/iso/sections.rb +3 -8
- data/lib/isodoc/iso/word_convert.rb +2 -1
- data/lib/isodoc/iso/xref.rb +2 -0
- data/lib/metanorma/iso/processor.rb +0 -4
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +4 -3
- data/spec/asciidoctor-iso/cleanup_spec.rb +4 -4
- data/spec/asciidoctor-iso/inline_spec.rb +1 -1
- data/spec/asciidoctor-iso/refs_spec.rb +3 -3
- data/spec/asciidoctor-iso/section_spec.rb +9 -6
- data/spec/asciidoctor-iso/validate_spec.rb +13 -21
- data/spec/isodoc/amd_spec.rb +309 -153
- data/spec/isodoc/blocks_spec.rb +362 -28
- data/spec/isodoc/i18n_spec.rb +468 -108
- data/spec/isodoc/inline_spec.rb +99 -31
- data/spec/isodoc/iso_spec.rb +95 -29
- data/spec/isodoc/postproc_spec.rb +114 -149
- data/spec/isodoc/ref_spec.rb +176 -4
- data/spec/isodoc/section_spec.rb +148 -82
- data/spec/isodoc/table_spec.rb +142 -5
- data/spec/isodoc/terms_spec.rb +78 -53
- data/spec/isodoc/xref_spec.rb +831 -658
- data/spec/metanorma/processor_spec.rb +2 -1
- metadata +34 -13
data/spec/isodoc/inline_spec.rb
CHANGED
@@ -158,7 +158,7 @@ RSpec.describe IsoDoc do
|
|
158
158
|
<eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</stem>
|
159
159
|
</p>
|
160
160
|
</foreword></preface>
|
161
|
-
<bibliography><references id="_normative_references" obligation="informative" normative="true"><title>Normative
|
161
|
+
<bibliography><references id="_normative_references" obligation="informative" normative="true"><title>1<tab/>Normative references</title>
|
162
162
|
<bibitem id="ISO712" type="standard">
|
163
163
|
<title format="text/plain">Cereals and cereal products</title>
|
164
164
|
<docidentifier>ISO 712</docidentifier>
|
@@ -185,7 +185,7 @@ RSpec.describe IsoDoc do
|
|
185
185
|
<p class="zzSTDTitle1"/>
|
186
186
|
<div>
|
187
187
|
<h1>1  Normative references</h1>
|
188
|
-
<p id="ISO712" class="NormRef">ISO 712, <i>
|
188
|
+
<p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i></p>
|
189
189
|
</div>
|
190
190
|
</div>
|
191
191
|
</body>
|
@@ -194,7 +194,7 @@ RSpec.describe IsoDoc do
|
|
194
194
|
end
|
195
195
|
|
196
196
|
it "processes eref content" do
|
197
|
-
expect(xmlpp(IsoDoc::Iso::
|
197
|
+
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
198
198
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
199
199
|
<preface><foreword>
|
200
200
|
<p>
|
@@ -228,34 +228,102 @@ RSpec.describe IsoDoc do
|
|
228
228
|
</bibliography>
|
229
229
|
</iso-standard>
|
230
230
|
INPUT
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
231
|
+
<?xml version='1.0'?>
|
232
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
233
|
+
<preface>
|
234
|
+
<foreword>
|
235
|
+
<p>
|
236
|
+
<eref type='inline' bibitemid='IEV' citeas='IEV'>
|
237
|
+
<locality type='clause'>
|
238
|
+
<referenceFrom>1-2-3</referenceFrom>
|
239
|
+
</locality>
|
240
|
+
IEV, 1-2-3
|
241
|
+
</eref>
|
242
|
+
<eref type='inline' bibitemid='ISO712' citeas='ISO 712'>ISO 712</eref>
|
243
|
+
<eref type='inline' bibitemid='ISO712'>ISO 712</eref>
|
244
|
+
<eref type='inline' bibitemid='ISO712'>
|
245
|
+
<locality type='table'>
|
246
|
+
<referenceFrom>1</referenceFrom>
|
247
|
+
</locality>
|
248
|
+
ISO 712, Table 1
|
249
|
+
</eref>
|
250
|
+
<eref type='inline' bibitemid='ISO712'>
|
251
|
+
<locality type='table'>
|
252
|
+
<referenceFrom>1</referenceFrom>
|
253
|
+
<referenceTo>1</referenceTo>
|
254
|
+
</locality>
|
255
|
+
ISO 712, Table 1–1
|
256
|
+
</eref>
|
257
|
+
<eref type='inline' bibitemid='ISO712'>
|
258
|
+
<locality type='clause'>
|
259
|
+
<referenceFrom>1</referenceFrom>
|
260
|
+
</locality>
|
261
|
+
<locality type='table'>
|
262
|
+
<referenceFrom>1</referenceFrom>
|
263
|
+
</locality>
|
264
|
+
ISO 712, Clause 1, Table 1
|
265
|
+
</eref>
|
266
|
+
<eref type='inline' bibitemid='ISO712'>
|
267
|
+
<locality type='clause'>
|
268
|
+
<referenceFrom>1</referenceFrom>
|
269
|
+
</locality>
|
270
|
+
<locality type='list'>
|
271
|
+
<referenceFrom>a</referenceFrom>
|
272
|
+
</locality>
|
273
|
+
ISO 712, Clause 1 a)
|
274
|
+
</eref>
|
275
|
+
<eref type='inline' bibitemid='ISO712'>
|
276
|
+
<locality type='clause'>
|
277
|
+
<referenceFrom>1</referenceFrom>
|
278
|
+
</locality>
|
279
|
+
ISO 712, Clause 1
|
280
|
+
</eref>
|
281
|
+
<eref type='inline' bibitemid='ISO712'>
|
282
|
+
<locality type='clause'>
|
283
|
+
<referenceFrom>1.5</referenceFrom>
|
284
|
+
</locality>
|
285
|
+
ISO 712, 1.5
|
286
|
+
</eref>
|
287
|
+
<eref type='inline' bibitemid='ISO712'>
|
288
|
+
<locality type='table'>
|
289
|
+
<referenceFrom>1</referenceFrom>
|
290
|
+
</locality>
|
291
|
+
A
|
292
|
+
</eref>
|
293
|
+
<eref type='inline' bibitemid='ISO712'>
|
294
|
+
<locality type='whole'/>
|
295
|
+
ISO 712, Whole of text
|
296
|
+
</eref>
|
297
|
+
<eref type='inline' bibitemid='ISO712'>
|
298
|
+
<locality type='locality:prelude'>
|
299
|
+
<referenceFrom>7</referenceFrom>
|
300
|
+
</locality>
|
301
|
+
ISO 712, Prelude 7
|
302
|
+
</eref>
|
303
|
+
<eref type='inline' bibitemid='ISO712' citeas='ISO 712'>A</eref>
|
304
|
+
</p>
|
305
|
+
</foreword>
|
306
|
+
</preface>
|
307
|
+
<bibliography>
|
308
|
+
<references id='_normative_references' obligation='informative' normative='true'>
|
309
|
+
<title depth='1'>
|
310
|
+
1
|
311
|
+
<tab/>
|
312
|
+
Normative References
|
313
|
+
</title>
|
314
|
+
<bibitem id='ISO712' type='standard'>
|
315
|
+
<title format='text/plain'>Cereals and cereal products</title>
|
316
|
+
<docidentifier>ISO 712</docidentifier>
|
317
|
+
<contributor>
|
318
|
+
<role type='publisher'/>
|
319
|
+
<organization>
|
320
|
+
<abbreviation>ISO</abbreviation>
|
321
|
+
</organization>
|
322
|
+
</contributor>
|
323
|
+
</bibitem>
|
324
|
+
</references>
|
325
|
+
</bibliography>
|
326
|
+
</iso-standard>
|
259
327
|
OUTPUT
|
260
328
|
end
|
261
329
|
|
data/spec/isodoc/iso_spec.rb
CHANGED
@@ -92,11 +92,11 @@ RSpec.describe IsoDoc::Iso do
|
|
92
92
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
93
93
|
<preface><foreword>
|
94
94
|
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">
|
95
|
-
<eref bibitemid="IEV"
|
96
|
-
<eref bibitemid="ISO20483"
|
95
|
+
<eref bibitemid="IEV">IEV</eref>
|
96
|
+
<eref bibitemid="ISO20483">ISO 20483</eref>
|
97
97
|
</p>
|
98
98
|
</foreword></preface>
|
99
|
-
<bibliography><references id="_normative_references" obligation="informative" normative="true"><title>Normative References</title>
|
99
|
+
<bibliography><references id="_normative_references" obligation="informative" normative="true"><title>1<tab/>Normative References</title>
|
100
100
|
<bibitem type="international-standard" id="IEV">
|
101
101
|
<title format="text/plain" language="en" script="Latn">Electropedia:
|
102
102
|
The World's Online Electrotechnical Vocabulary</title>
|
@@ -153,8 +153,8 @@ RSpec.describe IsoDoc::Iso do
|
|
153
153
|
</div>
|
154
154
|
<p class="zzSTDTitle1"/>
|
155
155
|
<div>
|
156
|
-
<h1>1  Normative
|
157
|
-
<p id="ISO20483" class="NormRef">ISO 20483, <i>
|
156
|
+
<h1>1  Normative References</h1>
|
157
|
+
<p id="ISO20483" class="NormRef">ISO 20483, <i>Cereals and pulses</i></p>
|
158
158
|
</div>
|
159
159
|
</div>
|
160
160
|
</body>
|
@@ -163,8 +163,8 @@ RSpec.describe IsoDoc::Iso do
|
|
163
163
|
OUTPUT
|
164
164
|
end
|
165
165
|
|
166
|
-
|
167
|
-
expect(xmlpp(IsoDoc::Iso::
|
166
|
+
it "processes examples (Presentation XML)" do
|
167
|
+
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
168
168
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
169
169
|
<preface><foreword>
|
170
170
|
<example id="samplecode">
|
@@ -173,6 +173,33 @@ end
|
|
173
173
|
</example>
|
174
174
|
</foreword></preface>
|
175
175
|
</iso-standard>
|
176
|
+
INPUT
|
177
|
+
<?xml version='1.0'?>
|
178
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
179
|
+
<preface>
|
180
|
+
<foreword>
|
181
|
+
<example id='samplecode'>
|
182
|
+
<name>EXAMPLE — Title</name>
|
183
|
+
<p>Hello</p>
|
184
|
+
</example>
|
185
|
+
</foreword>
|
186
|
+
</preface>
|
187
|
+
</iso-standard>
|
188
|
+
OUTPUT
|
189
|
+
end
|
190
|
+
|
191
|
+
it "processes examples (HTML)" do
|
192
|
+
expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
193
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
194
|
+
<preface>
|
195
|
+
<foreword>
|
196
|
+
<example id='samplecode'>
|
197
|
+
<name>EXAMPLE — Title</name>
|
198
|
+
<p>Hello</p>
|
199
|
+
</example>
|
200
|
+
</foreword>
|
201
|
+
</preface>
|
202
|
+
</iso-standard>
|
176
203
|
INPUT
|
177
204
|
#{HTML_HDR}
|
178
205
|
<br/>
|
@@ -189,9 +216,8 @@ end
|
|
189
216
|
OUTPUT
|
190
217
|
end
|
191
218
|
|
192
|
-
|
193
|
-
|
194
|
-
expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
219
|
+
it "processes sequences of examples (Presentation XML)" do
|
220
|
+
expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
195
221
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
196
222
|
<preface><foreword>
|
197
223
|
<example id="samplecode">
|
@@ -203,6 +229,41 @@ end
|
|
203
229
|
</example>
|
204
230
|
</foreword></preface>
|
205
231
|
</iso-standard>
|
232
|
+
INPUT
|
233
|
+
<?xml version='1.0'?>
|
234
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
235
|
+
<preface>
|
236
|
+
<foreword>
|
237
|
+
<example id='samplecode'>
|
238
|
+
<name>EXAMPLE 1</name>
|
239
|
+
<quote>Hello</quote>
|
240
|
+
</example>
|
241
|
+
<example id='samplecode2'>
|
242
|
+
<name>EXAMPLE 2 — Title</name>
|
243
|
+
<p>Hello</p>
|
244
|
+
</example>
|
245
|
+
</foreword>
|
246
|
+
</preface>
|
247
|
+
</iso-standard>
|
248
|
+
OUTPUT
|
249
|
+
end
|
250
|
+
|
251
|
+
it "processes sequences of examples (HTML)" do
|
252
|
+
expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
253
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
254
|
+
<preface>
|
255
|
+
<foreword>
|
256
|
+
<example id='samplecode'>
|
257
|
+
<name>EXAMPLE 1</name>
|
258
|
+
<quote>Hello</quote>
|
259
|
+
</example>
|
260
|
+
<example id='samplecode2'>
|
261
|
+
<name>EXAMPLE 2 — Title</name>
|
262
|
+
<p>Hello</p>
|
263
|
+
</example>
|
264
|
+
</foreword>
|
265
|
+
</preface>
|
266
|
+
</iso-standard>
|
206
267
|
INPUT
|
207
268
|
#{HTML_HDR}
|
208
269
|
<br/>
|
@@ -225,14 +286,16 @@ end
|
|
225
286
|
|
226
287
|
it "processes examples (Word)" do
|
227
288
|
expect(xmlpp(IsoDoc::Iso::WordConvert.new({}).convert("test", <<~"INPUT", true).sub(/^.*<body/m, "<body").sub(%r{</body>.*$}m, "</body>"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
228
|
-
<iso-standard xmlns=
|
229
|
-
|
230
|
-
<
|
231
|
-
|
232
|
-
|
233
|
-
</
|
234
|
-
|
235
|
-
</
|
289
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
290
|
+
<preface>
|
291
|
+
<foreword>
|
292
|
+
<example id='samplecode'>
|
293
|
+
<name>EXAMPLE — Title</name>
|
294
|
+
<p>Hello</p>
|
295
|
+
</example>
|
296
|
+
</foreword>
|
297
|
+
</preface>
|
298
|
+
</iso-standard>
|
236
299
|
INPUT
|
237
300
|
<body lang="EN-US" link="blue" vlink="#954F72">
|
238
301
|
<div class="WordSection1">
|
@@ -268,17 +331,20 @@ end
|
|
268
331
|
|
269
332
|
it "processes sequences of examples (Word)" do
|
270
333
|
expect(IsoDoc::Iso::WordConvert.new({}).convert("test", <<~"INPUT", true).sub(/^.*<body/m, "<body").sub(%r{</body>.*$}m, "</body>")).to be_equivalent_to <<~"OUTPUT"
|
271
|
-
<iso-standard xmlns=
|
272
|
-
|
273
|
-
<
|
274
|
-
|
275
|
-
</
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
</
|
280
|
-
|
281
|
-
|
334
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
335
|
+
<preface>
|
336
|
+
<foreword>
|
337
|
+
<example id='samplecode'>
|
338
|
+
<name>EXAMPLE 1</name>
|
339
|
+
<quote>Hello</quote>
|
340
|
+
</example>
|
341
|
+
<example id='samplecode2'>
|
342
|
+
<name>EXAMPLE 2 — Title</name>
|
343
|
+
<p>Hello</p>
|
344
|
+
</example>
|
345
|
+
</foreword>
|
346
|
+
</preface>
|
347
|
+
</iso-standard>
|
282
348
|
INPUT
|
283
349
|
<body lang="EN-US" link="blue" vlink="#954F72">
|
284
350
|
<div class="WordSection1">
|
@@ -2,6 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "fileutils"
|
3
3
|
|
4
4
|
RSpec.describe IsoDoc do
|
5
|
+
|
5
6
|
it "generates file based on string input" do
|
6
7
|
FileUtils.rm_f "test.doc"
|
7
8
|
FileUtils.rm_f "test.html"
|
@@ -105,10 +106,10 @@ RSpec.describe IsoDoc do
|
|
105
106
|
<annex id="P" inline-header="false" obligation="normative">
|
106
107
|
<title>Annex</title>
|
107
108
|
<clause id="Q" inline-header="false" obligation="normative">
|
108
|
-
<title>Annex A.1</title>
|
109
|
+
<title>A.1<tab/>Annex A.1</title>
|
109
110
|
</clause>
|
110
111
|
<appendix id="Q2" inline-header="false" obligation="normative">
|
111
|
-
<title>An Appendix</title>
|
112
|
+
<title>Appendix 1<tab/>An Appendix</title>
|
112
113
|
</appendix>
|
113
114
|
</annex>
|
114
115
|
</iso-standard>
|
@@ -120,7 +121,7 @@ RSpec.describe IsoDoc do
|
|
120
121
|
<p class="zzSTDTitle1"></p>
|
121
122
|
<p class="MsoNormal"><br clear="all" style="mso-special-character:line-break;page-break-before:always"/></p>
|
122
123
|
<div class="Section3"><a name="P" id="P"></a>
|
123
|
-
<h1 class="Annex"
|
124
|
+
<h1 class="Annex">Annex</h1>
|
124
125
|
<div><a name="Q" id="Q"></a>
|
125
126
|
<p class="h2Annex">A.1<span style="mso-tab-count:1">  </span>Annex A.1</p>
|
126
127
|
</div>
|
@@ -138,12 +139,14 @@ RSpec.describe IsoDoc do
|
|
138
139
|
IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
|
139
140
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
140
141
|
<sections>
|
141
|
-
<terms id="_terms_and_definitions" obligation="normative"><title>Terms and Definitions</title>
|
142
|
+
<terms id="_terms_and_definitions" obligation="normative"><title>1<tab/>Terms and Definitions</title>
|
142
143
|
|
143
|
-
<term id="paddy1"
|
144
|
+
<term id="paddy1">
|
145
|
+
<name>1.1</name>
|
146
|
+
<preferred>paddy</preferred>
|
144
147
|
<definition><p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">rice retaining its husk after threshing</p></definition>
|
145
148
|
<termsource status="modified">
|
146
|
-
<origin bibitemid="ISO7301" type="inline" citeas="ISO 7301:2011"><locality type="clause"><referenceFrom>3.1</referenceFrom></locality
|
149
|
+
<origin bibitemid="ISO7301" type="inline" citeas="ISO 7301:2011"><locality type="clause"><referenceFrom>3.1</referenceFrom></locality>ISO 7301:2011, 3.1</origin>
|
147
150
|
<modification>
|
148
151
|
<p id="_e73a417d-ad39-417d-a4c8-20e4e2529489">The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here</p>
|
149
152
|
</modification>
|
@@ -190,14 +193,14 @@ RSpec.describe IsoDoc do
|
|
190
193
|
IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css", wordintropage: "spec/assets/wordintro.html"}).convert("test", <<~"INPUT", false)
|
191
194
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
192
195
|
<sections>
|
193
|
-
<clause id="A" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
|
196
|
+
<clause id="A" inline-header="false" obligation="normative"><title>1<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
|
194
197
|
|
195
|
-
<title>Introduction<bookmark id="Q"/> to this<fn reference="1">
|
198
|
+
<title>1.1<tab/>Introduction<bookmark id="Q"/> to this<fn reference="1">
|
196
199
|
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
|
197
200
|
</fn></title>
|
198
201
|
</clause>
|
199
202
|
<clause id="O" inline-header="false" obligation="normative">
|
200
|
-
<title>Clause 4.2</title>
|
203
|
+
<title>1.2<tab/>Clause 4.2</title>
|
201
204
|
<p>A<fn reference="1">
|
202
205
|
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
|
203
206
|
</fn></p>
|
@@ -263,21 +266,21 @@ RSpec.describe IsoDoc do
|
|
263
266
|
OUTPUT
|
264
267
|
end
|
265
268
|
|
266
|
-
it "reorders footnote numbers
|
269
|
+
it "reorders footnote numbers" do
|
267
270
|
FileUtils.rm_f "test.html"
|
268
|
-
|
271
|
+
input = <<~INPUT
|
269
272
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
270
273
|
<sections>
|
271
|
-
<clause id="A" inline-header="false" obligation="normative"><title>Clause 4</title><fn reference="3">
|
274
|
+
<clause id="A" inline-header="false" obligation="normative"><title>1<tab/>Clause 4</title><fn reference="3">
|
272
275
|
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">This is a footnote.</p>
|
273
276
|
</fn><clause id="N" inline-header="false" obligation="normative">
|
274
277
|
|
275
|
-
<title>Introduction to this<fn reference="2">
|
278
|
+
<title>1.1<tab/>Introduction to this<fn reference="2">
|
276
279
|
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
|
277
280
|
</fn></title>
|
278
281
|
</clause>
|
279
282
|
<clause id="O" inline-header="false" obligation="normative">
|
280
|
-
<title>Clause 4.2</title>
|
283
|
+
<title>1.2<tab/>Clause 4.2</title>
|
281
284
|
<p>A<fn reference="1">
|
282
285
|
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
|
283
286
|
</fn></p>
|
@@ -285,6 +288,7 @@ RSpec.describe IsoDoc do
|
|
285
288
|
</sections>
|
286
289
|
</iso-standard>
|
287
290
|
INPUT
|
291
|
+
IsoDoc::Iso::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css", wordintropage: "spec/assets/wordintro.html"}).convert("test", input, false)
|
288
292
|
html = File.read("test.html", encoding: "UTF-8").sub(/^.*<main class="main-section">/m, '<main xmlns:epub="epub" class="main-section">').
|
289
293
|
sub(%r{</main>.*$}m, "</main>")
|
290
294
|
expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
@@ -315,30 +319,9 @@ RSpec.describe IsoDoc do
|
|
315
319
|
|
316
320
|
</main>
|
317
321
|
OUTPUT
|
318
|
-
end
|
319
322
|
|
320
|
-
it "renders footnote numbers in Word" do
|
321
323
|
FileUtils.rm_f "test.doc"
|
322
|
-
IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css", wordintropage: "spec/assets/wordintro.html"}).convert("test",
|
323
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
324
|
-
<sections>
|
325
|
-
<clause id="A" inline-header="false" obligation="normative"><title>Clause 4</title><fn reference="3">
|
326
|
-
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">This is a footnote.</p>
|
327
|
-
</fn><clause id="N" inline-header="false" obligation="normative">
|
328
|
-
|
329
|
-
<title>Introduction to this<fn reference="2">
|
330
|
-
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
|
331
|
-
</fn></title>
|
332
|
-
</clause>
|
333
|
-
<clause id="O" inline-header="false" obligation="normative">
|
334
|
-
<title>Clause 4.2</title>
|
335
|
-
<p>A<fn reference="1">
|
336
|
-
<p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
|
337
|
-
</fn></p>
|
338
|
-
</clause></clause>
|
339
|
-
</sections>
|
340
|
-
</iso-standard>
|
341
|
-
INPUT
|
324
|
+
IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css", wordintropage: "spec/assets/wordintro.html"}).convert("test", input, false)
|
342
325
|
html = File.read("test.doc", encoding: "UTF-8").sub(/^.*<div class="WordSection3"/m, '<body xmlns:epub="epub"><div class="WordSection3"').
|
343
326
|
sub(%r{</body>.*$}m, "</body>").gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref")
|
344
327
|
expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
@@ -442,42 +425,6 @@ RSpec.describe IsoDoc do
|
|
442
425
|
end
|
443
426
|
|
444
427
|
|
445
|
-
it "moves images in HTML" do
|
446
|
-
FileUtils.rm_f "test.html"
|
447
|
-
FileUtils.rm_rf "_images"
|
448
|
-
FileUtils.rm_rf "test_htmlimages"
|
449
|
-
IsoDoc::Iso::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
|
450
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
451
|
-
<preface><foreword>
|
452
|
-
<figure id="_">
|
453
|
-
<name>Split-it-right sample divider</name>
|
454
|
-
<image src="spec/assets/rice_image1.png" id="_" mimetype="image/png"/>
|
455
|
-
<image src="spec/assets/rice_image1.png" id="_" width="20000" height="300000" mimetype="image/png"/>
|
456
|
-
<image src="spec/assets/rice_image1.png" id="_" width="99" height="auto" mimetype="image/png"/>
|
457
|
-
</figure>
|
458
|
-
</foreword></preface>
|
459
|
-
</iso-standard>
|
460
|
-
INPUT
|
461
|
-
html = File.read("test.html", encoding: "UTF-8").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
|
462
|
-
sub(%r{</main>.*$}m, "</main>")
|
463
|
-
expect(`ls test_htmlimages`).to match(/\.png$/)
|
464
|
-
expect(xmlpp(html.gsub(/\/[0-9a-f-]+\.png/, "/_.png"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
465
|
-
<main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
|
466
|
-
<br />
|
467
|
-
<div>
|
468
|
-
<h1 class="ForewordTitle" id="toc0">Foreword</h1>
|
469
|
-
<div id="_" class="figure">
|
470
|
-
<img src="test_htmlimages/_.png" height="776" width="922" />
|
471
|
-
<img src="test_htmlimages/_.png" height="800" width="53" />
|
472
|
-
<img src="test_htmlimages/_.png" height="83" width="99" />
|
473
|
-
<p class="FigureTitle" style="text-align:center;">Figure 1 — Split-it-right sample divider</p></div>
|
474
|
-
</div>
|
475
|
-
<p class="zzSTDTitle1"></p>
|
476
|
-
</main>
|
477
|
-
OUTPUT
|
478
|
-
|
479
|
-
end
|
480
|
-
|
481
428
|
it "processes IsoXML terms for HTML" do
|
482
429
|
FileUtils.rm_f "test.html"
|
483
430
|
FileUtils.rm_f "test.doc"
|
@@ -486,7 +433,9 @@ RSpec.describe IsoDoc do
|
|
486
433
|
<sections>
|
487
434
|
<terms id="_terms_and_definitions" obligation="normative"><title>Terms and Definitions</title>
|
488
435
|
|
489
|
-
<term id="paddy1"
|
436
|
+
<term id="paddy1">
|
437
|
+
<name>1.1</name>
|
438
|
+
<preferred>paddy</preferred>
|
490
439
|
<domain>rice</domain>
|
491
440
|
<definition><p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">rice retaining its husk after threshing</p></definition>
|
492
441
|
<termexample id="_bd57bbf1-f948-4bae-b0ce-73c00431f892">
|
@@ -508,7 +457,9 @@ RSpec.describe IsoDoc do
|
|
508
457
|
</modification>
|
509
458
|
</termsource></term>
|
510
459
|
|
511
|
-
<term id="paddy"
|
460
|
+
<term id="paddy">
|
461
|
+
<name>1.2</name>
|
462
|
+
<preferred>paddy</preferred><admitted>paddy rice</admitted>
|
512
463
|
<admitted>rough rice</admitted>
|
513
464
|
<deprecates>cargo rice</deprecates>
|
514
465
|
<definition><p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">rice retaining its husk after threshing</p></definition>
|
@@ -561,19 +512,11 @@ RSpec.describe IsoDoc do
|
|
561
512
|
<br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
|
562
513
|
</p>
|
563
514
|
<div class="Section3"><a name="P" id="P"></a>
|
564
|
-
<h1 class='Annex'>
|
565
|
-
<b>Annex A</b>
|
566
|
-
<br/>
|
567
|
-
(normative)
|
568
|
-
<br/>
|
569
|
-
<br/>
|
570
|
-
<b/>
|
571
|
-
</h1>
|
572
515
|
<div class="example"><a name="_63112cbc-cde0-435f-9553-e0b8c4f5851c" id="_63112cbc-cde0-435f-9553-e0b8c4f5851c"></a>
|
573
|
-
<p class="example"><span
|
516
|
+
<p class="example"><span style="mso-tab-count:1">  </span>'1M', '01M', and '0001M' all describe the calendar month January.</p>
|
574
517
|
</div>
|
575
518
|
<div class="example"><a name="_63112cbc-cde0-435f-9553-e0b8c4f5851d" id="_63112cbc-cde0-435f-9553-e0b8c4f5851d"></a>
|
576
|
-
<p class="example"><span
|
519
|
+
<p class="example"><span style="mso-tab-count:1">  </span>'2M', '02M', and '0002M' all describe the calendar month February.</p>
|
577
520
|
</div>
|
578
521
|
</div>
|
579
522
|
</div>
|
@@ -606,19 +549,11 @@ RSpec.describe IsoDoc do
|
|
606
549
|
<br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
|
607
550
|
</p>
|
608
551
|
<div class="Section3"><a name="P" id="P"></a>
|
609
|
-
<h1 class='Annex'>
|
610
|
-
<b>Annex A</b>
|
611
|
-
<br/>
|
612
|
-
(normative)
|
613
|
-
<br/>
|
614
|
-
<br/>
|
615
|
-
<b/>
|
616
|
-
</h1>
|
617
552
|
<div class="figure"><a name="samplecode" id="samplecode"></a>
|
618
553
|
<p class="MsoNormal">Hello</p>
|
619
554
|
<p class="MsoNormal">Key</p>
|
620
555
|
<p style='page-break-after:avoid;' class='MsoNormal'><b>Key</b></p><div class="figdl" style="page-break-after:avoid;"><table class="figdl"><tr><td valign="top" align="left"><p align="left" style="margin-left:0pt;text-align:left;" class="MsoNormal"><p class="MsoNormal">A</p></p></td><td valign="top"><p class="MsoNormal">B</p></td></tr></table></div>
|
621
|
-
<p class="FigureTitle" style="text-align:center;"
|
556
|
+
<p class="FigureTitle" style="text-align:center;"/></div>
|
622
557
|
</div>
|
623
558
|
</div>
|
624
559
|
|
@@ -626,9 +561,7 @@ RSpec.describe IsoDoc do
|
|
626
561
|
end
|
627
562
|
|
628
563
|
it "processes boilerplate" do
|
629
|
-
|
630
|
-
FileUtils.rm_f "test.html"
|
631
|
-
IsoDoc::Iso::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
|
564
|
+
input = <<~INPUT
|
632
565
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
633
566
|
<bibdata type="standard">
|
634
567
|
<status><stage>30</stage></status>
|
@@ -662,8 +595,7 @@ I am the Walrus.
|
|
662
595
|
<clause>
|
663
596
|
<title>Warning for Stuff</title>
|
664
597
|
|
665
|
-
<p>This
|
666
|
-
document is not an ISO International Standard. It is distributed for review and
|
598
|
+
<p>This document is not an ISO International Standard. It is distributed for review and
|
667
599
|
comment. It is subject to change without notice and may not be referred to as
|
668
600
|
an International Standard.</p>
|
669
601
|
|
@@ -677,67 +609,100 @@ documentation.</p>
|
|
677
609
|
</boilerplate>
|
678
610
|
</iso-standard>
|
679
611
|
INPUT
|
680
|
-
word = File.read("test.html", encoding: "UTF-8")
|
681
|
-
expect((word)).to include '<h1 class="IntroTitle">Warning for Stuff</h1>'
|
682
|
-
expect((word)).to include "I am the Walrus."
|
683
|
-
end
|
684
612
|
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
613
|
+
presxml = <<~OUTPUT
|
614
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
615
|
+
<bibdata type="standard">
|
616
|
+
<status><stage>30</stage></status>
|
617
|
+
</bibdata>
|
618
|
+
<boilerplate>
|
619
|
+
<copyright-statement>
|
620
|
+
<clause inline-header="true">
|
621
|
+
<p id="boilerplate-year">
|
622
|
+
© ISO 2019, Published in Switzerland
|
623
|
+
</p>
|
624
|
+
|
625
|
+
<p id="boilerplate-message">
|
626
|
+
I am the Walrus.
|
627
|
+
</p>
|
628
|
+
|
629
|
+
<p id="boilerplate-name">ISO copyright office</p>
|
630
|
+
<p id="boilerplate-address" align="left">
|
631
|
+
ISO copyright office<br/>
|
632
|
+
Ch. de Blandonnet 8 ?~@? CP 401<br/>
|
633
|
+
CH-1214 Vernier, Geneva, Switzerland<br/>
|
634
|
+
Tel. + 41 22 749 01 11<br/>
|
635
|
+
Fax + 41 22 749 09 47<br/>
|
636
|
+
copyright@iso.org<br/>
|
637
|
+
www.iso.org
|
638
|
+
</p>
|
639
|
+
</clause>
|
640
|
+
</copyright-statement>
|
697
641
|
|
698
|
-
<p id="boilerplate-message">No soup for you</p>
|
699
642
|
|
700
|
-
|
701
|
-
|
702
|
-
</
|
703
|
-
</copyright-statement>
|
643
|
+
<license-statement>
|
644
|
+
<clause>
|
645
|
+
<title depth="1">Warning for Stuff</title>
|
704
646
|
|
647
|
+
<p>This document is not an ISO International Standard. It is distributed for review and
|
648
|
+
comment. It is subject to change without notice and may not be referred to as
|
649
|
+
an International Standard.</p>
|
705
650
|
|
706
|
-
|
707
|
-
|
708
|
-
|
651
|
+
<p>Recipients
|
652
|
+
of this draft are invited to submit, with their comments, notification of any
|
653
|
+
relevant patent rights of which they are aware and to provide supporting
|
654
|
+
documentation.</p>
|
655
|
+
</clause>
|
656
|
+
</license-statement>
|
709
657
|
|
710
|
-
|
711
|
-
</
|
712
|
-
|
658
|
+
</boilerplate>
|
659
|
+
</iso-standard>
|
660
|
+
OUTPUT
|
713
661
|
|
714
|
-
|
715
|
-
|
716
|
-
|
662
|
+
FileUtils.rm_f "test.doc"
|
663
|
+
FileUtils.rm_f "test.html"
|
664
|
+
expect((IsoDoc::Iso::PresentationXMLConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
|
665
|
+
IsoDoc::Iso::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", presxml, false)
|
666
|
+
word = File.read("test.html", encoding: "UTF-8")
|
667
|
+
expect((word)).to include '<h1 class="IntroTitle">Warning for Stuff</h1>'
|
668
|
+
expect((word)).to include "I am the Walrus."
|
669
|
+
IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", presxml, false)
|
717
670
|
word = File.read("test.doc", encoding: "UTF-8")
|
718
671
|
expect(xmlpp(word.sub(%r{^.*<div class="boilerplate-copyright">}m, '<div class="boilerplate-copyright">').sub(%r{</div>.*$}m, '</div></div>'))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
672
|
+
<div class='boilerplate-copyright'>
|
673
|
+
<div>
|
674
|
+
<p class='zzCopyright'>
|
675
|
+
<a name='boilerplate-year' id='boilerplate-year'/>
|
676
|
+
© ISO 2019, Published in Switzerland
|
677
|
+
</p>
|
678
|
+
<p class='zzCopyright1'>
|
679
|
+
<a name='boilerplate-message' id='boilerplate-message'/>
|
680
|
+
I am the Walrus.
|
681
|
+
</p>
|
682
|
+
<p class='zzCopyright'>
|
683
|
+
<a name='boilerplate-name' id='boilerplate-name'/>
|
684
|
+
ISO copyright office
|
685
|
+
</p>
|
686
|
+
<p style='text-align:left;' align='left' class='zzAddress'>
|
687
|
+
<a name='boilerplate-address' id='boilerplate-address'/>
|
688
|
+
ISO copyright office
|
689
|
+
<br/>
|
690
|
+
Ch. de Blandonnet 8 ?~@? CP 401
|
691
|
+
<br/>
|
692
|
+
CH-1214 Vernier, Geneva, Switzerland
|
693
|
+
<br/>
|
694
|
+
Tel. + 41 22 749 01 11
|
695
|
+
<br/>
|
696
|
+
Fax + 41 22 749 09 47
|
697
|
+
<br/>
|
698
|
+
copyright@iso.org
|
699
|
+
<br/>
|
700
|
+
www.iso.org
|
701
|
+
</p>
|
702
|
+
</div>
|
703
|
+
</div>
|
739
704
|
OUTPUT
|
740
|
-
|
705
|
+
expect(word).to include '<p class="zzWarning">This document is not an ISO International Standard'
|
741
706
|
end
|
742
707
|
|
743
708
|
end
|