metanorma-iso 1.7.0 → 1.8.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +11 -41
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +6 -2
  5. data/lib/asciidoctor/iso/base.rb +12 -12
  6. data/lib/asciidoctor/iso/biblio.rng +4 -6
  7. data/lib/asciidoctor/iso/cleanup.rb +1 -1
  8. data/lib/asciidoctor/iso/front.rb +1 -1
  9. data/lib/asciidoctor/iso/front_id.rb +30 -25
  10. data/lib/asciidoctor/iso/isodoc.rng +235 -3
  11. data/lib/asciidoctor/iso/isostandard-amd.rng +3 -0
  12. data/lib/asciidoctor/iso/isostandard.rng +17 -97
  13. data/lib/asciidoctor/iso/validate.rb +1 -0
  14. data/lib/asciidoctor/iso/validate_title.rb +21 -13
  15. data/lib/isodoc/iso/base_convert.rb +11 -0
  16. data/lib/isodoc/iso/html/style-human.css +7 -0
  17. data/lib/isodoc/iso/html/style-iso.css +7 -0
  18. data/lib/isodoc/iso/html_convert.rb +0 -1
  19. data/lib/isodoc/iso/i18n-en.yaml +4 -0
  20. data/lib/isodoc/iso/i18n-fr.yaml +4 -0
  21. data/lib/isodoc/iso/i18n-zh-Hans.yaml +4 -0
  22. data/lib/isodoc/iso/index.rb +140 -0
  23. data/lib/isodoc/iso/iso.amendment.xsl +1010 -324
  24. data/lib/isodoc/iso/iso.international-standard.xsl +1010 -324
  25. data/lib/isodoc/iso/presentation_xml_convert.rb +32 -25
  26. data/lib/isodoc/iso/word_convert.rb +0 -1
  27. data/lib/isodoc/iso/xref.rb +13 -5
  28. data/lib/metanorma/iso/version.rb +1 -1
  29. data/metanorma-iso.gemspec +8 -8
  30. data/spec/asciidoctor/amd_spec.rb +696 -0
  31. data/spec/asciidoctor/base_spec.rb +704 -0
  32. data/spec/asciidoctor/blocks_spec.rb +527 -0
  33. data/spec/asciidoctor/cleanup_spec.rb +1134 -0
  34. data/spec/asciidoctor/inline_spec.rb +195 -0
  35. data/spec/asciidoctor/lists_spec.rb +197 -0
  36. data/spec/asciidoctor/refs_spec.rb +375 -0
  37. data/spec/asciidoctor/section_spec.rb +393 -0
  38. data/spec/asciidoctor/table_spec.rb +329 -0
  39. data/spec/asciidoctor/validate_spec.rb +1572 -0
  40. data/spec/isodoc/amd_spec.rb +967 -946
  41. data/spec/isodoc/blocks_spec.rb +530 -507
  42. data/spec/isodoc/i18n_spec.rb +953 -911
  43. data/spec/isodoc/inline_spec.rb +355 -293
  44. data/spec/isodoc/iso_spec.rb +338 -314
  45. data/spec/isodoc/metadata_spec.rb +392 -382
  46. data/spec/isodoc/postproc_spec.rb +837 -657
  47. data/spec/isodoc/ref_spec.rb +374 -331
  48. data/spec/isodoc/section_spec.rb +821 -519
  49. data/spec/isodoc/table_spec.rb +472 -411
  50. data/spec/isodoc/terms_spec.rb +209 -185
  51. data/spec/isodoc/xref_spec.rb +1370 -1236
  52. data/spec/metanorma/processor_spec.rb +28 -26
  53. data/spec/spec_helper.rb +186 -189
  54. metadata +65 -67
  55. data/.rubocop.ribose.yml +0 -66
  56. data/lib/isodoc/iso/html/scripts.html +0 -178
  57. data/spec/asciidoctor-iso/amd_spec.rb +0 -694
  58. data/spec/asciidoctor-iso/base_spec.rb +0 -713
  59. data/spec/asciidoctor-iso/blocks_spec.rb +0 -482
  60. data/spec/asciidoctor-iso/cleanup_spec.rb +0 -1025
  61. data/spec/asciidoctor-iso/inline_spec.rb +0 -170
  62. data/spec/asciidoctor-iso/lists_spec.rb +0 -190
  63. data/spec/asciidoctor-iso/refs_spec.rb +0 -317
  64. data/spec/asciidoctor-iso/section_spec.rb +0 -362
  65. data/spec/asciidoctor-iso/table_spec.rb +0 -313
  66. data/spec/asciidoctor-iso/validate_spec.rb +0 -1619
  67. data/spec/assets/xref_error.adoc +0 -7
@@ -2,330 +2,392 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
4
  it "processes inline formatting" do
5
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
6
- <iso-standard xmlns="http://riboseinc.com/isoxml">
7
- <preface><foreword>
8
- <p>
9
- <em>A</em> <strong>B</strong> <sup>C</sup> <sub>D</sub> <tt>E</tt>
10
- <strike>F</strike> <smallcap>G</smallcap> <br/> <hr/>
11
- <bookmark id="H"/> <pagebreak/>
12
- </p>
13
- </foreword></preface>
14
- <sections>
15
- </iso-standard>
5
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
6
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
7
+ <preface>
8
+ <foreword>
9
+ <p>
10
+ <em>A</em>
11
+ <strong>B</strong>
12
+ <sup>C</sup>
13
+ <sub>D</sub>
14
+ <tt>E</tt>
15
+ <strike>F</strike>
16
+ <smallcap>G</smallcap>
17
+ <br/>
18
+ <hr/>
19
+ <bookmark id="H"/>
20
+ <pagebreak/>
21
+ </p>
22
+ </foreword>
23
+ </preface>
24
+ <sections>
25
+ </iso-standard>
16
26
  INPUT
17
- #{HTML_HDR}
18
- <br/>
19
- <div>
20
- <h1 class="ForewordTitle">Foreword</h1>
21
- <p>
22
- <i>A</i> <b>B</b> <sup>C</sup> <sub>D</sub> <tt>E</tt>
23
- <s>F</s> <span style="font-variant:small-caps;">G</span> <br/> <hr/>
24
- <a id="H"/> <br/>
25
- </p>
26
- </div>
27
- <p class="zzSTDTitle1"/>
28
- </div>
29
- </body>
30
- </html>
27
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
28
+ #{HTML_HDR}
29
+ <br/>
30
+ <div>
31
+ <h1 class="ForewordTitle">Foreword</h1>
32
+ <p>
33
+ <i>A</i>
34
+ <b>B</b>
35
+ <sup>C</sup>
36
+ <sub>D</sub>
37
+ <tt>E</tt>
38
+ <s>F</s>
39
+ <span style="font-variant:small-caps;">G</span>
40
+ <br/>
41
+ <hr/>
42
+ <a id="H"/>
43
+ <br/>
44
+ </p>
45
+ </div>
46
+ <p class="zzSTDTitle1"/>
47
+ </div>
48
+ </body>
49
+ </html>
31
50
  OUTPUT
32
51
  end
33
52
 
34
53
  it "processes links" do
35
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
36
- <iso-standard xmlns="http://riboseinc.com/isoxml">
37
- <preface><foreword>
38
- <p>
39
- <link target="http://example.com"/>
40
- <link target="http://example.com">example</link>
41
- <link target="mailto:fred@example.com"/>
42
- <link target="mailto:fred@example.com">mailto:fred@example.com</link>
43
- </p>
44
- </foreword></preface>
45
- <sections>
46
- </iso-standard>
54
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
55
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
56
+ <preface>
57
+ <foreword>
58
+ <p>
59
+ <link target="http://example.com"/>
60
+ <link target="http://example.com">example</link>
61
+ <link target="mailto:fred@example.com"/>
62
+ <link target="mailto:fred@example.com">mailto:fred@example.com</link>
63
+ </p>
64
+ </foreword>
65
+ </preface>
66
+ <sections>
67
+ </iso-standard>
47
68
  INPUT
48
- #{HTML_HDR}
49
- <br/>
50
- <div>
51
- <h1 class="ForewordTitle">Foreword</h1>
52
- <p>
53
- <a href="http://example.com">http://example.com</a>
54
- <a href="http://example.com">example</a>
55
- <a href="mailto:fred@example.com">fred@example.com</a>
56
- <a href="mailto:fred@example.com">mailto:fred@example.com</a>
57
- </p>
58
- </div>
59
- <p class="zzSTDTitle1"/>
60
- </div>
61
- </body>
62
- </html>
69
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
70
+ #{HTML_HDR}
71
+ <br/>
72
+ <div>
73
+ <h1 class="ForewordTitle">Foreword</h1>
74
+ <p>
75
+ <a href="http://example.com">http://example.com</a>
76
+ <a href="http://example.com">example</a>
77
+ <a href="mailto:fred@example.com">fred@example.com</a>
78
+ <a href="mailto:fred@example.com">mailto:fred@example.com</a>
79
+ </p>
80
+ </div>
81
+ <p class="zzSTDTitle1"/>
82
+ </div>
83
+ </body>
84
+ </html>
63
85
  OUTPUT
64
86
  end
65
87
 
66
88
  it "processes unrecognised markup" do
67
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
68
- <iso-standard xmlns="http://riboseinc.com/isoxml">
69
- <preface><foreword>
70
- <p>
71
- <barry fred="http://example.com">example</barry>
72
- </p>
73
- </foreword></preface>
74
- <sections>
75
- </iso-standard>
89
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
90
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
91
+ <preface>
92
+ <foreword>
93
+ <p>
94
+ <barry fred="http://example.com">example</barry>
95
+ </p>
96
+ </foreword>
97
+ </preface>
98
+ <sections>
99
+ </iso-standard>
76
100
  INPUT
77
- #{HTML_HDR}
78
- <br/>
79
- <div>
80
- <h1 class="ForewordTitle">Foreword</h1>
81
- <p>
82
- <para><b role="strong">&lt;barry fred="http://example.com"&gt;example&lt;/barry&gt;</b></para>
83
- </p>
84
- </div>
85
- <p class="zzSTDTitle1"/>
86
- </div>
87
- </body>
88
- </html>
101
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
102
+ #{HTML_HDR}
103
+ <br/>
104
+ <div>
105
+ <h1 class="ForewordTitle">Foreword</h1>
106
+ <p>
107
+ <para>
108
+ <b role="strong">&lt;barry fred=&quot;http://example.com&quot;&gt;example&lt;/barry&gt;</b>
109
+ </para>
110
+ </p>
111
+ </div>
112
+ <p class="zzSTDTitle1"/>
113
+ </div>
114
+ </body>
115
+ </html>
89
116
  OUTPUT
90
117
  end
91
118
 
92
119
  it "processes AsciiMath and MathML" do
93
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true).sub(/<html/, "<html xmlns:m='m'"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
94
- <iso-standard xmlns="http://riboseinc.com/isoxml">
95
- <preface><foreword>
96
- <p>
97
- <stem type="AsciiMath">A</stem>
98
- <stem type="MathML"><m:math><m:row>X</m:row></m:math></stem>
99
- <stem type="None">Latex?</stem>
100
- </p>
101
- </foreword></preface>
102
- <sections>
103
- </iso-standard>
120
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
121
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
122
+ <preface>
123
+ <foreword>
124
+ <p>
125
+ <stem type="AsciiMath">A</stem>
126
+ <stem type="MathML"><m:math><m:row>X</m:row></m:math></stem>
127
+ <stem type="None">Latex?</stem>
128
+ </p>
129
+ </foreword>
130
+ </preface>
131
+ <sections>
132
+ </iso-standard>
104
133
  INPUT
105
- #{HTML_HDR.sub(/<html/, "<html xmlns:m='m'")}
106
- <br/>
107
- <div>
108
- <h1 class="ForewordTitle">Foreword</h1>
109
- <p>
110
- <span class="stem">(#(A)#)</span>
111
- <span class="stem"><m:math>
112
- <m:row>X</m:row>
113
- </m:math></span>
114
- <span class="stem">Latex?</span>
115
- </p>
116
- </div>
117
- <p class="zzSTDTitle1"/>
118
- </div>
119
- </body>
120
- </html>
134
+ expect(xmlpp(output.sub(/<html/, "<html xmlns:m='m'"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
135
+ #{HTML_HDR.sub(/<html/, "<html xmlns:m='m'")}
136
+ <br/>
137
+ <div>
138
+ <h1 class="ForewordTitle">Foreword</h1>
139
+ <p>
140
+ <span class="stem">(#(A)#)</span>
141
+ <span class="stem">
142
+ <m:math>
143
+ <m:row>X</m:row>
144
+ </m:math>
145
+ </span>
146
+ <span class="stem">Latex?</span>
147
+ </p>
148
+ </div>
149
+ <p class="zzSTDTitle1"/>
150
+ </div>
151
+ </body>
152
+ </html>
121
153
  OUTPUT
122
154
  end
123
155
 
124
156
  it "overrides AsciiMath delimiters" do
125
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
126
- <iso-standard xmlns="http://riboseinc.com/isoxml">
127
- <preface><foreword>
128
- <p>
129
- <stem type="AsciiMath">A</stem>
130
- (#((Hello))#)
131
- </p>
132
- </foreword></preface>
133
- <sections>
134
- </iso-standard>
157
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
158
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
159
+ <preface>
160
+ <foreword>
161
+ <p><stem type="AsciiMath">A</stem>(#((Hello))#)</p>
162
+ </foreword>
163
+ </preface>
164
+ <sections>
165
+ </iso-standard>
135
166
  INPUT
136
- #{HTML_HDR}
137
- <br/>
138
- <div>
139
- <h1 class="ForewordTitle">Foreword</h1>
140
- <p>
141
- <span class="stem">(#(((A)#)))</span>
142
- (#((Hello))#)
143
- </p>
144
- </div>
145
- <p class="zzSTDTitle1"/>
146
- </div>
147
- </body>
148
- </html>
167
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
168
+ #{HTML_HDR}
169
+ <br/>
170
+ <div>
171
+ <h1 class="ForewordTitle">Foreword</h1>
172
+ <p>
173
+ <span class="stem">(#(((A)#)))</span>
174
+ (#((Hello))#)
175
+ </p>
176
+ </div>
177
+ <p class="zzSTDTitle1"/>
178
+ </div>
179
+ </body>
180
+ </html>
149
181
  OUTPUT
150
182
  end
151
183
 
152
184
  it "processes eref types" do
153
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
154
- <iso-standard xmlns="http://riboseinc.com/isoxml">
155
- <preface><foreword>
156
- <p>
157
- <eref type="footnote" bibitemid="ISO712" citeas="ISO 712">A</stem>
158
- <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</stem>
159
- </p>
160
- </foreword></preface>
161
- <bibliography><references id="_normative_references" obligation="informative" normative="true"><title>1<tab/>Normative references</title>
162
- <bibitem id="ISO712" type="standard">
163
- <title format="text/plain">Cereals and cereal products</title>
164
- <docidentifier>ISO 712</docidentifier>
165
- <contributor>
166
- <role type="publisher"/>
167
- <organization>
168
- <abbreviation>ISO</abbreviation>
169
- </organization>
170
- </contributor>
171
- </bibitem>
172
- </references>
173
- </bibliography>
174
- </iso-standard>
185
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
186
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
187
+ <preface>
188
+ <foreword>
189
+ <p>
190
+ <eref type="footnote" bibitemid="ISO712" citeas="ISO 712">A</stem>
191
+ <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</stem>
192
+ </p>
193
+ </foreword>
194
+ </preface>
195
+ <bibliography>
196
+ <references id="_normative_references" normative="true" obligation="informative">
197
+ <title>1<tab/>
198
+ Normative references</title>
199
+ <bibitem id="ISO712" type="standard">
200
+ <title format="text/plain">Cereals and cereal products</title>
201
+ <docidentifier>ISO 712</docidentifier>
202
+ <contributor>
203
+ <role type="publisher"/>
204
+ <organization>
205
+ <abbreviation>ISO</abbreviation>
206
+ </organization>
207
+ </contributor>
208
+ </bibitem>
209
+ </references>
210
+ </bibliography>
211
+ </iso-standard>
175
212
  INPUT
176
- #{HTML_HDR}
177
- <br/>
178
- <div>
179
- <h1 class="ForewordTitle">Foreword</h1>
180
- <p>
181
- <sup><a href="#ISO712">A</a></sup>
182
- <a href="#ISO712">A</a>
183
- </p>
184
- </div>
185
- <p class="zzSTDTitle1"/>
186
- <div>
187
- <h1>1&#160; Normative references</h1>
188
- <p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i></p>
189
- </div>
190
- </div>
191
- </body>
192
- </html>
213
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
214
+ #{HTML_HDR}
215
+ <br/>
216
+ <div>
217
+ <h1 class="ForewordTitle">Foreword</h1>
218
+ <p>
219
+ <sup><a href="#ISO712">A</a></sup>
220
+ <a href="#ISO712">A</a>
221
+ </p>
222
+ </div>
223
+ <p class="zzSTDTitle1"/>
224
+ <div>
225
+ <h1>1&#160; Normative references</h1>
226
+ <p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i></p>
227
+ </div>
228
+ </div>
229
+ </body>
230
+ </html>
193
231
  OUTPUT
194
232
  end
195
233
 
196
234
  it "processes eref content" do
197
- expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)).sub(%r{<i18nyaml>.*</i18nyaml>}m, "")).to be_equivalent_to xmlpp(<<~"OUTPUT")
198
- <iso-standard xmlns="http://riboseinc.com/isoxml">
199
- <preface><foreword>
200
- <p>
201
- <eref type="inline" bibitemid="IEV" citeas="IEV"><locality type="clause"><referenceFrom>1-2-3</referenceFrom></locality></eref>
202
- <eref type="inline" bibitemid="ISO712" citeas="ISO 712"/>
203
- <eref type="inline" bibitemid="ISO712"/>
204
- <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality></eref>
205
- <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality></eref>
206
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality><locality type="table"><referenceFrom>1</referenceFrom></locality></eref>
207
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality><locality type="list"><referenceFrom>a</referenceFrom></locality></eref>
208
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality></eref>
209
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1.5</referenceFrom></locality></eref>
210
- <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>A</eref>
211
- <eref type="inline" bibitemid="ISO712"><locality type="whole"></locality></eref>
212
- <eref type="inline" bibitemid="ISO712"><locality type="locality:prelude"><referenceFrom>7</referenceFrom></locality></eref>
213
- <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</eref>
214
- </p>
215
- </foreword></preface>
216
- <bibliography><references id="_normative_references" obligation="informative" normative="true"><title>Normative References</title>
217
- <bibitem id="ISO712" type="standard">
218
- <title format="text/plain">Cereals and cereal products</title>
219
- <docidentifier>ISO 712</docidentifier>
220
- <contributor>
221
- <role type="publisher"/>
222
- <organization>
223
- <abbreviation>ISO</abbreviation>
224
- </organization>
225
- </contributor>
226
- </bibitem>
227
- </references>
228
- </bibliography>
229
- </iso-standard>
235
+ output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)
236
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
237
+ <preface>
238
+ <foreword>
239
+ <p>
240
+ <eref bibitemid="IEV" citeas="IEV" type="inline">
241
+ <locality type="clause">
242
+ <referenceFrom>1-2-3</referenceFrom>
243
+ </locality>
244
+ </eref>
245
+ <eref bibitemid="ISO712" citeas="ISO 712" type="inline"/>
246
+ <eref bibitemid="ISO712" type="inline"/>
247
+ <eref bibitemid="ISO712" type="inline">
248
+ <locality type="table">
249
+ <referenceFrom>1</referenceFrom>
250
+ </locality>
251
+ </eref>
252
+ <eref bibitemid="ISO712" type="inline">
253
+ <locality type="table">
254
+ <referenceFrom>1</referenceFrom>
255
+ <referenceTo>1</referenceTo>
256
+ </locality>
257
+ </eref>
258
+ <eref bibitemid="ISO712" type="inline">
259
+ <locality type="clause">
260
+ <referenceFrom>1</referenceFrom>
261
+ </locality>
262
+ <locality type="table">
263
+ <referenceFrom>1</referenceFrom>
264
+ </locality>
265
+ </eref>
266
+ <eref bibitemid="ISO712" type="inline">
267
+ <locality type="clause">
268
+ <referenceFrom>1</referenceFrom>
269
+ </locality>
270
+ <locality type="list">
271
+ <referenceFrom>a</referenceFrom>
272
+ </locality>
273
+ </eref>
274
+ <eref bibitemid="ISO712" type="inline">
275
+ <locality type="clause">
276
+ <referenceFrom>1</referenceFrom>
277
+ </locality>
278
+ </eref>
279
+ <eref bibitemid="ISO712" type="inline">
280
+ <locality type="clause">
281
+ <referenceFrom>1.5</referenceFrom>
282
+ </locality>
283
+ </eref>
284
+ <eref bibitemid="ISO712" type="inline">
285
+ <locality type="table">
286
+ <referenceFrom>1</referenceFrom>
287
+ </locality>A</eref>
288
+ <eref bibitemid="ISO712" type="inline">
289
+ <locality type="whole"/>
290
+ </eref>
291
+ <eref bibitemid="ISO712" type="inline">
292
+ <locality type="locality:prelude">
293
+ <referenceFrom>7</referenceFrom>
294
+ </locality>
295
+ </eref>
296
+ <eref bibitemid="ISO712" citeas="ISO 712" type="inline">A</eref>
297
+ </p>
298
+ </foreword>
299
+ </preface>
300
+ <bibliography>
301
+ <references id="_normative_references" normative="true" obligation="informative">
302
+ <title>Normative References</title>
303
+ <bibitem id="ISO712" type="standard">
304
+ <title format="text/plain">Cereals and cereal products</title>
305
+ <docidentifier>ISO 712</docidentifier>
306
+ <contributor>
307
+ <role type="publisher"/>
308
+ <organization>
309
+ <abbreviation>ISO</abbreviation>
310
+ </organization>
311
+ </contributor>
312
+ </bibitem>
313
+ </references>
314
+ </bibliography>
315
+ </iso-standard>
230
316
  INPUT
231
- <?xml version='1.0'?>
232
- <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
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&#x2013;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>
317
+ expect(xmlpp(output).sub(%r{<i18nyaml>.*</i18nyaml>}m, "")).to be_equivalent_to xmlpp(<<~"OUTPUT")
318
+ <?xml version='1.0'?>
319
+ <iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
320
+ <preface>
321
+ <foreword>
322
+ <p>
323
+ <eref bibitemid="IEV" citeas="IEV" type="inline">
324
+ <locality type="clause">
325
+ <referenceFrom>1-2-3</referenceFrom>
326
+ </locality>IEV, 1-2-3</eref>
327
+ <eref bibitemid="ISO712" citeas="ISO 712" type="inline">ISO 712</eref>
328
+ <eref bibitemid="ISO712" type="inline">ISO 712</eref>
329
+ <eref bibitemid="ISO712" type="inline">
330
+ <locality type="table">
331
+ <referenceFrom>1</referenceFrom>
332
+ </locality>ISO 712, Table 1</eref>
333
+ <eref bibitemid="ISO712" type="inline">
334
+ <locality type="table">
335
+ <referenceFrom>1</referenceFrom>
336
+ <referenceTo>1</referenceTo>
337
+ </locality>ISO 712, Table 1–1</eref>
338
+ <eref bibitemid="ISO712" type="inline">
339
+ <locality type="clause">
340
+ <referenceFrom>1</referenceFrom>
341
+ </locality>
342
+ <locality type="table">
343
+ <referenceFrom>1</referenceFrom>
344
+ </locality>ISO 712, Clause 1, Table 1</eref>
345
+ <eref bibitemid="ISO712" type="inline">
346
+ <locality type="clause">
347
+ <referenceFrom>1</referenceFrom>
348
+ </locality>
349
+ <locality type="list">
350
+ <referenceFrom>a</referenceFrom>
351
+ </locality>ISO 712, Clause 1 a)</eref>
352
+ <eref bibitemid="ISO712" type="inline">
353
+ <locality type="clause">
354
+ <referenceFrom>1</referenceFrom>
355
+ </locality>ISO 712, Clause 1</eref>
356
+ <eref bibitemid="ISO712" type="inline">
357
+ <locality type="clause">
358
+ <referenceFrom>1.5</referenceFrom>
359
+ </locality>ISO 712, 1.5</eref>
360
+ <eref bibitemid="ISO712" type="inline">
361
+ <locality type="table">
362
+ <referenceFrom>1</referenceFrom>
363
+ </locality>A</eref>
364
+ <eref bibitemid="ISO712" type="inline">
365
+ <locality type="whole"/>ISO 712, Whole of text</eref>
366
+ <eref bibitemid="ISO712" type="inline">
367
+ <locality type="locality:prelude">
368
+ <referenceFrom>7</referenceFrom>
369
+ </locality>ISO 712, Prelude 7</eref>
370
+ <eref bibitemid="ISO712" citeas="ISO 712" type="inline">A</eref>
371
+ </p>
372
+ </foreword>
373
+ </preface>
374
+ <bibliography>
375
+ <references id="_normative_references" normative="true" obligation="informative">
376
+ <title depth="1">1<tab/>
377
+ Normative References</title>
378
+ <bibitem id="ISO712" type="standard">
379
+ <title format="text/plain">Cereals and cereal products</title>
380
+ <docidentifier>ISO 712</docidentifier>
381
+ <contributor>
382
+ <role type="publisher"/>
383
+ <organization>
384
+ <abbreviation>ISO</abbreviation>
385
+ </organization>
386
+ </contributor>
387
+ </bibitem>
388
+ </references>
389
+ </bibliography>
390
+ </iso-standard>
327
391
  OUTPUT
328
392
  end
329
-
330
-
331
393
  end