metanorma-bsi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.hound.yml +3 -0
  4. data/.rubocop.yml +14 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE +25 -0
  8. data/README.adoc +199 -0
  9. data/Rakefile +8 -0
  10. data/bin/rspec +18 -0
  11. data/lib/asciidoctor/bsi/basicdoc.rng +1131 -0
  12. data/lib/asciidoctor/bsi/biblio.rng +1235 -0
  13. data/lib/asciidoctor/bsi/bsi.rng +120 -0
  14. data/lib/asciidoctor/bsi/bsi_intro_en.xml +105 -0
  15. data/lib/asciidoctor/bsi/cleanup.rb +78 -0
  16. data/lib/asciidoctor/bsi/cleanup_ref.rb +183 -0
  17. data/lib/asciidoctor/bsi/converter.rb +83 -0
  18. data/lib/asciidoctor/bsi/front.rb +67 -0
  19. data/lib/asciidoctor/bsi/isodoc.rng +1870 -0
  20. data/lib/asciidoctor/bsi/isostandard.rng +477 -0
  21. data/lib/asciidoctor/bsi/reqt.rng +194 -0
  22. data/lib/asciidoctor/bsi/validate.rb +224 -0
  23. data/lib/asciidoctor/bsi/validate_list.rb +72 -0
  24. data/lib/asciidoctor/bsi/validate_requirement.rb +163 -0
  25. data/lib/isodoc/bsi/base_convert.rb +91 -0
  26. data/lib/isodoc/bsi/bsi.international-standard.xsl +6540 -0
  27. data/lib/isodoc/bsi/html/html_bsi_intro.html +8 -0
  28. data/lib/isodoc/bsi/html/html_bsi_titlepage.html +50 -0
  29. data/lib/isodoc/bsi/html/htmlstyle.css +968 -0
  30. data/lib/isodoc/bsi/html/htmlstyle.scss +699 -0
  31. data/lib/isodoc/bsi/html_convert.rb +56 -0
  32. data/lib/isodoc/bsi/i18n-en.yaml +56 -0
  33. data/lib/isodoc/bsi/i18n.rb +15 -0
  34. data/lib/isodoc/bsi/init.rb +24 -0
  35. data/lib/isodoc/bsi/metadata.rb +33 -0
  36. data/lib/isodoc/bsi/pdf_convert.rb +17 -0
  37. data/lib/isodoc/bsi/presentation_xml_convert.rb +72 -0
  38. data/lib/isodoc/bsi/sts_convert.rb +30 -0
  39. data/lib/isodoc/bsi/xref.rb +134 -0
  40. data/lib/metanorma-bsi.rb +15 -0
  41. data/lib/metanorma/bsi.rb +6 -0
  42. data/lib/metanorma/bsi/processor.rb +51 -0
  43. data/lib/metanorma/bsi/version.rb +6 -0
  44. data/metanorma-bsi.gemspec +47 -0
  45. data/spec/asciidoctor/base_spec.rb +778 -0
  46. data/spec/asciidoctor/blocks_spec.rb +553 -0
  47. data/spec/asciidoctor/cleanup_spec.rb +547 -0
  48. data/spec/asciidoctor/inline_spec.rb +176 -0
  49. data/spec/asciidoctor/lists_spec.rb +194 -0
  50. data/spec/asciidoctor/refs_spec.rb +318 -0
  51. data/spec/asciidoctor/section_spec.rb +382 -0
  52. data/spec/asciidoctor/validate_spec.rb +858 -0
  53. data/spec/assets/header.html +7 -0
  54. data/spec/assets/html.css +2 -0
  55. data/spec/assets/iso.xml +71 -0
  56. data/spec/assets/rice_image1.png +0 -0
  57. data/spec/assets/word.css +2 -0
  58. data/spec/assets/wordintro.html +4 -0
  59. data/spec/assets/xref_error.adoc +7 -0
  60. data/spec/isodoc/blocks_spec.rb +259 -0
  61. data/spec/isodoc/i18n_spec.rb +442 -0
  62. data/spec/isodoc/inline_spec.rb +287 -0
  63. data/spec/isodoc/iso_spec.rb +116 -0
  64. data/spec/isodoc/metadata_spec.rb +262 -0
  65. data/spec/isodoc/postproc_spec.rb +137 -0
  66. data/spec/isodoc/ref_spec.rb +376 -0
  67. data/spec/isodoc/section_spec.rb +467 -0
  68. data/spec/isodoc/terms_spec.rb +246 -0
  69. data/spec/isodoc/xref_spec.rb +1730 -0
  70. data/spec/metanorma/processor_spec.rb +76 -0
  71. data/spec/spec_helper.rb +291 -0
  72. data/spec/vcr_cassettes/iso-639.yml +182 -0
  73. data/spec/vcr_cassettes/isobib_get_639_1967.yml +136 -0
  74. data/spec/vcr_cassettes/multistandard.yml +352 -0
  75. metadata +343 -0
@@ -0,0 +1,287 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe IsoDoc do
4
+ it "processes inline formatting" do
5
+ expect(xmlpp(IsoDoc::BSI::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>
16
+ INPUT
17
+ #{HTML_HDR}
18
+ <div>
19
+ <h1 class="ForewordTitle">FOREWORD</h1>
20
+ <div class="boilerplate_legal"/>
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
+ #{IEC_TITLE1}
28
+ </div>
29
+ </body>
30
+ </html>
31
+ OUTPUT
32
+ end
33
+
34
+ it "processes links" do
35
+ expect(xmlpp(IsoDoc::BSI::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>
47
+ INPUT
48
+ #{HTML_HDR}
49
+ <div>
50
+ <h1 class="ForewordTitle">FOREWORD</h1>
51
+ <div class="boilerplate_legal"/>
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
+ #{IEC_TITLE1}
60
+ </div>
61
+ </body>
62
+ </html>
63
+ OUTPUT
64
+ end
65
+
66
+ it "processes unrecognised markup" do
67
+ expect(xmlpp(IsoDoc::BSI::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>
76
+ INPUT
77
+ #{HTML_HDR}
78
+ <div>
79
+ <h1 class="ForewordTitle">FOREWORD</h1>
80
+ <div class="boilerplate_legal"/>
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
+ #{IEC_TITLE1}
86
+ </div>
87
+ </body>
88
+ </html>
89
+ OUTPUT
90
+ end
91
+
92
+ it "processes AsciiMath and MathML" do
93
+ expect(xmlpp(IsoDoc::BSI::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>
104
+ INPUT
105
+ #{HTML_HDR.sub(/<html/, "<html xmlns:m='m'")}
106
+ <div>
107
+ <h1 class="ForewordTitle">FOREWORD</h1>
108
+ <div class="boilerplate_legal"/>
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
+ #{IEC_TITLE1}
118
+ </div>
119
+ </body>
120
+ </html>
121
+ OUTPUT
122
+ end
123
+
124
+ it "overrides AsciiMath delimiters" do
125
+ expect(xmlpp(IsoDoc::BSI::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>
135
+ INPUT
136
+ #{HTML_HDR}
137
+ <div>
138
+ <h1 class="ForewordTitle">FOREWORD</h1>
139
+ <div class="boilerplate_legal"/>
140
+ <p>
141
+ <span class="stem">(#(((A)#)))</span>
142
+ (#((Hello))#)
143
+ </p>
144
+ </div>
145
+ #{IEC_TITLE1}
146
+ </div>
147
+ </body>
148
+ </html>
149
+ OUTPUT
150
+ end
151
+
152
+ it "processes eref content" do
153
+ expect(xmlpp(IsoDoc::BSI::PresentationXMLConvert.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="inline" bibitemid="IEV" citeas="IEV"><locality type="clause"><referenceFrom>1-2-3</referenceFrom></locality></eref>
158
+ <eref type="inline" bibitemid="ISO712" citeas="ISO 712"/>
159
+ <eref type="inline" bibitemid="ISO712"/>
160
+ <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality></eref>
161
+ <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality></eref>
162
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality><locality type="table"><referenceFrom>1</referenceFrom></locality></eref>
163
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality><locality type="list"><referenceFrom>a</referenceFrom></locality></eref>
164
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality></eref>
165
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1.5</referenceFrom></locality></eref>
166
+ <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>A</eref>
167
+ <eref type="inline" bibitemid="ISO712"><locality type="whole"></locality></eref>
168
+ <eref type="inline" bibitemid="ISO712"><locality type="locality:prelude"><referenceFrom>7</referenceFrom></locality></eref>
169
+ <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</eref>
170
+ </p>
171
+ </foreword></preface>
172
+ <bibliography><references id="_normative_references" obligation="informative" normative="true"><title>Normative References</title>
173
+ <bibitem id="ISO712" type="standard">
174
+ <title format="text/plain">Cereals and cereal products</title>
175
+ <docidentifier>ISO 712</docidentifier>
176
+ <contributor>
177
+ <role type="publisher"/>
178
+ <organization>
179
+ <abbreviation>ISO</abbreviation>
180
+ </organization>
181
+ </contributor>
182
+ </bibitem>
183
+ </references>
184
+ </bibliography>
185
+ </iso-standard>
186
+ INPUT
187
+ <?xml version='1.0'?>
188
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
189
+ <preface>
190
+ <foreword>
191
+ <p>
192
+ <eref type='inline' bibitemid='IEV' citeas='IEV'>
193
+ <locality type='clause'>
194
+ <referenceFrom>1-2-3</referenceFrom>
195
+ </locality>
196
+ IEV,<strong> 1-2-3</strong>
197
+ </eref>
198
+ <eref type='inline' bibitemid='ISO712' citeas='ISO 712'>ISO 712</eref>
199
+ <eref type='inline' bibitemid='ISO712'>ISO 712</eref>
200
+ <eref type='inline' bibitemid='ISO712'>
201
+ <locality type='table'>
202
+ <referenceFrom>1</referenceFrom>
203
+ </locality>
204
+ ISO 712, Table 1
205
+ </eref>
206
+ <eref type='inline' bibitemid='ISO712'>
207
+ <locality type='table'>
208
+ <referenceFrom>1</referenceFrom>
209
+ <referenceTo>1</referenceTo>
210
+ </locality>
211
+ ISO 712, Table 1&#x2013;1
212
+ </eref>
213
+ <eref type='inline' bibitemid='ISO712'>
214
+ <locality type='clause'>
215
+ <referenceFrom>1</referenceFrom>
216
+ </locality>
217
+ <locality type='table'>
218
+ <referenceFrom>1</referenceFrom>
219
+ </locality>
220
+ ISO 712, Clause <strong>1</strong>, Table 1
221
+ </eref>
222
+ <eref type='inline' bibitemid='ISO712'>
223
+ <locality type='clause'>
224
+ <referenceFrom>1</referenceFrom>
225
+ </locality>
226
+ <locality type='list'>
227
+ <referenceFrom>a</referenceFrom>
228
+ </locality>
229
+ ISO 712, Clause <strong>1</strong>a)
230
+ </eref>
231
+ <eref type='inline' bibitemid='ISO712'>
232
+ <locality type='clause'>
233
+ <referenceFrom>1</referenceFrom>
234
+ </locality>
235
+ ISO 712, Clause <strong>1</strong>
236
+ </eref>
237
+ <eref type='inline' bibitemid='ISO712'>
238
+ <locality type='clause'>
239
+ <referenceFrom>1.5</referenceFrom>
240
+ </locality>
241
+ ISO 712, <strong>1.5</strong>
242
+ </eref>
243
+ <eref type='inline' bibitemid='ISO712'>
244
+ <locality type='table'>
245
+ <referenceFrom>1</referenceFrom>
246
+ </locality>
247
+ A
248
+ </eref>
249
+ <eref type='inline' bibitemid='ISO712'>
250
+ <locality type='whole'/>
251
+ ISO 712, Whole of text
252
+ </eref>
253
+ <eref type='inline' bibitemid='ISO712'>
254
+ <locality type='locality:prelude'>
255
+ <referenceFrom>7</referenceFrom>
256
+ </locality>
257
+ ISO 712, Prelude 7
258
+ </eref>
259
+ <eref type='inline' bibitemid='ISO712' citeas='ISO 712'>A</eref>
260
+ </p>
261
+ </foreword>
262
+ </preface>
263
+ <bibliography>
264
+ <references id='_normative_references' obligation='informative' normative='true'>
265
+ <title depth='1'>
266
+ 1
267
+ <tab/>
268
+ Normative References
269
+ </title>
270
+ <bibitem id='ISO712' type='standard'>
271
+ <title format='text/plain'>Cereals and cereal products</title>
272
+ <docidentifier>ISO 712</docidentifier>
273
+ <contributor>
274
+ <role type='publisher'/>
275
+ <organization>
276
+ <abbreviation>ISO</abbreviation>
277
+ </organization>
278
+ </contributor>
279
+ </bibitem>
280
+ </references>
281
+ </bibliography>
282
+ </iso-standard>
283
+ OUTPUT
284
+ end
285
+
286
+
287
+ end
@@ -0,0 +1,116 @@
1
+ require "spec_helper"
2
+ require "fileutils"
3
+
4
+ RSpec.describe IsoDoc::BSI do
5
+ FileUtils.rm_f "test.html"
6
+ it "processes isodoc as ISO: HTML output" do
7
+ IsoDoc::BSI::HtmlConvert.new({}).convert("test", <<~"INPUT", false)
8
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
9
+ <preface><foreword>
10
+ <note>
11
+ <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
12
+ </note>
13
+ </foreword></preface>
14
+ </iso-standard>
15
+ INPUT
16
+ html = File.read("test.html", encoding: "utf-8")
17
+ expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: "Courier New", monospace;]m)
18
+ expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Tahoma", sans-serif;]m)
19
+ expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Tahoma", sans-serif;]m)
20
+ end
21
+
22
+ it "processes isodoc as ISO: Chinese HTML output" do
23
+ FileUtils.rm_f "test.html"
24
+ IsoDoc::BSI::HtmlConvert.new({script: "Hans"}).convert("test", <<~"INPUT", false)
25
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
26
+ <preface><foreword>
27
+ <note>
28
+ <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
29
+ </note>
30
+ </foreword></preface>
31
+ </iso-standard>
32
+ INPUT
33
+ html = File.read("test.html", encoding: "utf-8")
34
+ expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: "Courier New", monospace;]m)
35
+ expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Source Han Sans", serif;]m)
36
+ expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Source Han Sans", sans-serif;]m)
37
+ end
38
+
39
+ it "processes isodoc as ISO: user nominated fonts" do
40
+ FileUtils.rm_f "test.html"
41
+ IsoDoc::BSI::HtmlConvert.new({bodyfont: "Zapf Chancery", headerfont: "Comic Sans", monospacefont: "Andale Mono"}).convert("test", <<~"INPUT", false)
42
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
43
+ <preface><foreword>
44
+ <note>
45
+ <p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
46
+ </note>
47
+ </foreword></preface>
48
+ </iso-standard>
49
+ INPUT
50
+ html = File.read("test.html", encoding: "utf-8")
51
+ expect(html).to match(%r[\bpre[^{]+\{[^{]+font-family: Andale Mono;]m)
52
+ expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: Zapf Chancery;]m)
53
+ expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: Comic Sans;]m)
54
+ end
55
+
56
+ it "processes examples" do
57
+ expect(xmlpp(IsoDoc::BSI::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
58
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
59
+ <preface><foreword>
60
+ <example id="samplecode">
61
+ <name>EXAMPLE</name>
62
+ <p>Hello</p>
63
+ </example>
64
+ </foreword></preface>
65
+ </iso-standard>
66
+ INPUT
67
+ #{HTML_HDR}
68
+ <div>
69
+ <h1 class="ForewordTitle">FOREWORD</h1>
70
+ <div class="boilerplate_legal"/>
71
+ <div id="samplecode" class="example">
72
+ <p><span class="example_label">EXAMPLE</span>&#8195;Hello</p>
73
+ </div>
74
+ </div>
75
+ #{IEC_TITLE1}
76
+ </div>
77
+ </body>
78
+ </html>
79
+ OUTPUT
80
+ end
81
+
82
+
83
+ it "processes sequences of examples" do
84
+ expect(xmlpp(IsoDoc::BSI::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
85
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
86
+ <preface><foreword>
87
+ <example id="samplecode">
88
+ <name>EXAMPLE 1</name>
89
+ <p>Hello</p>
90
+ </example>
91
+ <example id="samplecode2">
92
+ <name>EXAMPLE 2</name>
93
+ <p>Hello</p>
94
+ </example>
95
+ </foreword></preface>
96
+ </iso-standard>
97
+ INPUT
98
+ #{HTML_HDR}
99
+ <div>
100
+ <h1 class="ForewordTitle">FOREWORD</h1>
101
+ <div class="boilerplate_legal"/>
102
+ <div id="samplecode" class="example">
103
+ <p><span class="example_label">EXAMPLE 1</span>&#8195;Hello</p>
104
+ </div>
105
+ <div id="samplecode2" class="example">
106
+ <p><span class="example_label">EXAMPLE 2</span>&#8195;Hello</p>
107
+ </div>
108
+ </div>
109
+ #{IEC_TITLE1}
110
+ </div>
111
+ </body>
112
+ </html>
113
+ OUTPUT
114
+ end
115
+
116
+ end
@@ -0,0 +1,262 @@
1
+ require "spec_helper"
2
+ require "nokogiri"
3
+
4
+ RSpec.describe IsoDoc::BSI::Metadata do
5
+ it "processes IsoXML metadata" do
6
+ c = IsoDoc::BSI::HtmlConvert.new({})
7
+ arr = c.convert_init(<<~"INPUT", "test", false)
8
+ <iec-standard xmlns="http://riboseinc.com/isoxml">
9
+ INPUT
10
+ expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil)).to_s.gsub(/, :/, ",\n:")).to be_equivalent_to <<~"OUTPUT"
11
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
12
+ <bibdata type="standard">
13
+ <title type="title-intro" language="en" format="text/plain">Cereals and pulses</title>
14
+ <title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
15
+ <title type="title-part" language="en" format="text/plain">Rice</title>
16
+ <title type="title-intro" language="fr" format="text/plain">Céréales et légumineuses</title>
17
+ <title type="title-main" language="fr" format="text/plain">Spécification et méthodes d'essai</title>
18
+ <title type="title-part" language="fr" format="text/plain">Riz</title>
19
+ <docidentifier type="BS">ISO/PreCD3 17301-1</docidentifier>
20
+ <docnumber>1730</docnumber>
21
+ <date type="published"><on>2011</on></date>
22
+ <date type="accessed"><on>2012</on></date>
23
+ <date type="created"><from>2010</from><to>2011</to></date>
24
+ <date type="activated"><on>2013</on></date>
25
+ <date type="obsoleted"><on>2014</on></date>
26
+ <edition>2</edition>
27
+ <version>
28
+ <revision-date>2016-05-01</revision-date>
29
+ <draft>0.4</draft>
30
+ </version>
31
+ <contributor>
32
+ <role type="author"/>
33
+ <organization>
34
+ <name>International Organization for Standardization</name>
35
+ <abbreviation>ISO</abbreviation>
36
+ </organization>
37
+ </contributor>
38
+ <contributor>
39
+ <role type="publisher"/>
40
+ <organization>
41
+ <name>International Organization for Standardization</name>
42
+ <abbreviation>ISO</abbreviation>
43
+ </organization>
44
+ </contributor>
45
+ <language>en</language>
46
+ <script>Latn</script>
47
+ <status>
48
+ <stage abbreviation="CD">35</stage>
49
+ <substage abbreviation="3CD">20</substage>
50
+ <iteration>3</iteration>
51
+ </status>
52
+ <copyright>
53
+ <from>2016</from>
54
+ <owner>
55
+ <organization>
56
+ <abbreviation>ISO</abbreviation>
57
+ </organization>
58
+ </owner>
59
+ </copyright>
60
+ <ext>
61
+ <doctype language=''>international-standard</doctype>
62
+ <doctype language='fr'>Norme international</doctype>
63
+ <doctype language='en'>International Standard</doctype>
64
+ <horizontal language=''>true</horizontal>
65
+ <horizontal language='fr'>Norme horizontale</horizontal>
66
+ <horizontal language='en'>Horizontal Standard</horizontal>
67
+ <function language=''>emc</function>
68
+ <function language='fr'>Publication fondamentale en CEM</function>
69
+ <function language='en'>Basic EMC Publication</function>
70
+ <editorialgroup>
71
+ <technical-committee number="34">Food products</technical-committee>
72
+ <subcommittee number="4">Cereals and pulses</subcommittee>
73
+ <workgroup number="3">Rice Group</workgroup>
74
+ <secretariat>GB</secretariat>
75
+ </editorialgroup>
76
+ <structuredidentifier>
77
+ <project-number part="1">ISO/PreCD3 17301</project-number>
78
+ </structuredidentifier>
79
+ </ext>
80
+ </bibdata>
81
+ </iso-standard>
82
+ INPUT
83
+ {:accesseddate=>"2012",
84
+ :activateddate=>"2013",
85
+ :agency=>"ISO",
86
+ :circulateddate=>"XXX",
87
+ :confirmeddate=>"XXX",
88
+ :copieddate=>"XXX",
89
+ :createddate=>"2010&ndash;2011",
90
+ :docnumber=>"ISO/PreCD3 17301-1",
91
+ :docnumeric=>"1730",
92
+ :docsubtitle=>"C&#xe9;r&#xe9;ales et l&#xe9;gumineuses&nbsp;&mdash; Sp&#xe9;cification et m&#xe9;thodes d&#x27;essai&nbsp;&mdash; Partie&nbsp;1: Riz",
93
+ :docsubtitleintro=>"C&#xe9;r&#xe9;ales et l&#xe9;gumineuses",
94
+ :docsubtitlemain=>"Sp&#xe9;cification et m&#xe9;thodes d&#x27;essai",
95
+ :docsubtitlepart=>"Riz",
96
+ :docsubtitlepartlabel=>"Partie&nbsp;1",
97
+ :doctitle=>"Cereals and pulses&nbsp;&mdash; Specifications and test methods&nbsp;&mdash; Part&nbsp;1: Rice",
98
+ :doctitleintro=>"Cereals and pulses",
99
+ :doctitlemain=>"Specifications and test methods",
100
+ :doctitlepart=>"Rice",
101
+ :doctitlepartlabel=>"Part&nbsp;1",
102
+ :doctype=>"International Standard",
103
+ :doctype_display=>"International Standard",
104
+ :docyear=>"2016",
105
+ :draft=>"0.4",
106
+ :draftinfo=>" (draft 0.4, 2016-05-01)",
107
+ :edition=>"2",
108
+ :editorialgroup=>["TC 34", "SC 4", "WG 3"],
109
+ :horizontal=>"true",
110
+ :implementeddate=>"XXX",
111
+ :issueddate=>"XXX",
112
+ :lang=>"en",
113
+ :obsoleteddate=>"2014",
114
+ :publisheddate=>"2011",
115
+ :publisher=>"International Organization for Standardization",
116
+ :receiveddate=>"XXX",
117
+ :revdate=>"2016-05-01",
118
+ :revdate_monthyear=>"May 2016",
119
+ :sc=>"SC 4",
120
+ :script=>"Latn",
121
+ :secretariat=>"GB",
122
+ :stage=>"35",
123
+ :stage_int=>35,
124
+ :stageabbr=>"CD",
125
+ :statusabbr=>"3CD",
126
+ :tc=>"TC 34",
127
+ :transmitteddate=>"XXX",
128
+ :unchangeddate=>"XXX",
129
+ :unpublished=>true,
130
+ :updateddate=>"XXX",
131
+ :vote_endeddate=>"XXX",
132
+ :vote_starteddate=>"XXX",
133
+ :wg=>"WG 3"}
134
+ OUTPUT
135
+ end
136
+
137
+ it "processes IsoXML metadata" do
138
+ c = IsoDoc::BSI::HtmlConvert.new({})
139
+ arr = c.convert_init(<<~"INPUT", "test", false)
140
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
141
+ INPUT
142
+ expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil)).to_s.gsub(/, :/, ",\n:")).to be_equivalent_to <<~"OUTPUT"
143
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
144
+ <bibdata type="standard">
145
+ <title>
146
+ <title type="title-intro" language="en" format="text/plain">Cereals and pulses</title>
147
+ <title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
148
+ <title type="title-part" language="en" format="text/plain">Rice</title>
149
+ </title>
150
+ <title>
151
+ <title type="title-intro" language="fr" format="text/plain">Céréales et légumineuses</title>
152
+ <title type="title-main" language="fr" format="text/plain">Spécification et méthodes d'essai</title>
153
+ <title type="title-part" language="fr" format="text/plain">Riz</title>
154
+ </title>
155
+ <docidentifier type="BS">ISO/IEC/CD 17301-1-3</docidentifier>
156
+ <contributor>
157
+ <role type="author"/>
158
+ <organization>
159
+ <name>International Organization for Standardization</name>
160
+ <abbreviation>ISO</abbreviation>
161
+ </organization>
162
+ </contributor>
163
+ <contributor>
164
+ <role type="publisher"/>
165
+ <organization>
166
+ <name>International Organization for Standardization</name>
167
+ <abbreviation>ISO</abbreviation>
168
+ </organization>
169
+ </contributor>
170
+ <contributor>
171
+ <role type="publisher"/>
172
+ <organization>
173
+ <name>International Electrotechnical Commission</name>
174
+ <abbreviation>IEC</abbreviation>
175
+ </organization>
176
+ </contributor>
177
+ <language>en</language>
178
+ <script>Latn</script>
179
+ <status>
180
+ <stage abbreviation="FDIS">50</stage>
181
+ <substage abbreviation="CFDIS">20</substage>
182
+ </status>
183
+ <copyright>
184
+ <from>2016</from>
185
+ <owner>
186
+ <organization>
187
+ <name>International Organization for Standardization</name>
188
+ </organization>
189
+ </owner>
190
+ </copyright>
191
+ <relation type="obsoletes">
192
+ <locality type="clause"><referenceFrom>3.1</referenceFrom></locality>
193
+ <docidentifier>IEC 8121</docidentifier>
194
+ </relation>
195
+ <ext>
196
+ <doctype>technical-report</doctype>
197
+ <horizontal>false</horizontal>
198
+ <editorialgroup>
199
+ <technical-committee number="34" type="ABC">Food products</technical-committee>
200
+ <subcommittee number="4" type="DEF">Cereals and pulses</subcommittee>
201
+ <workgroup number="3" type="GHI">Rice Group</workgroup>
202
+ </editorialgroup>
203
+ <ics><code>1.2.3</code></ics>
204
+ <ics><code>1.2.3</code></ics>
205
+ <structuredidentifier>
206
+ <project-number part="1" subpart="3">ISO/IEC/CD 17301</project-number>
207
+ </strucuredidentifier>
208
+ </ext>
209
+ </bibdata>
210
+ </iso-standard>
211
+ INPUT
212
+ {:accesseddate=>"XXX",
213
+ :agency=>"ISO/IEC",
214
+ :circulateddate=>"XXX",
215
+ :confirmeddate=>"XXX",
216
+ :copieddate=>"XXX",
217
+ :createddate=>"XXX",
218
+ :docnumber=>"ISO/IEC/CD 17301-1-3",
219
+ :docsubtitle=>"C&#xe9;r&#xe9;ales et l&#xe9;gumineuses&nbsp;&mdash; Sp&#xe9;cification et m&#xe9;thodes d&#x27;essai&nbsp;&mdash; Partie&nbsp;1&ndash;3: Riz",
220
+ :docsubtitleintro=>"C&#xe9;r&#xe9;ales et l&#xe9;gumineuses",
221
+ :docsubtitlemain=>"Sp&#xe9;cification et m&#xe9;thodes d&#x27;essai",
222
+ :docsubtitlepart=>"Riz",
223
+ :docsubtitlepartlabel=>"Partie&nbsp;1&ndash;3",
224
+ :doctitle=>"Cereals and pulses&nbsp;&mdash; Specifications and test methods&nbsp;&mdash; Part&nbsp;1&ndash;3: Rice",
225
+ :doctitleintro=>"Cereals and pulses",
226
+ :doctitlemain=>"Specifications and test methods",
227
+ :doctitlepart=>"Rice",
228
+ :doctitlepartlabel=>"Part&nbsp;1&ndash;3",
229
+ :doctype=>"Technical Report",
230
+ :doctype_display=>"Technical Report",
231
+ :docyear=>"2016",
232
+ :editorialgroup=>["ABC 34", "DEF 4", "GHI 3"],
233
+ :horizontal=>"false",
234
+ :ics=>"1.2.3, 1.2.3",
235
+ :implementeddate=>"XXX",
236
+ :issueddate=>"XXX",
237
+ :lang=>"en",
238
+ :obsoleteddate=>"XXX",
239
+ :obsoletes=>"IEC 8121",
240
+ :obsoletes_part=>"3.1",
241
+ :publisheddate=>"XXX",
242
+ :publisher=>"International Organization for Standardization and International Electrotechnical Commission",
243
+ :receiveddate=>"XXX",
244
+ :sc=>"DEF 4",
245
+ :script=>"Latn",
246
+ :secretariat=>"XXX",
247
+ :stage=>"50",
248
+ :stage_int=>50,
249
+ :stageabbr=>"FDIS",
250
+ :statusabbr=>"CFDIS",
251
+ :tc=>"ABC 34",
252
+ :transmitteddate=>"XXX",
253
+ :unchangeddate=>"XXX",
254
+ :unpublished=>true,
255
+ :updateddate=>"XXX",
256
+ :vote_endeddate=>"XXX",
257
+ :vote_starteddate=>"XXX",
258
+ :wg=>"GHI 3"}
259
+ OUTPUT
260
+ end
261
+
262
+ end