metanorma-iso 1.6.0 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +16 -29
  3. data/.rubocop.yml +0 -4
  4. data/lib/asciidoctor/iso/base.rb +13 -13
  5. data/lib/asciidoctor/iso/basicdoc.rng +5 -3
  6. data/lib/asciidoctor/iso/cleanup.rb +1 -1
  7. data/lib/asciidoctor/iso/front.rb +5 -5
  8. data/lib/asciidoctor/iso/isodoc.rng +134 -5
  9. data/lib/asciidoctor/iso/isostandard-amd.rng +11 -4
  10. data/lib/asciidoctor/iso/isostandard.rng +33 -107
  11. data/lib/asciidoctor/iso/validate.rb +79 -0
  12. data/lib/asciidoctor/iso/validate_section.rb +12 -9
  13. data/lib/isodoc/iso/base_convert.rb +11 -0
  14. data/lib/isodoc/iso/html/header.html +12 -12
  15. data/lib/isodoc/iso/html/html_iso_intro.html +1 -1
  16. data/lib/isodoc/iso/html/html_iso_titlepage.html +1 -1
  17. data/lib/isodoc/iso/html/word_iso_intro.html +1 -1
  18. data/lib/isodoc/iso/html/word_iso_titlepage.html +1 -1
  19. data/lib/isodoc/iso/html_convert.rb +2 -2
  20. data/lib/isodoc/iso/i18n-en.yaml +6 -0
  21. data/lib/isodoc/iso/i18n-fr.yaml +4 -0
  22. data/lib/isodoc/iso/i18n-zh-Hans.yaml +4 -0
  23. data/lib/isodoc/iso/index.rb +139 -0
  24. data/lib/isodoc/iso/iso.amendment.xsl +1006 -317
  25. data/lib/isodoc/iso/iso.international-standard.xsl +1006 -317
  26. data/lib/isodoc/iso/presentation_xml_convert.rb +1 -4
  27. data/lib/isodoc/iso/sections.rb +1 -1
  28. data/lib/isodoc/iso/word_convert.rb +2 -2
  29. data/lib/isodoc/iso/xref.rb +33 -12
  30. data/lib/metanorma/iso/version.rb +1 -1
  31. data/metanorma-iso.gemspec +3 -3
  32. data/spec/asciidoctor/amd_spec.rb +696 -0
  33. data/spec/asciidoctor/base_spec.rb +704 -0
  34. data/spec/asciidoctor/blocks_spec.rb +527 -0
  35. data/spec/asciidoctor/cleanup_spec.rb +1134 -0
  36. data/spec/asciidoctor/inline_spec.rb +195 -0
  37. data/spec/asciidoctor/lists_spec.rb +197 -0
  38. data/spec/asciidoctor/refs_spec.rb +375 -0
  39. data/spec/asciidoctor/section_spec.rb +393 -0
  40. data/spec/asciidoctor/table_spec.rb +329 -0
  41. data/spec/asciidoctor/validate_spec.rb +1555 -0
  42. data/spec/isodoc/amd_spec.rb +967 -946
  43. data/spec/isodoc/blocks_spec.rb +530 -507
  44. data/spec/isodoc/i18n_spec.rb +953 -911
  45. data/spec/isodoc/inline_spec.rb +355 -293
  46. data/spec/isodoc/iso_spec.rb +340 -316
  47. data/spec/isodoc/metadata_spec.rb +392 -382
  48. data/spec/isodoc/postproc_spec.rb +834 -656
  49. data/spec/isodoc/ref_spec.rb +374 -331
  50. data/spec/isodoc/section_spec.rb +821 -519
  51. data/spec/isodoc/table_spec.rb +472 -411
  52. data/spec/isodoc/terms_spec.rb +209 -185
  53. data/spec/isodoc/xref_spec.rb +1370 -1236
  54. data/spec/metanorma/processor_spec.rb +28 -26
  55. data/spec/spec_helper.rb +184 -189
  56. metadata +22 -23
  57. data/.rubocop.ribose.yml +0 -66
  58. data/spec/asciidoctor-iso/amd_spec.rb +0 -694
  59. data/spec/asciidoctor-iso/base_spec.rb +0 -713
  60. data/spec/asciidoctor-iso/blocks_spec.rb +0 -482
  61. data/spec/asciidoctor-iso/cleanup_spec.rb +0 -1025
  62. data/spec/asciidoctor-iso/inline_spec.rb +0 -170
  63. data/spec/asciidoctor-iso/lists_spec.rb +0 -190
  64. data/spec/asciidoctor-iso/refs_spec.rb +0 -317
  65. data/spec/asciidoctor-iso/section_spec.rb +0 -362
  66. data/spec/asciidoctor-iso/table_spec.rb +0 -313
  67. data/spec/asciidoctor-iso/validate_spec.rb +0 -1251
  68. data/spec/assets/xref_error.adoc +0 -7
@@ -2,534 +2,557 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
4
  it "renders figures (HTML)" 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>
8
- <foreword id='fwd'>
9
- <p>
10
- </p>
11
- </foreword>
12
- </preface>
13
- <sections>
14
- <clause id='scope' type="scope">
15
- <title>Scope</title>
16
- <figure id='N'>
17
- <name>Figure 1&#xA0;&#x2014; Split-it-right sample divider</name>
18
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
19
- </figure>
20
- <p>
21
- </p>
22
- </clause>
23
- <terms id='terms'/>
24
- <clause id='widgets'>
25
- <title>Widgets</title>
26
- <clause id='widgets1'>
27
- <figure id='note1'>
28
- <name>Figure 2&#xA0;&#x2014; Split-it-right sample divider</name>
29
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
30
- </figure>
31
- <figure id='note2'>
32
- <name>Figure 3&#xA0;&#x2014; Split-it-right sample divider</name>
33
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
34
- </figure>
35
- <p>
36
- </p>
37
- </clause>
38
- </clause>
39
- </sections>
40
- <annex id='annex1'>
41
- <clause id='annex1a'>
42
- <figure id='AN'>
43
- <name>Figure A.1&#xA0;&#x2014; Split-it-right sample divider</name>
44
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
45
- </figure>
46
- </clause>
47
- <clause id='annex1b'>
48
- <figure id='Anote1'>
49
- <name>Figure A.2&#xA0;&#x2014; Split-it-right sample divider</name>
50
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
51
- </figure>
52
- <figure id='Anote2'>
53
- <name>Figure A.3&#xA0;&#x2014; Split-it-right sample divider</name>
54
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
55
- </figure>
56
- </clause>
57
- </annex>
58
- </iso-standard>
5
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
6
+ <iso-standard xmlns='http://riboseinc.com/isoxml'>
7
+ <preface>
8
+ <foreword id='fwd'>
9
+ <p>
10
+ </p>
11
+ </foreword>
12
+ </preface>
13
+ <sections>
14
+ <clause id='scope' type="scope">
15
+ <title>Scope</title>
16
+ <figure id='N'>
17
+ <name>Figure 1&#xA0;&#x2014; Split-it-right sample divider</name>
18
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
19
+ </figure>
20
+ <p>
21
+ </p>
22
+ </clause>
23
+ <terms id='terms'/>
24
+ <clause id='widgets'>
25
+ <title>Widgets</title>
26
+ <clause id='widgets1'>
27
+ <figure id='note1'>
28
+ <name>Figure 2&#xA0;&#x2014; Split-it-right sample divider</name>
29
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
30
+ </figure>
31
+ <figure id='note2'>
32
+ <name>Figure 3&#xA0;&#x2014; Split-it-right sample divider</name>
33
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
34
+ </figure>
35
+ <p>
36
+ </p>
37
+ </clause>
38
+ </clause>
39
+ </sections>
40
+ <annex id='annex1'>
41
+ <clause id='annex1a'>
42
+ <figure id='AN'>
43
+ <name>Figure A.1&#xA0;&#x2014; Split-it-right sample divider</name>
44
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
45
+ </figure>
46
+ </clause>
47
+ <clause id='annex1b'>
48
+ <figure id='Anote1'>
49
+ <name>Figure A.2&#xA0;&#x2014; Split-it-right sample divider</name>
50
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
51
+ </figure>
52
+ <figure id='Anote2'>
53
+ <name>Figure A.3&#xA0;&#x2014; Split-it-right sample divider</name>
54
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
55
+ </figure>
56
+ </clause>
57
+ </annex>
58
+ </iso-standard>
59
59
  INPUT
60
- #{HTML_HDR}
61
- <br/>
62
- <div id="fwd">
63
- <h1 class="ForewordTitle">Foreword</h1>
64
- <p>
65
- </p>
66
- </div>
67
- <p class="zzSTDTitle1"/>
68
- <div id="scope">
69
- <h1>Scope</h1>
70
- <div id="N" class="figure">
71
-
72
- <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
73
- <p class="FigureTitle" style="text-align:center;">Figure 1&#160;&#8212; Split-it-right sample divider</p></div>
74
- <p>
75
- </p>
76
- </div>
77
- <div id="terms"><h1/>
78
- </div>
79
- <div id="widgets">
80
- <h1>Widgets</h1>
81
- <div id="widgets1">
82
- <div id="note1" class="figure">
83
-
84
- <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
85
- <p class="FigureTitle" style="text-align:center;">Figure 2&#160;&#8212; Split-it-right sample divider</p></div>
86
- <div id="note2" class="figure">
87
-
88
- <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
89
- <p class="FigureTitle" style="text-align:center;">Figure 3&#160;&#8212; Split-it-right sample divider</p></div>
90
- <p> </p>
91
- </div>
92
- </div>
93
- <br/>
94
- <div id="annex1" class="Section3">
95
- <div id="annex1a">
96
- <div id="AN" class="figure">
97
-
98
- <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
99
- <p class="FigureTitle" style="text-align:center;">Figure A.1&#160;&#8212; Split-it-right sample divider</p></div>
100
- </div>
101
- <div id="annex1b">
102
- <div id="Anote1" class="figure">
103
-
104
- <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
105
- <p class="FigureTitle" style="text-align:center;">Figure A.2&#160;&#8212; Split-it-right sample divider</p></div>
106
- <div id="Anote2" class="figure">
107
-
108
- <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
109
- <p class="FigureTitle" style="text-align:center;">Figure A.3&#160;&#8212; Split-it-right sample divider</p></div>
110
- </div>
111
- </div>
112
- </div>
113
- </body>
114
- </html>
60
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
61
+ #{HTML_HDR}
62
+ <br/>
63
+ <div id="fwd">
64
+ <h1 class="ForewordTitle">Foreword</h1>
65
+ <p>
66
+ </p>
67
+ </div>
68
+ <p class="zzSTDTitle1"/>
69
+ <div id="scope">
70
+ <h1>Scope</h1>
71
+ <div id="N" class="figure">
72
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
73
+ <p class="FigureTitle" style="text-align:center;">Figure 1&#160;&#8212; Split-it-right sample divider</p>
74
+ </div>
75
+ <p>
76
+ </p>
77
+ </div>
78
+ <div id="terms"><h1/></div>
79
+ <div id="widgets">
80
+ <h1>Widgets</h1>
81
+ <div id="widgets1">
82
+ <div id="note1" class="figure">
83
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
84
+ <p class="FigureTitle" style="text-align:center;">Figure 2&#160;&#8212; Split-it-right sample divider</p>
85
+ </div>
86
+ <div id="note2" class="figure">
87
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
88
+ <p class="FigureTitle" style="text-align:center;">Figure 3&#160;&#8212; Split-it-right sample divider</p>
89
+ </div>
90
+ <p> </p>
91
+ </div>
92
+ </div>
93
+ <br/>
94
+ <div id="annex1" class="Section3">
95
+ <div id="annex1a">
96
+ <div id="AN" class="figure">
97
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
98
+ <p class="FigureTitle" style="text-align:center;">Figure A.1&#160;&#8212; Split-it-right sample divider</p>
99
+ </div>
100
+ </div>
101
+ <div id="annex1b">
102
+ <div id="Anote1" class="figure">
103
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
104
+ <p class="FigureTitle" style="text-align:center;">Figure A.2&#160;&#8212; Split-it-right sample divider</p>
105
+ </div>
106
+ <div id="Anote2" class="figure">
107
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
108
+ <p class="FigureTitle" style="text-align:center;">Figure A.3&#160;&#8212; Split-it-right sample divider</p>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </body>
114
+ </html>
115
115
  OUTPUT
116
116
  end
117
117
 
118
- it "renders subfigures (HTML)" do
119
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
120
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
121
- <preface>
122
- <foreword id='fwd'>
123
- <p>
124
- <xref target='N'/>
125
- <xref target='note1'/>
126
- <xref target='note2'/>
127
- <xref target='AN'/>
128
- <xref target='Anote1'/>
129
- <xref target='Anote2'/>
130
- </p>
131
- </foreword>
132
- </preface>
133
- <sections>
134
- <clause id='scope' type="scope">
135
- <title>Scope</title>
136
- </clause>
137
- <terms id='terms'/>
138
- <clause id='widgets'>
139
- <title>Widgets</title>
140
- <clause id='widgets1'>
141
- <figure id='N'>
142
- <name>Figure 1</name>
143
- <figure id='note1'>
144
- <name>a)&#xA0;&#x2014; Split-it-right sample divider</name>
145
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
118
+ it "renders subfigures (HTML)" do
119
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
120
+ <iso-standard xmlns='http://riboseinc.com/isoxml'>
121
+ <preface>
122
+ <foreword id='fwd'>
123
+ <p>
124
+ <xref target='N'/>
125
+ <xref target='note1'/>
126
+ <xref target='note2'/>
127
+ <xref target='AN'/>
128
+ <xref target='Anote1'/>
129
+ <xref target='Anote2'/>
130
+ </p>
131
+ </foreword>
132
+ </preface>
133
+ <sections>
134
+ <clause id='scope' type="scope">
135
+ <title>Scope</title>
136
+ </clause>
137
+ <terms id='terms'/>
138
+ <clause id='widgets'>
139
+ <title>Widgets</title>
140
+ <clause id='widgets1'>
141
+ <figure id='N'>
142
+ <name>Figure 1</name>
143
+ <figure id='note1'>
144
+ <name>a)&#xA0;&#x2014; Split-it-right sample divider</name>
145
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
146
+ </figure>
147
+ <figure id='note2'>
148
+ <name>b)&#xA0;&#x2014; Split-it-right sample divider</name>
149
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
150
+ </figure>
151
+ </figure>
152
+ <p>
153
+ <xref target='note1'/>
154
+ <xref target='note2'/>
155
+ </p>
156
+ </clause>
157
+ </clause>
158
+ </sections>
159
+ <annex id='annex1'>
160
+ <clause id='annex1a'> </clause>
161
+ <clause id='annex1b'>
162
+ <figure id='AN'>
163
+ <name>Figure A.1</name>
164
+ <figure id='Anote1'>
165
+ <name>a)&#xA0;&#x2014; Split-it-right sample divider</name>
166
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
167
+ </figure>
168
+ <figure id='Anote2'>
169
+ <name>b)&#xA0;&#x2014; Split-it-right sample divider</name>
170
+ <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
171
+ </figure>
146
172
  </figure>
147
- <figure id='note2'>
148
- <name>b)&#xA0;&#x2014; Split-it-right sample divider</name>
149
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
150
- </figure>
151
- </figure>
152
- <p>
153
- <xref target='note1'/>
154
- <xref target='note2'/>
155
- </p>
156
- </clause>
157
- </clause>
158
- </sections>
159
- <annex id='annex1'>
160
- <clause id='annex1a'> </clause>
161
- <clause id='annex1b'>
162
- <figure id='AN'>
163
- <name>Figure A.1</name>
164
- <figure id='Anote1'>
165
- <name>a)&#xA0;&#x2014; Split-it-right sample divider</name>
166
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
167
- </figure>
168
- <figure id='Anote2'>
169
- <name>b)&#xA0;&#x2014; Split-it-right sample divider</name>
170
- <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
171
- </figure>
172
- </figure>
173
- </clause>
174
- </annex>
175
- </iso-standard>
173
+ </clause>
174
+ </annex>
175
+ </iso-standard>
176
176
  INPUT
177
- <html lang='en'>
178
- <head/>
179
- <body lang='en'>
180
- <div class='title-section'>
181
- <p>&#160;</p>
182
- </div>
183
- <br/>
184
- <div class='prefatory-section'>
185
- <p>&#160;</p>
186
- </div>
187
- <br/>
188
- <div class='main-section'>
189
- <br/>
190
- <div id='fwd'>
191
- <h1 class='ForewordTitle'>Foreword</h1>
192
- <p>
193
- <a href='#N'/>
194
- <a href='#note1'/>
195
- <a href='#note2'/>
196
- <a href='#AN'/>
197
- <a href='#Anote1'/>
198
- <a href='#Anote2'/>
199
- </p>
200
- </div>
201
- <p class='zzSTDTitle1'/>
202
- <div id='scope'>
203
- <h1>Scope</h1>
204
- </div>
205
- <div id='terms'>
206
- <h1/>
207
- </div>
208
- <div id='widgets'>
209
- <h1>Widgets</h1>
210
- <div id='widgets1'>
211
- <div id='N' class='figure'>
212
- <div id='note1' class='figure'>
213
- <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
214
- <p class='FigureTitle' style='text-align:center;'>a)&#160;&#8212; Split-it-right sample divider</p>
215
- </div>
216
- <div id='note2' class='figure'>
217
- <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
218
- <p class='FigureTitle' style='text-align:center;'>b)&#160;&#8212; Split-it-right sample divider</p>
219
- </div>
220
- <p class='FigureTitle' style='text-align:center;'>Figure 1</p>
221
- </div>
222
- <p>
223
- <a href='#note1'/>
224
- <a href='#note2'/>
225
- </p>
226
- </div>
227
- </div>
228
- <br/>
229
- <div id='annex1' class='Section3'>
230
- <div id='annex1a'>
231
- </div>
232
- <div id='annex1b'>
233
- <div id='AN' class='figure'>
234
- <div id='Anote1' class='figure'>
235
- <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
236
- <p class='FigureTitle' style='text-align:center;'>a)&#160;&#8212; Split-it-right sample divider</p>
237
- </div>
238
- <div id='Anote2' class='figure'>
239
- <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
240
- <p class='FigureTitle' style='text-align:center;'>b)&#160;&#8212; Split-it-right sample divider</p>
241
- </div>
242
- <p class='FigureTitle' style='text-align:center;'>Figure A.1</p>
243
- </div>
244
- </div>
245
- </div>
246
- </div>
247
- </body>
248
- </html>
177
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
178
+ <html lang='en'>
179
+ <head/>
180
+ <body lang='en'>
181
+ <div class='title-section'>
182
+ <p>&#160;</p>
183
+ </div>
184
+ <br/>
185
+ <div class='prefatory-section'>
186
+ <p>&#160;</p>
187
+ </div>
188
+ <br/>
189
+ <div class='main-section'>
190
+ <br/>
191
+ <div id='fwd'>
192
+ <h1 class='ForewordTitle'>Foreword</h1>
193
+ <p>
194
+ <a href='#N'/>
195
+ <a href='#note1'/>
196
+ <a href='#note2'/>
197
+ <a href='#AN'/>
198
+ <a href='#Anote1'/>
199
+ <a href='#Anote2'/>
200
+ </p>
201
+ </div>
202
+ <p class='zzSTDTitle1'/>
203
+ <div id='scope'>
204
+ <h1>Scope</h1>
205
+ </div>
206
+ <div id='terms'>
207
+ <h1/>
208
+ </div>
209
+ <div id='widgets'>
210
+ <h1>Widgets</h1>
211
+ <div id='widgets1'>
212
+ <div id='N' class='figure'>
213
+ <div id='note1' class='figure'>
214
+ <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
215
+ <p class='FigureTitle' style='text-align:center;'>a)&#160;&#8212; Split-it-right sample divider</p>
216
+ </div>
217
+ <div id='note2' class='figure'>
218
+ <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
219
+ <p class='FigureTitle' style='text-align:center;'>b)&#160;&#8212; Split-it-right sample divider</p>
220
+ </div>
221
+ <p class='FigureTitle' style='text-align:center;'>Figure 1</p>
222
+ </div>
223
+ <p>
224
+ <a href='#note1'/>
225
+ <a href='#note2'/>
226
+ </p>
227
+ </div>
228
+ </div>
229
+ <br/>
230
+ <div id='annex1' class='Section3'>
231
+ <div id='annex1a'>
232
+ </div>
233
+ <div id='annex1b'>
234
+ <div id='AN' class='figure'>
235
+ <div id='Anote1' class='figure'>
236
+ <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
237
+ <p class='FigureTitle' style='text-align:center;'>a)&#160;&#8212; Split-it-right sample divider</p>
238
+ </div>
239
+ <div id='Anote2' class='figure'>
240
+ <img src='rice_images/rice_image1.png' height='auto' width='auto'/>
241
+ <p class='FigureTitle' style='text-align:center;'>b)&#160;&#8212; Split-it-right sample divider</p>
242
+ </div>
243
+ <p class='FigureTitle' style='text-align:center;'>Figure A.1</p>
244
+ </div>
245
+ </div>
246
+ </div>
247
+ </div>
248
+ </body>
249
+ </html>
249
250
  OUTPUT
250
251
  end
251
252
 
252
- it "processes formulae (Presentation XML)" do
253
- expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
254
- <iso-standard xmlns="http://riboseinc.com/isoxml">
255
- <preface><foreword>
256
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
257
- <stem type="AsciiMath">r = 1 %</stem>
258
- <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
259
- <dt> <stem type="AsciiMath">r</stem> </dt>
260
- <dd> <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p> </dd>
261
- <dt> <stem type="AsciiMath">s_1</stem> </dt>
262
- <dd> <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p> </dd>
263
- </dl>
264
- <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
265
- <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p>
266
- </note>
267
- </formula>
268
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
269
- <stem type="AsciiMath">r = 1 %</stem>
270
- </formula>
271
- </foreword></preface>
272
- </iso-standard>
253
+ it "processes formulae (Presentation XML)" do
254
+ output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)
255
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
256
+ <preface>
257
+ <foreword>
258
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
259
+ <stem type="AsciiMath">r = 1 %</stem>
260
+ <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
261
+ <dt>
262
+ <stem type="AsciiMath">r</stem>
263
+ </dt>
264
+ <dd>
265
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
266
+ </dd>
267
+ <dt>
268
+ <stem type="AsciiMath">s_1</stem>
269
+ </dt>
270
+ <dd>
271
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
272
+ </dd>
273
+ </dl>
274
+ <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
275
+ <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the &quot;P&quot; prefix. &quot;P&quot; is unnecessary because between &quot;G&quot; and &quot;U&quot; duration is always expressed.</p>
276
+ </note>
277
+ </formula>
278
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
279
+ <stem type="AsciiMath">r = 1 %</stem>
280
+ </formula>
281
+ </foreword>
282
+ </preface>
283
+ </iso-standard>
273
284
  INPUT
274
- <?xml version='1.0'?>
275
- <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
276
- <preface>
277
- <foreword>
278
- <formula id='_be9158af-7e93-4ee2-90c5-26d31c181934' unnumbered='true'>
279
- <stem type='AsciiMath'>r = 1 %</stem>
280
- <dl id='_e4fe94fe-1cde-49d9-b1ad-743293b7e21d'>
281
- <dt>
282
- <stem type='AsciiMath'>r</stem>
283
- </dt>
284
- <dd>
285
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
286
- </dd>
287
- <dt>
288
- <stem type='AsciiMath'>s_1</stem>
289
- </dt>
290
- <dd>
291
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the other repeatability limit.</p>
292
- </dd>
293
- </dl>
294
- <note id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0'>
295
- <name>NOTE</name>
296
- <p id='_511aaa98-4116-42af-8e5b-c87cdf5bfdc8'>
297
- [durationUnits] is essentially a duration statement without the "P"
298
- prefix. "P" is unnecessary because between "G" and "U" duration is
299
- always expressed.
300
- </p>
301
- </note>
302
- </formula>
303
- <formula id='_be9158af-7e93-4ee2-90c5-26d31c181935'>
304
- <name>1</name>
305
- <stem type='AsciiMath'>r = 1 %</stem>
306
- </formula>
307
- </foreword>
308
- </preface>
309
- </iso-standard>
310
- OUTPUT
311
- end
285
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
286
+ <?xml version='1.0'?>
287
+ <iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
288
+ <preface>
289
+ <foreword>
290
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
291
+ <stem type="AsciiMath">r = 1 %</stem>
292
+ <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
293
+ <dt>
294
+ <stem type="AsciiMath">r</stem>
295
+ </dt>
296
+ <dd>
297
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
298
+ </dd>
299
+ <dt>
300
+ <stem type="AsciiMath">s_1</stem>
301
+ </dt>
302
+ <dd>
303
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
304
+ </dd>
305
+ </dl>
306
+ <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
307
+ <name>NOTE</name>
308
+ <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P"
309
+ prefix. "P" is unnecessary because between "G" and "U" duration is
310
+ always expressed.
311
+ </p>
312
+ </note>
313
+ </formula>
314
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
315
+ <name>1</name>
316
+ <stem type="AsciiMath">r = 1 %</stem>
317
+ </formula>
318
+ </foreword>
319
+ </preface>
320
+ </iso-standard>
321
+ OUTPUT
322
+ end
312
323
 
313
- it "processes formulae (HTML)" do
314
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
315
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
316
- <preface>
317
- <foreword>
318
- <formula id='_be9158af-7e93-4ee2-90c5-26d31c181934' unnumbered='true'>
319
- <stem type='AsciiMath'>r = 1 %</stem>
320
- <dl id='_e4fe94fe-1cde-49d9-b1ad-743293b7e21d'>
321
- <dt>
322
- <stem type='AsciiMath'>r</stem>
323
- </dt>
324
- <dd>
325
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
326
- </dd>
327
- <dt>
328
- <stem type='AsciiMath'>s_1</stem>
329
- </dt>
330
- <dd>
331
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the other repeatability limit.</p>
332
- </dd>
333
- </dl>
334
- <note id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0'>
335
- <p id='_511aaa98-4116-42af-8e5b-c87cdf5bfdc8'>
336
- [durationUnits] is essentially a duration statement without the "P"
337
- prefix. "P" is unnecessary because between "G" and "U" duration is
338
- always expressed.
339
- </p>
340
- </note>
341
- </formula>
342
- <formula id='_be9158af-7e93-4ee2-90c5-26d31c181935'>
343
- <name>1</name>
344
- <stem type='AsciiMath'>r = 1 %</stem>
345
- </formula>
346
- </foreword>
347
- </preface>
348
- </iso-standard>
324
+ it "processes formulae (HTML)" do
325
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
326
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
327
+ <preface>
328
+ <foreword>
329
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
330
+ <stem type="AsciiMath">r = 1 %</stem>
331
+ <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
332
+ <dt>
333
+ <stem type="AsciiMath">r</stem>
334
+ </dt>
335
+ <dd>
336
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
337
+ </dd>
338
+ <dt>
339
+ <stem type="AsciiMath">s_1</stem>
340
+ </dt>
341
+ <dd>
342
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
343
+ </dd>
344
+ </dl>
345
+ <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
346
+ <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the &quot;P&quot;
347
+ prefix. &quot;P&quot; is unnecessary because between &quot;G&quot; and &quot;U&quot; duration is
348
+ always expressed.
349
+ </p>
350
+ </note>
351
+ </formula>
352
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
353
+ <name>1</name>
354
+ <stem type="AsciiMath">r = 1 %</stem>
355
+ </formula>
356
+ </foreword>
357
+ </preface>
358
+ </iso-standard>
349
359
  INPUT
350
- #{HTML_HDR}
351
- <br/>
352
- <div>
353
- <h1 class='ForewordTitle'>Foreword</h1>
354
- <div id='_be9158af-7e93-4ee2-90c5-26d31c181934'><div class='formula'>
355
- <p>
356
- <span class='stem'>(#(r = 1 %)#)</span>
357
- </p>
358
- </div>
359
- <p style='page-break-after:avoid;'>where</p>
360
- <dl id='_e4fe94fe-1cde-49d9-b1ad-743293b7e21d' class='formula_dl'>
361
- <dt>
362
- <span class='stem'>(#(r)#)</span>
363
- </dt>
364
- <dd>
365
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
366
- </dd>
367
- <dt>
368
- <span class='stem'>(#(s_1)#)</span>
369
- </dt>
370
- <dd>
371
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the other repeatability limit.</p>
372
- </dd>
373
- </dl>
374
- <div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
375
- <p>
376
- &#160; [durationUnits] is essentially a duration statement without
377
- the "P" prefix. "P" is unnecessary because between "G" and "U"
378
- duration is always expressed.
379
- </p>
360
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
361
+ #{HTML_HDR}
362
+ <br/>
363
+ <div>
364
+ <h1 class='ForewordTitle'>Foreword</h1>
365
+ <div id='_be9158af-7e93-4ee2-90c5-26d31c181934'>
366
+ <div class='formula'>
367
+ <p>
368
+ <span class='stem'>(#(r = 1 %)#)</span>
369
+ </p>
370
+ </div>
371
+ <p style='page-break-after:avoid;'>where</p>
372
+ <dl id='_e4fe94fe-1cde-49d9-b1ad-743293b7e21d' class='formula_dl'>
373
+ <dt>
374
+ <span class='stem'>(#(r)#)</span>
375
+ </dt>
376
+ <dd>
377
+ <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
378
+ </dd>
379
+ <dt>
380
+ <span class='stem'>(#(s_1)#)</span>
381
+ </dt>
382
+ <dd>
383
+ <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the other repeatability limit.</p>
384
+ </dd>
385
+ </dl>
386
+ <div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
387
+ <p>
388
+ &#160; [durationUnits] is essentially a duration statement without
389
+ the "P" prefix. "P" is unnecessary because between "G" and "U"
390
+ duration is always expressed.
391
+ </p>
392
+ </div>
393
+ </div>
394
+ <div id='_be9158af-7e93-4ee2-90c5-26d31c181935'>
395
+ <div class='formula'>
396
+ <p>
397
+ <span class='stem'>(#(r = 1 %)#)</span>
398
+ &#160; (1)
399
+ </p>
400
+ </div>
401
+ </div>
402
+ </div>
403
+ <p class='zzSTDTitle1'/>
380
404
  </div>
381
- </div>
382
- <div id='_be9158af-7e93-4ee2-90c5-26d31c181935'><div class='formula'>
383
- <p>
384
- <span class='stem'>(#(r = 1 %)#)</span>
385
- &#160; (1)
386
- </p>
387
- </div>
388
- </div>
389
- </div>
390
- <p class='zzSTDTitle1'/>
391
- </div>
392
- </body>
393
- </html>
405
+ </body>
406
+ </html>
394
407
  OUTPUT
395
408
  end
396
409
 
397
410
  it "processes formulae (Word)" do
398
- expect(xmlpp(IsoDoc::Iso::WordConvert.new({}).convert("test", <<~"INPUT", true).sub(%r{^.*<div>\s*<h1 class="ForewordTitle">}m, '<div><h1 class="ForewordTitle">').sub(%r{<p>\&#160;</p>\s*</div>.*$}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
399
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
400
- <preface>
401
- <foreword>
402
- <formula id='_be9158af-7e93-4ee2-90c5-26d31c181934' unnumbered='true'>
403
- <stem type='AsciiMath'>r = 1 %</stem>
404
- <dl id='_e4fe94fe-1cde-49d9-b1ad-743293b7e21d'>
405
- <dt>
406
- <stem type='AsciiMath'>r</stem>
407
- </dt>
408
- <dd>
409
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
410
- </dd>
411
- <dt>
412
- <stem type='AsciiMath'>s_1</stem>
413
- </dt>
414
- <dd>
415
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the other repeatability limit.</p>
416
- </dd>
417
- </dl>
418
- <note id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0'>
419
- <p id='_511aaa98-4116-42af-8e5b-c87cdf5bfdc8'>
420
- [durationUnits] is essentially a duration statement without the "P"
421
- prefix. "P" is unnecessary because between "G" and "U" duration is
422
- always expressed.
423
- </p>
424
- </note>
425
- </formula>
426
- <formula id='_be9158af-7e93-4ee2-90c5-26d31c181935'>
427
- <name>1</name>
428
- <stem type='AsciiMath'>r = 1 %</stem>
429
- </formula>
430
- </foreword>
431
- </preface>
432
- </iso-standard>
411
+ output = IsoDoc::Iso::WordConvert.new({}).convert("test", <<~"INPUT", true)
412
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
413
+ <preface>
414
+ <foreword>
415
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
416
+ <stem type="AsciiMath">r = 1 %</stem>
417
+ <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
418
+ <dt>
419
+ <stem type="AsciiMath">r</stem>
420
+ </dt>
421
+ <dd>
422
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
423
+ </dd>
424
+ <dt>
425
+ <stem type="AsciiMath">s_1</stem>
426
+ </dt>
427
+ <dd>
428
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
429
+ </dd>
430
+ </dl>
431
+ <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
432
+ <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the &quot;P&quot;
433
+ prefix. &quot;P&quot; is unnecessary because between &quot;G&quot; and &quot;U&quot; duration is
434
+ always expressed.
435
+ </p>
436
+ </note>
437
+ </formula>
438
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
439
+ <name>1</name>
440
+ <stem type="AsciiMath">r = 1 %</stem>
441
+ </formula>
442
+ </foreword>
443
+ </preface>
444
+ </iso-standard>
433
445
  INPUT
434
- <div>
435
- <h1 class='ForewordTitle'>Foreword</h1>
436
- <div id='_be9158af-7e93-4ee2-90c5-26d31c181934'><div class='formula'>
437
- <p>
438
- <span class='stem'>(#(r = 1 %)#)</span>
439
- <span style='mso-tab-count:1'>&#160; </span>
440
- </p>
441
- </div>
442
- <p>where</p>
443
- <table class='formula_dl'>
444
- <tr>
445
- <td valign='top' align='left'>
446
- <p align='left' style='margin-left:0pt;text-align:left;'>
447
- <span class='stem'>(#(r)#)</span>
448
- </p>
449
- </td>
450
- <td valign='top'>
451
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
452
- </td>
453
- </tr>
454
- <tr>
455
- <td valign='top' align='left'>
456
- <p align='left' style='margin-left:0pt;text-align:left;'>
457
- <span class='stem'>(#(s_1)#)</span>
458
- </p>
459
- </td>
460
- <td valign='top'>
461
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the other repeatability limit.</p>
462
- </td>
463
- </tr>
464
- </table>
465
- <div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
466
- <p class='Note'>
467
- <span class='note_label'/>
468
- <span style='mso-tab-count:1'>&#160; </span>
469
- [durationUnits] is essentially a duration statement without the "P"
470
- prefix. "P" is unnecessary because between "G" and "U" duration is
471
- always expressed.
472
- </p>
473
- </div>
474
- </div>
475
- <div id='_be9158af-7e93-4ee2-90c5-26d31c181935'><div class='formula'>
476
- <p>
477
- <span class='stem'>(#(r = 1 %)#)</span>
478
- <span style='mso-tab-count:1'>&#160; </span>
479
- (1)
480
- </p>
481
- </div>
482
- </div>
483
- </div>
484
- OUTPUT
446
+ expect(xmlpp(output
447
+ .sub(%r{^.*<div>\s*<h1 class="ForewordTitle">}m, '<div><h1 class="ForewordTitle">')
448
+ .sub(%r{<p>&#160;</p>\s*</div>.*$}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
449
+ <div>
450
+ <h1 class='ForewordTitle'>Foreword</h1>
451
+ <div id='_be9158af-7e93-4ee2-90c5-26d31c181934'><div class='formula'>
452
+ <p>
453
+ <span class='stem'>(#(r = 1 %)#)</span>
454
+ <span style='mso-tab-count:1'>&#160; </span>
455
+ </p>
456
+ </div>
457
+ <p>where</p>
458
+ <table class="formula_dl">
459
+ <tr>
460
+ <td align="left" valign="top">
461
+ <p align="left" style="margin-left:0pt;text-align:left;">
462
+ <span class="stem">(#(r)#)</span>
463
+ </p>
464
+ </td>
465
+ <td valign="top">
466
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
467
+ </td>
468
+ </tr>
469
+ <tr>
470
+ <td align="left" valign="top">
471
+ <p align="left" style="margin-left:0pt;text-align:left;">
472
+ <span class="stem">(#(s_1)#)</span>
473
+ </p>
474
+ </td>
475
+ <td valign="top">
476
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
477
+ </td>
478
+ </tr>
479
+ </table>
480
+ <div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
481
+ <p class='Note'>
482
+ <span class='note_label'/>
483
+ <span style='mso-tab-count:1'>&#160; </span>
484
+ [durationUnits] is essentially a duration statement without the "P"
485
+ prefix. "P" is unnecessary because between "G" and "U" duration is
486
+ always expressed.
487
+ </p>
488
+ </div>
489
+ </div>
490
+ <div id='_be9158af-7e93-4ee2-90c5-26d31c181935'><div class='formula'>
491
+ <p>
492
+ <span class='stem'>(#(r = 1 %)#)</span>
493
+ <span style='mso-tab-count:1'>&#160; </span>
494
+ (1)
495
+ </p>
496
+ </div>
497
+ </div>
498
+ </div>
499
+ OUTPUT
485
500
  end
486
501
 
487
- it "processes formulae with single definition list entry" do
488
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
489
- <iso-standard xmlns="http://riboseinc.com/isoxml">
490
- <preface><foreword>
491
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
492
- <stem type="AsciiMath">r = 1 %</stem>
493
- <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
494
- <dt>
495
- <stem type="AsciiMath">r</stem>
496
- </dt>
497
- <dd>
498
- <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
499
- </dd>
500
- </dl>
501
- <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
502
- <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p>
503
- </note>
504
- </formula>
505
- <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935"><name>1</name>
506
- <stem type="AsciiMath">r = 1 %</stem>
507
- </formula>
508
- </foreword></preface>
509
- </iso-standard>
502
+ it "processes formulae with single definition list entry" do
503
+ output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
504
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
505
+ <preface>
506
+ <foreword>
507
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
508
+ <stem type="AsciiMath">r = 1 %</stem>
509
+ <dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
510
+ <dt>
511
+ <stem type="AsciiMath">r</stem>
512
+ </dt>
513
+ <dd>
514
+ <p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
515
+ </dd>
516
+ </dl>
517
+ <note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
518
+ <p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the &quot;P&quot; prefix. &quot;P&quot; is unnecessary because between &quot;G&quot; and &quot;U&quot; duration is always expressed.</p>
519
+ </note>
520
+ </formula>
521
+ <formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
522
+ <name>1</name>
523
+ <stem type="AsciiMath">r = 1 %</stem>
524
+ </formula>
525
+ </foreword>
526
+ </preface>
527
+ </iso-standard>
510
528
  INPUT
511
- #{HTML_HDR}
512
- <br/>
513
- <div>
514
- <h1 class="ForewordTitle">Foreword</h1>
515
- <div id="_be9158af-7e93-4ee2-90c5-26d31c181934"><div class="formula"><p><span class="stem">(#(r = 1 %)#)</span></p></div>
516
- <span class='zzMoveToFollowing'>
517
- where
518
- <span class='stem'>(#(r)#)</span>
519
- </span>
520
- <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
521
-
522
- <div id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0" class="Note"><p>&#160; [durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p></div>
523
- </div>
524
-
525
- <div id="_be9158af-7e93-4ee2-90c5-26d31c181935"><div class="formula"><p><span class="stem">(#(r = 1 %)#)</span>&#160; (1)</p></div></div>
526
- </div>
527
- <p class="zzSTDTitle1"/>
528
- </div>
529
- </body>
530
- </html>
529
+ expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
530
+ #{HTML_HDR}
531
+ <br/>
532
+ <div>
533
+ <h1 class="ForewordTitle">Foreword</h1>
534
+ <div id="_be9158af-7e93-4ee2-90c5-26d31c181934">
535
+ <div class="formula">
536
+ <p><span class="stem">(#(r = 1 %)#)</span></p>
537
+ </div>
538
+ <span class='zzMoveToFollowing'>
539
+ where <span class='stem'>(#(r)#)</span>
540
+ </span>
541
+ <p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
542
+ <div id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0" class="Note">
543
+ <p>&#160; [durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p>
544
+ </div>
545
+ </div>
546
+ <div id="_be9158af-7e93-4ee2-90c5-26d31c181935">
547
+ <div class="formula">
548
+ <p><span class="stem">(#(r = 1 %)#)</span>&#160; (1)</p>
549
+ </div>
550
+ </div>
551
+ </div>
552
+ <p class="zzSTDTitle1"/>
553
+ </div>
554
+ </body>
555
+ </html>
531
556
  OUTPUT
532
557
  end
533
-
534
-
535
558
  end