isodoc 0.5.5 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +46 -0
  3. data/LICENSE +25 -0
  4. data/README.adoc +1 -1
  5. data/Rakefile +6 -0
  6. data/isodoc.gemspec +1 -0
  7. data/lib/isodoc.rb +4 -95
  8. data/lib/isodoc/cleanup.rb +14 -10
  9. data/lib/isodoc/{notes.rb → comments.rb} +0 -73
  10. data/lib/isodoc/convert.rb +97 -0
  11. data/lib/isodoc/footnotes.rb +74 -0
  12. data/lib/isodoc/html.rb +41 -4
  13. data/lib/isodoc/i18n-en.yaml +1 -0
  14. data/lib/isodoc/i18n-fr.yaml +1 -0
  15. data/lib/isodoc/i18n-zh-Hans.yaml +1 -0
  16. data/lib/isodoc/i18n.rb +1 -0
  17. data/lib/isodoc/inline.rb +4 -12
  18. data/lib/isodoc/iso2wordhtml.rb +26 -13
  19. data/lib/isodoc/metadata.rb +23 -10
  20. data/lib/isodoc/references.rb +20 -22
  21. data/lib/isodoc/section.rb +4 -3
  22. data/lib/isodoc/table.rb +0 -2
  23. data/lib/isodoc/terms.rb +2 -13
  24. data/lib/isodoc/utils.rb +24 -3
  25. data/lib/isodoc/version.rb +1 -1
  26. data/lib/isodoc/wordconvert/comments.rb +155 -0
  27. data/lib/isodoc/wordconvert/convert.rb +31 -0
  28. data/lib/isodoc/wordconvert/footnotes.rb +80 -0
  29. data/lib/isodoc/wordconvert/wordconvertmodule.rb +212 -0
  30. data/lib/isodoc/xref_gen.rb +50 -79
  31. data/lib/isodoc/xref_sect_gen.rb +82 -0
  32. data/spec/assets/header.html +7 -0
  33. data/spec/assets/html.css +2 -0
  34. data/spec/assets/htmlcover.html +4 -0
  35. data/spec/assets/htmlintro.html +5 -0
  36. data/spec/assets/i18n.yaml +2 -0
  37. data/spec/assets/iso.xml +8 -0
  38. data/spec/assets/rice_image1.png +0 -0
  39. data/spec/assets/std.css +2 -0
  40. data/spec/assets/word.css +2 -0
  41. data/spec/assets/wordcover.html +3 -0
  42. data/spec/assets/wordintro.html +4 -0
  43. data/spec/isodoc/blocks_spec.rb +130 -47
  44. data/spec/isodoc/cleanup_spec.rb +693 -0
  45. data/spec/isodoc/footnotes_spec.rb +282 -0
  46. data/spec/isodoc/i18n_spec.rb +662 -0
  47. data/spec/isodoc/inline_spec.rb +344 -0
  48. data/spec/isodoc/lists_spec.rb +81 -18
  49. data/spec/isodoc/metadata_spec.rb +141 -0
  50. data/spec/isodoc/postproc_spec.rb +444 -0
  51. data/spec/isodoc/ref_spec.rb +158 -0
  52. data/spec/isodoc/section_spec.rb +275 -112
  53. data/spec/isodoc/table_spec.rb +146 -8
  54. data/spec/isodoc/terms_spec.rb +118 -0
  55. data/spec/isodoc/xref_spec.rb +490 -114
  56. metadata +46 -4
  57. data/lib/isodoc/postprocessing.rb +0 -176
@@ -0,0 +1,158 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe IsoDoc do
4
+ it "processes IsoXML bibliographies" do
5
+ expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
6
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
7
+ <foreword>
8
+ <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">
9
+ <eref bibitemid="ISO712"/>
10
+ <eref bibitemid="ref1"/>
11
+ <eref bibitemid="ref10"/>
12
+ </p>
13
+ </foreword>
14
+ <references id="_normative_references" obligation="informative"><title>Normative References</title>
15
+ <bibitem id="ISO712" type="standard">
16
+ <title format="text/plain">Cereals and cereal products</title>
17
+ <docidentifier>ISO 712</docidentifier>
18
+ <contributor>
19
+ <role type="publisher"/>
20
+ <organization>
21
+ <name>International Organization for Standardization</name>
22
+ </organization>
23
+ </contributor>
24
+ </bibitem>
25
+ <bibitem id="ISO16634" type="standard">
26
+ <title format="text/plain">Cereals, pulses, milled cereal products, oilseeds and animal feeding stuffs</title>
27
+ <docidentifier>ISO 16634:All Parts</docidentifier>
28
+ <date type="published"><from>--</from></date>
29
+ <contributor>
30
+ <role type="publisher"/>
31
+ <organization>
32
+ <abbreviation>ISO</abbreviation>
33
+ </organization>
34
+ </contributor>
35
+ <note format="text/plain" reference="1">ISO DATE: Under preparation. (Stage at the time of publication ISO/DIS 16634)</note>
36
+ </bibitem>
37
+ <bibitem id="ISO20483" type="standard">
38
+ <title format="text/plain">Cereals and pulses</title>
39
+ <docidentifier>ISO 20483</docidentifier>
40
+ <date type="published"><from>2013</from><to>2014</to></date>
41
+ <contributor>
42
+ <role type="publisher"/>
43
+ <organization>
44
+ <name>International Organization for Standardization</name>
45
+ </organization>
46
+ </contributor>
47
+ </bibitem>
48
+ <bibitem id="ref1">
49
+ <formattedref format="application/x-isodoc+xml"><smallcap>Standard No I.C.C 167</smallcap>. <em>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</em> (see <link target="http://www.icc.or.at"/>)</formattedref>
50
+ <docidentifier>ICC 167</docidentifier>
51
+ </bibitem>
52
+
53
+ </references><references id="_bibliography" obligation="informative">
54
+ <title>Bibliography</title>
55
+ <bibitem id="ISO3696" type="standard">
56
+ <title format="text/plain">Water for analytical laboratory use</title>
57
+ <docidentifier>ISO 3696</docidentifier>
58
+ <contributor>
59
+ <role type="publisher"/>
60
+ <organization>
61
+ <abbreviation>ISO</abbreviation>
62
+ </organization>
63
+ </contributor>
64
+ </bibitem>
65
+ <bibitem id="ref10">
66
+ <formattedref format="application/x-isodoc+xml"><smallcap>Standard No I.C.C 167</smallcap>. <em>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</em> (see <link target="http://www.icc.or.at"/>)</formattedref>
67
+ <docidentifier>[10]</docidentifier>
68
+ </bibitem>
69
+ <bibitem id="ref11">
70
+ <formattedref format="application/x-isodoc+xml"><smallcap>Standard No I.C.C 167</smallcap>. <em>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</em> (see <link target="http://www.icc.or.at"/>)</formattedref>
71
+ <docidentifier>IETF RFC 10</docidentifier>
72
+ </bibitem>
73
+
74
+
75
+ </references>
76
+ </iso-standard>
77
+ INPUT
78
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
79
+ <head>
80
+ <title>test</title>
81
+ <body lang="EN-US" link="blue" vlink="#954F72">
82
+ <div class="WordSection1">
83
+ <p>&#160;</p>
84
+ </div>
85
+ <br/>
86
+ <div class="WordSection2">
87
+ <br/>
88
+ <div>
89
+ <h1 class="ForewordTitle">Foreword</h1>
90
+ <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">
91
+ <a href="#ISO712">ISO 712</a>
92
+ <a href="#ref1">ICC 167</a>
93
+ <a href="#ref10">[10]</a>
94
+ </p>
95
+ </div>
96
+ <p>&#160;</p>
97
+ </div>
98
+ <br/>
99
+ <div class="WordSection3">
100
+ <p class="zzSTDTitle1"/>
101
+ <div>
102
+ <h1>2.&#160; Normative References</h1>
103
+ <p>The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
104
+ <p id="ISO712">ISO 712, <i> Cereals and cereal products</i></p>
105
+ <p id="ISO16634">ISO 16634:All Parts: --<a href="#ftn1" epub:type="footnote"><sup>1</sup></a>, <i> Cereals, pulses, milled cereal products, oilseeds and animal feeding stuffs</i></p>
106
+ <p id="ISO20483">ISO 20483: 2013&#8211;2014, <i> Cereals and pulses</i></p>
107
+ <p id="ref1" class="Biblio">ICC 167, <span style="font-variant:small-caps;">Standard No I.C.C 167</span>. <i>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</i> (see <a href="http://www.icc.or.at">http://www.icc.or.at</a>)</p>
108
+ </div>
109
+ <br/>
110
+ <div>
111
+ <h1 class="Section3">Bibliography</h1>
112
+ <p id="ISO3696" class="Biblio">[1]&#160; ISO 3696, <i> Water for analytical laboratory use</i></p>
113
+ <p id="ref10" class="Biblio">[10]&#160; <span style="font-variant:small-caps;">Standard No I.C.C 167</span>. <i>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</i> (see <a href="http://www.icc.or.at">http://www.icc.or.at</a>)</p>
114
+ <p id="ref11" class="Biblio">[3]&#160; IETF RFC 10,<span style="font-variant:small-caps;">Standard No I.C.C 167</span>. <i>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</i> (see <a href="http://www.icc.or.at">http://www.icc.or.at</a>)</p>
115
+ </div>
116
+ <aside id="ftn1">
117
+ <p>Under preparation. (Stage at the time of publication ISO/DIS 16634)</p>
118
+ </aside>
119
+ </div>
120
+ </body>
121
+ </head>
122
+ </html>
123
+ OUTPUT
124
+ end
125
+
126
+ it "processes empty IsoXML Normative References" do
127
+ expect(IsoDoc::Convert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
128
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
129
+ <references id="_normative_references" obligation="informative"><title>Normative References</title>
130
+ </references>
131
+ </iso-standard>
132
+ INPUT
133
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
134
+ <head>
135
+ <title>test</title>
136
+ <body lang="EN-US" link="blue" vlink="#954F72">
137
+ <div class="WordSection1">
138
+ <p>&#160;</p>
139
+ </div>
140
+ <br/>
141
+ <div class="WordSection2">
142
+ <p>&#160;</p>
143
+ </div>
144
+ <br/>
145
+ <div class="WordSection3">
146
+ <p class="zzSTDTitle1"/>
147
+ <div>
148
+ <h1>2.&#160; Normative References</h1>
149
+ <p>There are no normative references in this document.</p>
150
+ </div>
151
+ </div>
152
+ </body>
153
+ </head>
154
+ </html>
155
+ OUTPUT
156
+ end
157
+
158
+ end
@@ -64,100 +64,261 @@ RSpec.describe IsoDoc do
64
64
  </references>
65
65
  </iso-standard>
66
66
  INPUT
67
- <html xmlns:epub="http://www.idpf.org/2007/ops">
68
- <head>
69
- <title>test</title>
70
- <body lang="EN-US" link="blue" vlink="#954F72">
71
- <div class="WordSection1">
72
- <p>&#160;</p>
73
- </div>
74
- <br clear="all" class="section"/>
75
- <div class="WordSection2">
76
- <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
77
- <div>
78
- <h1 class="ForewordTitle">Foreword</h1>
79
- <p id="A">This is a preamble</p>
80
- </div>
81
- <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
82
- <div class="Section3" id="B">
83
- <h1 class="IntroTitle">0.<span style="mso-tab-count:1">&#160; </span>Introduction</h1>
84
- <div id="C">
85
- <h2>0.1. Introduction Subsection</h2>
86
- </div>
87
- <p>This is patent boilerplate</p>
88
- </div>
89
- <p>&#160;</p>
90
- </div>
91
- <br clear="all" class="section"/>
92
- <div class="WordSection3">
93
- <p class="zzSTDTitle1"/>
94
- <div id="D">
95
- <h1>1.<span style="mso-tab-count:1">&#160; </span>Scope</h1>
96
- <p id="E">Text</p>
97
- </div>
98
- <div>
99
- <h1>2.<span style="mso-tab-count:1">&#160; </span>Normative References</h1>
100
- <p>There are no normative references in this document.</p>
101
- </div>
102
- <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>For the purposes of this document,
103
- the following terms and definitions apply.</p>
104
- <p>ISO and IEC maintain terminological databases for use in
105
- standardization at the following addresses:</p>
67
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
68
+ <head>
69
+ <title>test</title>
70
+ <body lang="EN-US" link="blue" vlink="#954F72">
71
+ <div class="WordSection1">
72
+ <p>&#160;</p>
73
+ </div>
74
+ <br/>
75
+ <div class="WordSection2">
76
+ <br/>
77
+ <div>
78
+ <h1 class="ForewordTitle">Foreword</h1>
79
+ <p id="A">This is a preamble</p>
80
+ </div>
81
+ <br/>
82
+ <div class="Section3" id="B">
83
+ <h1 class="IntroTitle">0.&#160; Introduction</h1>
84
+ <div id="C">
85
+ <h2>0.1. Introduction Subsection</h2>
86
+ </div>
87
+ <p>This is patent boilerplate</p>
88
+ </div>
89
+ <p>&#160;</p>
90
+ </div>
91
+ <br/>
92
+ <div class="WordSection3">
93
+ <p class="zzSTDTitle1"/>
94
+ <div id="D">
95
+ <h1>1.&#160; Scope</h1>
96
+ <p id="E">Text</p>
97
+ </div>
98
+ <div>
99
+ <h1>2.&#160; Normative References</h1>
100
+ <p>There are no normative references in this document.</p>
101
+ </div>
102
+ <div id="H"><h1>3.&#160; Terms and Definitions</h1><p>For the purposes of this document,
103
+ the following terms and definitions apply.</p>
104
+ <p>ISO and IEC maintain terminological databases for use in
105
+ standardization at the following addresses:</p>
106
+
107
+ <ul>
108
+ <li> <p>ISO Online browsing platform: available at
109
+ <a href="http://www.iso.org/obp">http://www.iso.org/obp</a></p> </li>
110
+ <li> <p>IEC Electropedia: available at
111
+ <a href="http://www.electropedia.org">http://www.electropedia.org</a>
112
+ </p> </li> </ul>
113
+ <div id="I">
114
+ <h2>3.1. Normal Terms</h2>
115
+ <p class="TermNum" id="J">3.1.1</p>
116
+ <p class="Terms">Term2</p>
117
+
118
+ </div><div id="K"><h2>3.2. Symbols and Abbreviated Terms</h2>
119
+ <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
120
+ </div></div>
121
+ <div id="L" class="Symbols">
122
+ <h1>4.&#160; Symbols and Abbreviated Terms</h1>
123
+ <dl>
124
+ <dt>
125
+ <p>Symbol</p>
126
+ </dt>
127
+ <dd>Definition</dd>
128
+ </dl>
129
+ </div>
130
+ <div id="M">
131
+ <h1>5.&#160; Clause 4</h1>
132
+ <div id="N">
133
+ <h2>5.1. Introduction</h2>
134
+ </div>
135
+ <div id="O">
136
+ <h2>5.2. Clause 4.2</h2>
137
+ </div>
138
+ </div>
139
+ <br/>
140
+ <div id="P" class="Section3">
141
+ <h1 class="Annex"><b>Annex A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
142
+ <div id="Q">
143
+ <h2>A.1. Annex A.1</h2>
144
+ <div id="Q1">
145
+ <h3>A.1.1. Annex A.1a</h3>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ <br/>
150
+ <div>
151
+ <h1 class="Section3">Bibliography</h1>
152
+ <div>
153
+ <h2 class="Section3">Bibliography Subsection</h2>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </body>
158
+ </head>
159
+ </html>
160
+ OUTPUT
161
+ end
106
162
 
107
- <ul>
108
- <li> <p>ISO Online browsing platform: available at
109
- <a href="http://www.iso.org/obp">http://www.iso.org/obp</a></p> </li>
110
- <li> <p>IEC Electropedia: available at
111
- <a href="http://www.electropedia.org">http://www.electropedia.org</a>
112
- </p> </li> </ul>
113
- <div id="I">
114
- <h2>3.1. Normal Terms</h2>
115
- <p class="TermNum" id="J">3.1.1</p>
116
- <p class="Terms">Term2</p>
163
+ it "processes section names (Word)" do
164
+ expect(IsoDoc::WordConvert.new({}).convert_file(<<~"INPUT", "test", true)).to be_equivalent_to <<~"OUTPUT"
165
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
166
+ <foreword obligation="informative">
167
+ <title>Foreword</title>
168
+ <p id="A">This is a preamble</p>
169
+ </foreword>
170
+ <introduction id="B" obligation="informative"><title>Introduction</title><subsection id="C" inline-header="false" obligation="informative">
171
+ <title>Introduction Subsection</title>
172
+ </subsection>
173
+ <patent-notice>
174
+ <p>This is patent boilerplate</p>
175
+ </patent-notice>
176
+ </introduction><sections>
177
+ <clause id="D" obligation="normative">
178
+ <title>Scope</title>
179
+ <p id="E">Text</p>
180
+ </clause>
117
181
 
118
- </div><div id="K"><h2>3.2. Symbols and Abbreviated Terms</h2>
119
- <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
120
- </div></div>
121
- <div id="L" class="Symbols">
122
- <h1>4.<span style="mso-tab-count:1">&#160; </span>Symbols and Abbreviated Terms</h1>
123
- <dl>
124
- <dt>
125
- <p>Symbol</p>
126
- </dt>
127
- <dd>Definition</dd>
128
- </dl>
129
- </div>
130
- <div id="M">
131
- <h1>5.<span style="mso-tab-count:1">&#160; </span>Clause 4</h1>
132
- <div id="N">
133
- <h2>5.1. Introduction</h2>
134
- </div>
135
- <div id="O">
136
- <h2>5.2. Clause 4.2</h2>
137
- </div>
138
- </div>
139
- <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
140
- <div id="P" class="Section3">
141
- <h1 class="Annex"><b>Annex A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
142
- <div id="Q">
143
- <h2>A.1. Annex A.1</h2>
144
- <div id="Q1">
145
- <h3>A.1.1. Annex A.1a</h3>
146
- </div>
147
- </div>
148
- </div>
149
- <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
150
- <div>
151
- <h1 class="Section3">Bibliography</h1>
152
- <div>
153
- <h2 class="Section3">Bibliography Subsection</h2>
154
- </div>
155
- </div>
156
- </div>
157
- </body>
158
- </head>
159
- </html>
160
- OUTPUT
182
+ <terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="I" obligation="normative">
183
+ <title>Normal Terms</title>
184
+ <term id="J">
185
+ <preferred>Term2</preferred>
186
+ </term>
187
+ </terms>
188
+ <symbols-abbrevs id="K">
189
+ <dl>
190
+ <dt>Symbol</dt>
191
+ <dd>Definition</dd>
192
+ </dl>
193
+ </symbols-abbrevs>
194
+ </terms>
195
+ <symbols-abbrevs id="L">
196
+ <dl>
197
+ <dt>Symbol</dt>
198
+ <dd>Definition</dd>
199
+ </dl>
200
+ </symbols-abbrevs>
201
+ <clause id="M" inline-header="false" obligation="normative"><title>Clause 4</title><subsection id="N" inline-header="false" obligation="normative">
202
+ <title>Introduction</title>
203
+ </subsection>
204
+ <subsection id="O" inline-header="false" obligation="normative">
205
+ <title>Clause 4.2</title>
206
+ </subsection></clause>
207
+
208
+ </sections><annex id="P" inline-header="false" obligation="normative">
209
+ <title>Annex</title>
210
+ <subsection id="Q" inline-header="false" obligation="normative">
211
+ <title>Annex A.1</title>
212
+ <subsection id="Q1" inline-header="false" obligation="normative">
213
+ <title>Annex A.1a</title>
214
+ </subsection>
215
+ </subsection>
216
+ </annex><references id="R" obligation="informative">
217
+ <title>Normative References</title>
218
+ </references><references id="S" obligation="informative">
219
+ <title>Bibliography</title>
220
+ <references id="T" obligation="informative">
221
+ <title>Bibliography Subsection</title>
222
+ </references>
223
+ </references>
224
+ </iso-standard>
225
+ INPUT
226
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
227
+ <head>
228
+ <title>test</title>
229
+ <body lang="EN-US" link="blue" vlink="#954F72">
230
+ <div class="WordSection1">
231
+ <p>&#160;</p>
232
+ </div>
233
+ <br clear="all" class="section"/>
234
+ <div class="WordSection2">
235
+ <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
236
+ <div>
237
+ <h1 class="ForewordTitle">Foreword</h1>
238
+ <p id="A">This is a preamble</p>
239
+ </div>
240
+ <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
241
+ <div class="Section3" id="B">
242
+ <h1 class="IntroTitle">0.<span style="mso-tab-count:1">&#160; </span>Introduction</h1>
243
+ <div id="C">
244
+ <h2>0.1. Introduction Subsection</h2>
245
+ </div>
246
+ <p>This is patent boilerplate</p>
247
+ </div>
248
+ <p>&#160;</p>
249
+ </div>
250
+ <br clear="all" class="section"/>
251
+ <div class="WordSection3">
252
+ <p class="zzSTDTitle1"/>
253
+ <div id="D">
254
+ <h1>1.<span style="mso-tab-count:1">&#160; </span>Scope</h1>
255
+ <p id="E">Text</p>
256
+ </div>
257
+ <div>
258
+ <h1>2.<span style="mso-tab-count:1">&#160; </span>Normative References</h1>
259
+ <p>There are no normative references in this document.</p>
260
+ </div>
261
+ <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>For the purposes of this document,
262
+ the following terms and definitions apply.</p>
263
+ <p>ISO and IEC maintain terminological databases for use in
264
+ standardization at the following addresses:</p>
265
+
266
+ <ul>
267
+ <li> <p>ISO Online browsing platform: available at
268
+ <a href="http://www.iso.org/obp">http://www.iso.org/obp</a></p> </li>
269
+ <li> <p>IEC Electropedia: available at
270
+ <a href="http://www.electropedia.org">http://www.electropedia.org</a>
271
+ </p> </li> </ul>
272
+ <div id="I">
273
+ <h2>3.1. Normal Terms</h2>
274
+ <p class="TermNum" id="J">3.1.1</p>
275
+ <p class="Terms">Term2</p>
276
+
277
+ </div><div id="K"><h2>3.2. Symbols and Abbreviated Terms</h2>
278
+ <table class="dl"><tr><td valign="top" align="left"><p style="text-align: left;">Symbol</p></td><td valign="top">Definition</td></tr></table>
279
+ </div></div>
280
+ <div id="L" class="Symbols">
281
+ <h1>4.<span style="mso-tab-count:1">&#160; </span>Symbols and Abbreviated Terms</h1>
282
+ <table class="dl">
283
+ <tr>
284
+ <td valign="top" align="left">
285
+ <p style="text-align: left;">Symbol</p>
286
+ </td>
287
+ <td valign="top">Definition</td>
288
+ </tr>
289
+ </table>
290
+ </div>
291
+ <div id="M">
292
+ <h1>5.<span style="mso-tab-count:1">&#160; </span>Clause 4</h1>
293
+ <div id="N">
294
+ <h2>5.1. Introduction</h2>
295
+ </div>
296
+ <div id="O">
297
+ <h2>5.2. Clause 4.2</h2>
298
+ </div>
299
+ </div>
300
+ <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
301
+ <div id="P" class="Section3">
302
+ <h1 class="Annex"><b>Annex A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
303
+ <div id="Q">
304
+ <h2>A.1. Annex A.1</h2>
305
+ <div id="Q1">
306
+ <h3>A.1.1. Annex A.1a</h3>
307
+ </div>
308
+ </div>
309
+ </div>
310
+ <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
311
+ <div>
312
+ <h1 class="Section3">Bibliography</h1>
313
+ <div>
314
+ <h2 class="Section3">Bibliography Subsection</h2>
315
+ </div>
316
+ </div>
317
+ </div>
318
+ </body>
319
+ </head>
320
+ </html>
321
+ OUTPUT
161
322
  end
162
323
 
163
324
  it "processes simple terms & definitions" do
@@ -179,14 +340,14 @@ RSpec.describe IsoDoc do
179
340
  <div class="WordSection1">
180
341
  <p>&#160;</p>
181
342
  </div>
182
- <br clear="all" class="section"/>
343
+ <br/>
183
344
  <div class="WordSection2">
184
345
  <p>&#160;</p>
185
346
  </div>
186
- <br clear="all" class="section"/>
347
+ <br/>
187
348
  <div class="WordSection3">
188
349
  <p class="zzSTDTitle1"/>
189
- <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>For the purposes of this document,
350
+ <div id="H"><h1>3.&#160; Terms and Definitions</h1><p>For the purposes of this document,
190
351
  the following terms and definitions apply.</p>
191
352
  <p>ISO and IEC maintain terminological databases for use in
192
353
  standardization at the following addresses:</p>
@@ -225,7 +386,7 @@ RSpec.describe IsoDoc do
225
386
  <contributor>
226
387
  <role type="publisher"/>
227
388
  <organization>
228
- <name>ISO</name>
389
+ <name>International Organization for Standardization</name>
229
390
  </organization>
230
391
  </contributor>
231
392
  </bibitem></references>
@@ -238,19 +399,19 @@ RSpec.describe IsoDoc do
238
399
  <div class="WordSection1">
239
400
  <p>&#160;</p>
240
401
  </div>
241
- <br clear="all" class="section"/>
402
+ <br/>
242
403
  <div class="WordSection2">
243
404
  <p>&#160;</p>
244
405
  </div>
245
- <br clear="all" class="section"/>
406
+ <br/>
246
407
  <div class="WordSection3">
247
408
  <p class="zzSTDTitle1"/>
248
409
  <div>
249
- <h1>2.<span style="mso-tab-count:1">&#160; </span>Normative References</h1>
410
+ <h1>2.&#160; Normative References</h1>
250
411
  <p>The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
251
412
  <p id="ISO712">ISO 712, <i> Cereals and cereal products?~@~I?~@~T?~@~IDetermination of moisture content?~@~I?~@~T?~@~IReference method</i></p>
252
413
  </div>
253
- <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>For the purposes of this document, the terms and definitions
414
+ <div id="H"><h1>3.&#160; Terms and Definitions</h1><p>For the purposes of this document, the terms and definitions
254
415
  given in ISO 712 and the following apply.</p>
255
416
  <p>ISO and IEC maintain terminological databases for use in
256
417
  standardization at the following addresses:</p>
@@ -277,6 +438,8 @@ RSpec.describe IsoDoc do
277
438
  <sections>
278
439
  <terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
279
440
  <source type="inline" bibitemid="ISO712" citeas="ISO 712"/>
441
+ <source type="inline" bibitemid="ISO712" citeas="ISO 712"/>
442
+ <source type="inline" bibitemid="ISO712" citeas="ISO 712"/>
280
443
  </terms>
281
444
  </sections>
282
445
  <references id="_normative_references" obligation="informative"><title>Normative References</title>
@@ -286,7 +449,7 @@ RSpec.describe IsoDoc do
286
449
  <contributor>
287
450
  <role type="publisher"/>
288
451
  <organization>
289
- <name>ISO</name>
452
+ <abbreviation>ISO</abbreviation>
290
453
  </organization>
291
454
  </contributor>
292
455
  </bibitem></references>
@@ -299,20 +462,20 @@ RSpec.describe IsoDoc do
299
462
  <div class="WordSection1">
300
463
  <p>&#160;</p>
301
464
  </div>
302
- <br clear="all" class="section"/>
465
+ <br/>
303
466
  <div class="WordSection2">
304
467
  <p>&#160;</p>
305
468
  </div>
306
- <br clear="all" class="section"/>
469
+ <br/>
307
470
  <div class="WordSection3">
308
471
  <p class="zzSTDTitle1"/>
309
472
  <div>
310
- <h1>2.<span style="mso-tab-count:1">&#160; </span>Normative References</h1>
473
+ <h1>2.&#160; Normative References</h1>
311
474
  <p>The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
312
475
  <p id="ISO712">ISO 712, <i> Cereals and cereal products?~@~I?~@~T?~@~IDetermination of moisture content?~@~I?~@~T?~@~IReference method</i></p>
313
476
  </div>
314
- <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>For the purposes of this document,
315
- the terms and definitions given in ISO 712 apply.</p>
477
+ <div id="H"><h1>3.&#160; Terms and Definitions</h1><p>For the purposes of this document,
478
+ the terms and definitions given in ISO 712, ISO 712 and ISO 712 apply.</p>
316
479
  <p>ISO and IEC maintain terminological databases for use in
317
480
  standardization at the following addresses:</p>
318
481
 
@@ -347,14 +510,14 @@ RSpec.describe IsoDoc do
347
510
  <div class="WordSection1">
348
511
  <p>&#160;</p>
349
512
  </div>
350
- <br clear="all" class="section"/>
513
+ <br/>
351
514
  <div class="WordSection2">
352
515
  <p>&#160;</p>
353
516
  </div>
354
- <br clear="all" class="section"/>
517
+ <br/>
355
518
  <div class="WordSection3">
356
519
  <p class="zzSTDTitle1"/>
357
- <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
520
+ <div id="H"><h1>3.&#160; Terms and Definitions</h1><p>No terms and definitions are listed in this document.</p>
358
521
  <p>ISO and IEC maintain terminological databases for use in
359
522
  standardization at the following addresses:</p>
360
523
 
@@ -393,15 +556,15 @@ RSpec.describe IsoDoc do
393
556
  <div class="WordSection1">
394
557
  <p>&#160;</p>
395
558
  </div>
396
- <br clear="all" class="section"/>
559
+ <br/>
397
560
  <div class="WordSection2">
398
561
  <p>&#160;</p>
399
562
  </div>
400
- <br clear="all" class="section"/>
563
+ <br/>
401
564
  <div class="WordSection3">
402
565
  <p class="zzSTDTitle1"/>
403
566
  <div id="M">
404
- <h1>4.<span style="mso-tab-count:1">&#160; </span>Clause 4</h1>
567
+ <h1>4.&#160; Clause 4</h1>
405
568
  <div id="N">
406
569
  <h2>4.1. Introduction</h2>
407
570
  </div>