isodoc 1.2.2 → 1.2.7

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 (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"}