isodoc 1.2.2 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +64 -0
  3. data/isodoc.gemspec +3 -1
  4. data/lib/isodoc-yaml/i18n-fr.yaml +1 -1
  5. data/lib/isodoc/base_style/all.css +5 -1
  6. data/lib/isodoc/base_style/metanorma_word.css +6 -0
  7. data/lib/isodoc/base_style/metanorma_word.scss +6 -0
  8. data/lib/isodoc/base_style/reset.css +5 -1
  9. data/lib/isodoc/base_style/reset.scss +6 -1
  10. data/lib/isodoc/convert.rb +1 -14
  11. data/lib/isodoc/function/blocks.rb +1 -0
  12. data/lib/isodoc/function/cleanup.rb +1 -1
  13. data/lib/isodoc/function/references.rb +4 -2
  14. data/lib/isodoc/function/section.rb +13 -1
  15. data/lib/isodoc/function/table.rb +1 -0
  16. data/lib/isodoc/function/to_word_html.rb +4 -0
  17. data/lib/isodoc/function/utils.rb +1 -1
  18. data/lib/isodoc/html_function/html.rb +1 -0
  19. data/lib/isodoc/i18n.rb +8 -50
  20. data/lib/isodoc/metadata.rb +44 -111
  21. data/lib/isodoc/metadata_contributor.rb +90 -0
  22. data/lib/isodoc/metadata_date.rb +11 -0
  23. data/lib/isodoc/presentation_function/bibdata.rb +96 -0
  24. data/lib/isodoc/presentation_function/block.rb +14 -0
  25. data/lib/isodoc/presentation_function/inline.rb +27 -14
  26. data/lib/isodoc/presentation_xml_convert.rb +4 -0
  27. data/lib/isodoc/version.rb +1 -1
  28. data/lib/isodoc/word_function/body.rb +1 -0
  29. data/lib/isodoc/word_function/postprocess.rb +2 -2
  30. data/lib/isodoc/word_function/table.rb +3 -2
  31. data/lib/isodoc/xref.rb +1 -0
  32. data/lib/isodoc/xref/xref_anchor.rb +8 -3
  33. data/lib/isodoc/xref/xref_counter.rb +21 -7
  34. data/lib/isodoc/xref/xref_gen.rb +29 -6
  35. data/lib/isodoc/xref/xref_sect_gen.rb +1 -1
  36. data/lib/isodoc/xslfo_convert.rb +6 -1
  37. data/spec/assets/i18n.yaml +16 -0
  38. data/spec/isodoc/blocks_spec.rb +330 -215
  39. data/spec/isodoc/cleanup_spec.rb +3 -1
  40. data/spec/isodoc/i18n_spec.rb +68 -16
  41. data/spec/isodoc/inline_spec.rb +47 -5
  42. data/spec/isodoc/metadata_spec.rb +69 -19
  43. data/spec/isodoc/postproc_spec.rb +39 -3
  44. data/spec/isodoc/ref_spec.rb +3 -3
  45. data/spec/isodoc/section_spec.rb +134 -10
  46. data/spec/isodoc/table_spec.rb +306 -207
  47. data/spec/isodoc/terms_spec.rb +1 -1
  48. data/spec/isodoc/xref_spec.rb +46 -18
  49. data/spec/spec_helper.rb +6 -0
  50. metadata +35 -7
  51. data/.github/workflows/macos.yml +0 -42
  52. data/.github/workflows/ubuntu.yml +0 -62
  53. data/.github/workflows/windows.yml +0 -44
@@ -1084,6 +1084,7 @@ INPUT
1084
1084
  [MODIFICATION]The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here
1085
1085
  [/TERMREF]</p>
1086
1086
  <p>[TERMREF] Termbase IEV, term ID xyz [/TERMREF]</p>
1087
+ <p>[TERMREF] Termbase IEV, term ID xyz [MODIFICATION] [/TERMREF]</p>
1087
1088
  <p>[TERMREF] Termbase IEV, term ID xyz [MODIFICATION]with adjustments [/TERMREF]</p>
1088
1089
  <p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
1089
1090
  <p class="AltTerms" style="text-align:left;">rough rice</p>
@@ -1140,7 +1141,8 @@ INPUT
1140
1141
  <a href='#ISO7301'>ISO 7301:2011, Clause 3.1</a>
1141
1142
  , modified &mdash; The term "cargo rice" is shown as deprecated, and
1142
1143
  Note 1 to entry is not included here; Termbase IEV, term ID xyz;
1143
- Termbase IEV, term ID xyz, modified &mdash; with adjustments]
1144
+ Termbase IEV, term ID xyz, modified; Termbase IEV, term ID xyz,
1145
+ modified &mdash; with adjustments]
1144
1146
  </p>
1145
1147
  <p class='TermNum' id='paddy'>1.2.</p>
1146
1148
  <p class='Terms' style='text-align:left;'>paddy</p>
@@ -68,9 +68,9 @@ RSpec.describe IsoDoc do
68
68
  INPUT
69
69
 
70
70
  presxml = <<~"PRESXML"
71
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
71
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
72
72
  <bibdata>
73
- <language>en</language>
73
+ <language current="true">en</language>
74
74
  </bibdata>
75
75
  <preface>
76
76
  <foreword obligation='informative'>
@@ -226,12 +226,12 @@ PRESXML
226
226
  </body>
227
227
  </html>
228
228
  OUTPUT
229
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
229
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(presxml)
230
230
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
231
231
  end
232
232
 
233
233
  it "defaults to English" do
234
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
234
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
235
235
  <iso-standard xmlns="http://riboseinc.com/isoxml">
236
236
  <bibdata>
237
237
  <language>tlh</language>
@@ -296,9 +296,9 @@ PRESXML
296
296
  </iso-standard>
297
297
  INPUT
298
298
  <?xml version='1.0'?>
299
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
299
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
300
300
  <bibdata>
301
- <language>tlh</language>
301
+ <language current="true">tlh</language>
302
302
  </bibdata>
303
303
  <preface>
304
304
  <foreword obligation='informative'>
@@ -449,9 +449,9 @@ PRESXML
449
449
  INPUT
450
450
 
451
451
  presxml = <<~"PRESXML"
452
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
452
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
453
453
  <bibdata>
454
- <language>fr</language>
454
+ <language current="true">fr</language>
455
455
  </bibdata>
456
456
  <preface>
457
457
  <foreword obligation='informative'>
@@ -607,7 +607,7 @@ PRESXML
607
607
  </body>
608
608
  </html>
609
609
  OUTPUT
610
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
610
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(presxml)
611
611
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
612
612
  end
613
613
 
@@ -689,10 +689,10 @@ PRESXML
689
689
  INPUT
690
690
 
691
691
  presxml = <<~"PRESXML"
692
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
692
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
693
693
  <bibdata>
694
- <language>zh</language>
695
- <script>Hans</script>
694
+ <language current="true">zh</language>
695
+ <script current="true">Hans</script>
696
696
  </bibdata>
697
697
  <preface>
698
698
  <foreword obligation='informative'>
@@ -862,16 +862,24 @@ PRESXML
862
862
  </body>
863
863
  </html>
864
864
  OUTPUT
865
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
865
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(presxml)
866
866
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
867
867
  end
868
868
 
869
869
  it "processes i18n file" do
870
+ mock_i18n
870
871
  input = <<~"INPUT"
871
872
  <iso-standard xmlns="http://riboseinc.com/isoxml">
872
873
  <bibdata>
873
874
  <language>eo</language>
874
875
  <script>Latn</script>
876
+ <status>
877
+ <stage>published</stage>
878
+ <substage>withdrawn</substage>
879
+ </status>
880
+ <ext>
881
+ <doctype>brochure</doctype>
882
+ </ext>
875
883
  </bibdata>
876
884
  <preface>
877
885
  <foreword obligation="informative">
@@ -944,11 +952,48 @@ PRESXML
944
952
  INPUT
945
953
 
946
954
  presxml = <<~OUTPUT
947
- <iso-standard xmlns="http://riboseinc.com/isoxml">
955
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
948
956
  <bibdata>
949
- <language>eo</language>
950
- <script>Latn</script>
957
+ <language current="true">eo</language>
958
+ <script current="true">Latn</script>
959
+ <status>
960
+ <stage language=''>published</stage>
961
+ <stage language='eo'>publikigita</stage>
962
+ <substage language=''>withdrawn</substage>
963
+ <substage language='eo'>fortirita</substage>
964
+ </status>
965
+ <ext>
966
+ <doctype language=''>brochure</doctype>
967
+ <doctype language='eo'>bro&#x15D;uro</doctype>
968
+ </ext>
951
969
  </bibdata>
970
+ <localized-strings>
971
+ <localized-string key='foreword' language='eo'>Anta&#x16D;parolo</localized-string>
972
+ <localized-string key='introduction' language='eo'>Enkonduko</localized-string>
973
+ <localized-string key='clause' language='eo'>kla&#x16D;zo</localized-string>
974
+ <localized-string key='table' language='eo'>Tabelo</localized-string>
975
+ <localized-string key='source' language='eo'>SOURCE</localized-string>
976
+ <localized-string key='modified' language='eo'>modified</localized-string>
977
+ <localized-string key='scope' language='eo'>Amplekso</localized-string>
978
+ <localized-string key='symbols' language='eo'>Simboloj kai mallongigitaj terminoj</localized-string>
979
+ <localized-string key='annex' language='eo'>Aldono</localized-string>
980
+ <localized-string key='normref' language='eo'>Normaj cita&#x135;oj</localized-string>
981
+ <localized-string key='bibliography' language='eo'>Bibliografio</localized-string>
982
+ <localized-string key='inform_annex' language='eo'>informa</localized-string>
983
+ <localized-string key='all_parts' language='eo'>&#x109;iuj partoj</localized-string>
984
+ <localized-string key='norm_annex' language='eo'>normative</localized-string>
985
+ <localized-string key='locality.table' language='eo'>Tabelo</localized-string>
986
+ <localized-string key='doctype_dict.brochure' language='eo'>bro&#x15D;uro</localized-string>
987
+ <localized-string key='doctype_dict.conference_proceedings' language='eo'>konferencaktoj</localized-string>
988
+ <localized-string key='stage_dict.published' language='eo'>publikigita</localized-string>
989
+ <localized-string key='substage_dict.withdrawn' language='eo'>fortirita</localized-string>
990
+ <localized-string key='array.0' language='eo'>elem1</localized-string>
991
+ <localized-string key='array.1' language='eo'>elem2</localized-string>
992
+ <localized-string key='array.2.elem3' language='eo'>elem4</localized-string>
993
+ <localized-string key='array.2.elem5' language='eo'>elem6</localized-string>
994
+ <localized-string key='language' language='eo'>eo</localized-string>
995
+ <localized-string key='script' language='eo'>Latn</localized-string>
996
+ </localized-strings>
952
997
  <preface>
953
998
  <foreword obligation="informative">
954
999
  <title>Foreword</title>
@@ -1128,4 +1173,11 @@ PRESXML
1128
1173
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({i18nyaml: "spec/assets/i18n.yaml"}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
1129
1174
  expect(xmlpp(IsoDoc::HtmlConvert.new({i18nyaml: "spec/assets/i18n.yaml"}).convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
1130
1175
  end
1176
+
1177
+ private
1178
+
1179
+ def mock_i18n
1180
+ allow_any_instance_of(::IsoDoc::I18n).to receive(:load_yaml).with("eo", "Latn", "spec/assets/i18n.yaml").and_return(YAML.load_file("spec/assets/i18n.yaml"))
1181
+ end
1182
+
1131
1183
  end
@@ -20,7 +20,7 @@ RSpec.describe IsoDoc do
20
20
  </iso-standard>
21
21
  INPUT
22
22
  <?xml version='1.0'?>
23
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
23
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
24
24
  <sections>
25
25
  <clause id='A'>
26
26
  <title>1.</title>
@@ -57,6 +57,48 @@ INPUT
57
57
  OUTPUT
58
58
  end
59
59
 
60
+ it "droplocs xrefs" do
61
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({i18nyaml: "spec/assets/i18n.yaml"}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
62
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
63
+ <sections>
64
+ <clause id="A">
65
+ <formula id="B">
66
+ </formula>
67
+ </clause>
68
+ <clause id="C">
69
+ <p>This is <xref target="A"/> and <xref target="B"/>.
70
+ This is <xref target="A" droploc="true"/> and <xref target="B" droploc="true"/>.</p>
71
+ </clause>
72
+ </sections>
73
+ </iso-standard>
74
+ INPUT
75
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
76
+ <sections>
77
+ <clause id='A'>
78
+ <title>1.</title>
79
+ <formula id='B'>
80
+ <name>1</name>
81
+ </formula>
82
+ </clause>
83
+ <clause id='C'>
84
+ <title>2.</title>
85
+ <p>
86
+ This is
87
+ <xref target='A'>kla&#x16D;zo 1</xref>
88
+ and
89
+ <xref target='B'>kla&#x16D;zo 1, Formula (1)</xref>
90
+ . This is
91
+ <xref target='A' droploc='true'>1</xref>
92
+ and
93
+ <xref target='B' droploc='true'>(1)</xref>
94
+ .
95
+ </p>
96
+ </clause>
97
+ </sections>
98
+ </iso-standard>
99
+ OUTPUT
100
+ end
101
+
60
102
  it "processes inline formatting" do
61
103
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
62
104
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -238,7 +280,7 @@ end
238
280
  </iso-standard>
239
281
  INPUT
240
282
  presxml = <<~OUTPUT
241
- <iso-standard xmlns="http://riboseinc.com/isoxml">
283
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
242
284
  <preface><foreword>
243
285
  <p>
244
286
  <ul>
@@ -606,7 +648,7 @@ OUTPUT
606
648
  </iso-standard>
607
649
  INPUT
608
650
  presxml = <<~OUTPUT
609
- <iso-standard xmlns="http://riboseinc.com/isoxml">
651
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
610
652
  <preface><foreword>
611
653
  <p>
612
654
  <eref type="inline" bibitemid="ISO712" citeas="ISO 712">ISO 712</eref>
@@ -728,7 +770,7 @@ html = <<~OUTPUT
728
770
  </iso-standard>
729
771
  INPUT
730
772
  presxml = <<~OUTPUT
731
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
773
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
732
774
  <preface>
733
775
  <foreword>
734
776
  <p>
@@ -955,7 +997,7 @@ it "cases xrefs" do
955
997
  </iso-standard>
956
998
  INPUT
957
999
  <?xml version='1.0'?>
958
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
1000
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
959
1001
  <sections>
960
1002
  <clause id='A'>
961
1003
  <title>1.</title>
@@ -7,7 +7,7 @@ RSpec.describe IsoDoc do
7
7
  arr = c.convert_init(<<~"INPUT", "test", false)
8
8
  <iso-standard xmlns="http://riboseinc.com/isoxml">
9
9
  INPUT
10
- expect(Hash[c.info(Nokogiri::XML(<<~"INPUT"), nil).sort]).to be_equivalent_to <<~"OUTPUT"
10
+ expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
11
11
  <iso-standard xmlns="http://riboseinc.com/isoxml">
12
12
  <bibdata type="standard">
13
13
  <title>The Incredible Mr Ripley</title>
@@ -18,6 +18,8 @@ RSpec.describe IsoDoc do
18
18
  <uri type="pdf">URL D</uri>
19
19
  <uri type="doc">URL E</uri>
20
20
  <docidentifier>17301-1</docidentifier>
21
+ <docidentifier type="ISBN">ISBN 13</docidentifier>
22
+ <docidentifier type="ISBN10">ISBN 10</docidentifier>
21
23
  <docnumber>17301</docnumber>
22
24
  <date type="published"><on>2011</on></date>
23
25
  <date type="accessed"><on>2012</on></date>
@@ -73,6 +75,9 @@ RSpec.describe IsoDoc do
73
75
  </name>
74
76
  </person>
75
77
  </contributor>
78
+ <note type="title-footnote"><p>A footnote</p></note>
79
+ <note type="iso"><p>A note</p></note>
80
+ <note type="title-footnote"><p>Another footnote</p></note>
76
81
  <language>en</language>
77
82
  <script>Latn</script>
78
83
  <status>
@@ -111,25 +116,32 @@ INPUT
111
116
  :docnumeric=>"17301",
112
117
  :doctitle=>"Cereals and pulses",
113
118
  :doctype=>"International Standard",
119
+ :doctype_display=>"International Standard",
114
120
  :docyear=>"2016",
115
121
  :draft=>"0.4",
116
122
  :draftinfo=>" (draft 0.4, 2016-05-01)",
117
123
  :edition=>"2",
118
124
  :html=>"URL B",
119
125
  :implementeddate=>"XXX",
126
+ :isbn=>"ISBN 13",
127
+ :isbn10=>"ISBN 10",
120
128
  :issueddate=>"XXX",
121
129
  :iteration=>"2",
122
130
  :keywords=>["KW2", "KW1", "KW3"],
131
+ :lang=>"en",
123
132
  :obsoleteddate=>"2014",
124
133
  :pdf=>"URL D",
125
134
  :publisheddate=>"2011",
126
- :publisher=>"",
127
135
  :receiveddate=>"XXX",
128
136
  :revdate=>"2016-05-01",
129
137
  :revdate_monthyear=>"May 2016",
130
- :stage=>"Committee draft",
138
+ :script=>"Latn",
139
+ :stage=>"Committee Draft",
140
+ :stage_display=>"Committee Draft",
131
141
  :stageabbr=>"CD",
132
142
  :substage=>"Withdrawn",
143
+ :substage_display=>"Withdrawn",
144
+ :title_footnote=>["A footnote", "Another footnote"],
133
145
  :transmitteddate=>"2020",
134
146
  :unchangeddate=>"2019",
135
147
  :unpublished=>true,
@@ -146,7 +158,7 @@ OUTPUT
146
158
  arr = c.convert_init(<<~"INPUT", "test", false)
147
159
  <iso-standard xmlns="http://riboseinc.com/isoxml">
148
160
  INPUT
149
- expect(Hash[c.info(Nokogiri::XML(<<~"INPUT"), nil).sort]).to be_equivalent_to <<~"OUTPUT"
161
+ expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
150
162
  <iso-standard xmlns="http://riboseinc.com/isoxml">
151
163
  <bibdata type="standard">
152
164
  <title language="fr" format="text/plain">Céréales et légumineuses</ti>
@@ -167,7 +179,15 @@ OUTPUT
167
179
  <role type="publisher"/>
168
180
  <organization>
169
181
  <name>International Organization for Standardization</name>
182
+ <subdivision>Subdivision</subdivision>
170
183
  <abbreviation>ISO</abbreviation>
184
+ <address>
185
+ <formattedAddress>1 Infinity Loop + California</formattedAddress>
186
+ </address>
187
+ <phone>3333333</phone>
188
+ <phone type='fax'>4444444</phone>
189
+ <email>x@example.com</email>
190
+ <uri>http://www.example.com</uri>
171
191
  </organization>
172
192
  </contributor>
173
193
  <contributor>
@@ -213,8 +233,6 @@ OUTPUT
213
233
  INPUT
214
234
  {:accesseddate=>"XXX",
215
235
  :agency=>"ISO/IEC/IEEE",
216
- :authors=>[],
217
- :authors_affiliations=>{},
218
236
  :circulateddate=>"XXX",
219
237
  :confirmeddate=>"XXX",
220
238
  :copieddate=>"XXX",
@@ -223,23 +241,31 @@ INPUT
223
241
  :docnumeric=>"17301",
224
242
  :doctitle=>"Cereals and pulses",
225
243
  :doctype=>"International Standard",
244
+ :doctype_display=>"International Standard",
226
245
  :docyear=>"2016",
227
246
  :draft=>"12",
228
247
  :draftinfo=>" (draft 12, 2016-05)",
229
- :edition=>nil,
230
248
  :implementeddate=>"XXX",
231
249
  :issueddate=>"XXX",
232
- :keywords=>[],
250
+ :lang=>"en",
233
251
  :obsoleteddate=>"XXX",
234
252
  :obsoletes=>"IEC 8121",
235
253
  :obsoletes_part=>"3.1",
236
254
  :partof=>"IEC 8122",
255
+ :pub_address=>"1 Infinity Loop + California",
256
+ :pub_email=>"x@example.com",
257
+ :pub_fax=>"4444444",
258
+ :pub_phone=>"3333333",
259
+ :pub_uri=>"http://www.example.com",
237
260
  :publisheddate=>"2011-01",
238
261
  :publisher=>"International Organization for Standardization, International Electrotechnical Commission and Institute of Electrical and Electronics Engineers",
239
262
  :receiveddate=>"XXX",
240
263
  :revdate=>"2016-05",
241
264
  :revdate_monthyear=>"May 2016",
265
+ :script=>"Latn",
242
266
  :stage=>"Published",
267
+ :stage_display=>"Published",
268
+ :subdivision=>"Subdivision",
243
269
  :transmitteddate=>"XXX",
244
270
  :unchangeddate=>"XXX",
245
271
  :unpublished=>false,
@@ -256,10 +282,21 @@ OUTPUT
256
282
  <bibdata type="standard">
257
283
  <language>fr</language>
258
284
  <script>Latn</script>
285
+ <status>
286
+ <stage lang="">Committee Draft</stage>
287
+ <stage lang=fr">Projet de comité</stage>
288
+ <substage lang="">Withdrawn</substage>
289
+ <substage lang="fr">Rétiré</substage>
290
+ <iteration>2</iteration>
291
+ </status>
292
+ <ext>
293
+ <doctype lang="">international-standard</doctype>
294
+ <doctype lang="fr">Standard international</doctype>
295
+ </ext>
259
296
  </bibdata>
260
297
  </iso-standard>
261
298
  INPUT
262
- expect(Hash[c.info(Nokogiri::XML(<<~"INPUT"), nil).sort]).to be_equivalent_to <<~"OUTPUT"
299
+ expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
263
300
  <iso-standard xmlns="http://riboseinc.com/isoxml">
264
301
  <bibdata type="standard">
265
302
  <title language="fr" format="text/plain">Céréales et légumineuses</ti>
@@ -292,7 +329,13 @@ OUTPUT
292
329
  </contributor>
293
330
  <language>fr</language>
294
331
  <script>Latn</script>
295
- <status><stage>Published</stage></status>
332
+ <status>
333
+ <stage language="">Committee Draft</stage>
334
+ <stage language="fr">Projet de comité</stage>
335
+ <substage language="">Withdrawn</substage>
336
+ <substage language="fr">Rétiré</substage>
337
+ <iteration>2</iteration>
338
+ </status>
296
339
  <copyright>
297
340
  <from>2016</from>
298
341
  <owner>
@@ -301,37 +344,44 @@ OUTPUT
301
344
  </organization>
302
345
  </owner>
303
346
  </copyright>
347
+ <ext>
348
+ <doctype language="">international-standard</doctype>
349
+ <doctype language="fr">Standard international</doctype>
350
+ </ext>
304
351
  </bibdata>
305
352
  </iso-standard>
306
353
  INPUT
307
354
  {:accesseddate=>"XXX",
308
355
  :agency=>"ISO/IEC",
309
- :authors=>[],
310
- :authors_affiliations=>{},
311
356
  :circulateddate=>"XXX",
312
357
  :confirmeddate=>"XXX",
313
358
  :copieddate=>"XXX",
314
359
  :createddate=>"XXX",
315
360
  :docnumber=>"17301-1-3",
316
361
  :docnumeric=>"17301",
317
- :doctitle=>"Cereals and pulses",
362
+ :doctitle=>"Céréales et légumineuses",
363
+ :doctype=>"International Standard",
364
+ :doctype_display=>"Standard International",
318
365
  :docyear=>"2016",
319
- :draft=>nil,
320
- :draftinfo=>"",
321
- :edition=>nil,
322
366
  :implementeddate=>"XXX",
323
367
  :issueddate=>"XXX",
324
- :keywords=>[],
368
+ :iteration=>"2",
369
+ :lang=>"fr",
325
370
  :obsoleteddate=>"XXX",
326
371
  :publisheddate=>"2011-01",
327
372
  :publisher=>"International Organization for Standardization et International Electrotechnical Commission",
328
373
  :receiveddate=>"XXX",
329
374
  :revdate=>"2016-05",
330
375
  :revdate_monthyear=>"Mai 2016",
331
- :stage=>"Published",
376
+ :script=>"Latn",
377
+ :stage=>"Committee Draft",
378
+ :stage_display=>"Projet De Comité",
379
+ :stageabbr=>"CD",
380
+ :substage=>"Withdrawn",
381
+ :substage_display=>"Rétiré",
332
382
  :transmitteddate=>"XXX",
333
383
  :unchangeddate=>"XXX",
334
- :unpublished=>false,
384
+ :unpublished=>true,
335
385
  :updateddate=>"XXX",
336
386
  :vote_endeddate=>"XXX",
337
387
  :vote_starteddate=>"XXX"}