metanorma-iso 1.5.10 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +66 -0
  3. data/README.adoc +5 -6
  4. data/lib/asciidoctor/iso/base.rb +5 -5
  5. data/lib/asciidoctor/iso/basicdoc.rng +50 -3
  6. data/lib/asciidoctor/iso/boilerplate-fr.xml +40 -0
  7. data/lib/asciidoctor/iso/boilerplate.xml +1 -0
  8. data/lib/asciidoctor/iso/cleanup.rb +38 -6
  9. data/lib/asciidoctor/iso/front.rb +5 -0
  10. data/lib/asciidoctor/iso/isodoc.rng +36 -43
  11. data/lib/asciidoctor/iso/isostandard.rng +11 -0
  12. data/lib/asciidoctor/iso/validate.rb +1 -1
  13. data/lib/asciidoctor/iso/validate_section.rb +9 -0
  14. data/lib/isodoc/iso/base_convert.rb +2 -1
  15. data/lib/isodoc/iso/html/header.html +12 -24
  16. data/lib/isodoc/iso/html/htmlstyle.css +1 -1
  17. data/lib/isodoc/iso/html/htmlstyle.scss +1 -1
  18. data/lib/isodoc/iso/html/isodoc.css +42 -42
  19. data/lib/isodoc/iso/html/isodoc.scss +42 -42
  20. data/lib/isodoc/iso/html/style-human.css +13 -9
  21. data/lib/isodoc/iso/html/style-human.scss +7 -7
  22. data/lib/isodoc/iso/html/style-iso.css +11 -7
  23. data/lib/isodoc/iso/html/style-iso.scss +5 -5
  24. data/lib/isodoc/iso/html/wordstyle.css +67 -67
  25. data/lib/isodoc/iso/html/wordstyle.scss +67 -67
  26. data/lib/isodoc/iso/html_convert.rb +4 -0
  27. data/lib/isodoc/iso/i18n-en.yaml +4 -0
  28. data/lib/isodoc/iso/i18n-fr.yaml +5 -0
  29. data/lib/isodoc/iso/i18n-zh-Hans.yaml +5 -0
  30. data/lib/isodoc/iso/i18n.rb +10 -11
  31. data/lib/isodoc/iso/iso.amendment.xsl +391 -88
  32. data/lib/isodoc/iso/iso.international-standard.xsl +391 -88
  33. data/lib/isodoc/iso/metadata.rb +20 -19
  34. data/lib/isodoc/iso/word_convert.rb +4 -0
  35. data/lib/isodoc/iso/xref.rb +10 -0
  36. data/lib/metanorma/iso/processor.rb +11 -9
  37. data/lib/metanorma/iso/version.rb +1 -1
  38. data/metanorma-iso.gemspec +2 -2
  39. data/spec/asciidoctor-iso/base_spec.rb +26 -14
  40. data/spec/asciidoctor-iso/blocks_spec.rb +1 -1
  41. data/spec/asciidoctor-iso/cleanup_spec.rb +11 -5
  42. data/spec/asciidoctor-iso/lists_spec.rb +6 -6
  43. data/spec/asciidoctor-iso/refs_spec.rb +174 -143
  44. data/spec/asciidoctor-iso/section_spec.rb +5 -0
  45. data/spec/asciidoctor-iso/validate_spec.rb +18 -1
  46. data/spec/isodoc/amd_spec.rb +187 -22
  47. data/spec/isodoc/blocks_spec.rb +1 -0
  48. data/spec/isodoc/i18n_spec.rb +9 -22
  49. data/spec/isodoc/inline_spec.rb +1 -1
  50. data/spec/isodoc/metadata_spec.rb +170 -3
  51. data/spec/isodoc/postproc_spec.rb +2 -5
  52. data/spec/isodoc/ref_spec.rb +4 -7
  53. data/spec/isodoc/section_spec.rb +20 -0
  54. data/spec/isodoc/xref_spec.rb +12 -0
  55. data/spec/spec_helper.rb +17 -1
  56. metadata +8 -12
  57. data/.github/workflows/macos.yml +0 -41
  58. data/.github/workflows/ubuntu.yml +0 -45
  59. data/.github/workflows/windows.yml +0 -43
  60. data/lib/asciidoctor/iso/macros.rb +0 -21
  61. data/lib/asciidoctor/iso/term_lookup_cleanup.rb +0 -86
  62. data/spec/asciidoctor-iso/macros_spec.rb +0 -310
@@ -5,15 +5,13 @@ module IsoDoc
5
5
  class Metadata < IsoDoc::Metadata
6
6
  def initialize(lang, script, i18n)
7
7
  super
8
- @metadata = {
9
- tc: "XXXX",
10
- sc: "XXXX",
11
- wg: "XXXX",
12
- editorialgroup: [],
13
- secretariat: "XXXX",
14
- obsoletes: nil,
15
- obsoletes_part: nil
16
- }
8
+ set(:tc, "XXXX")
9
+ set(:sc, "XXXX")
10
+ set(:wg, "XXXX")
11
+ set(:editorialgroup, [])
12
+ set(:secretariat, "XXX")
13
+ set(:obsoletes, nil)
14
+ set(:obsoletes_part, nil)
17
15
  end
18
16
 
19
17
  def status_abbrev(stage, substage, iter, draft, doctype)
@@ -133,33 +131,35 @@ module IsoDoc
133
131
  end
134
132
 
135
133
  def title(isoxml, _out)
136
- intro, main, part, amd = title_parts(isoxml, "en")
134
+ lang = @lang == "fr" ? "fr" : "en"
135
+ intro, main, part, amd = title_parts(isoxml, lang)
137
136
  partnumber, subpartnumber, amdnumber, corrnumber = title_nums(isoxml)
138
137
 
139
138
  set(:doctitlemain, @c.encode(main ? main.text : "", :hexadecimal))
140
- main = compose_title(main, intro, part, partnumber, subpartnumber, "en")
139
+ main = compose_title(main, intro, part, partnumber, subpartnumber, lang)
141
140
  set(:doctitle, main)
142
141
  set(:doctitleintro, @c.encode(intro ? intro.text : "", :hexadecimal)) if intro
143
- set(:doctitlepartlabel, part_prefix(partnumber, subpartnumber, "en"))
142
+ set(:doctitlepartlabel, part_prefix(partnumber, subpartnumber, lang))
144
143
  set(:doctitlepart, @c.encode(part.text, :hexadecimal)) if part
145
- set(:doctitleamdlabel, amd_prefix(amdnumber, "en")) if amdnumber
144
+ set(:doctitleamdlabel, amd_prefix(amdnumber, lang)) if amdnumber
146
145
  set(:doctitleamd, @c.encode(amd.text, :hexadecimal)) if amd
147
- set(:doctitlecorrlabel, corr_prefix(corrnumber, "en")) if corrnumber
146
+ set(:doctitlecorrlabel, corr_prefix(corrnumber, lang)) if corrnumber
148
147
  end
149
148
 
150
149
  def subtitle(isoxml, _out)
151
- intro, main, part, amd = title_parts(isoxml, "fr")
150
+ lang = @lang == "fr" ? "en" : "fr"
151
+ intro, main, part, amd = title_parts(isoxml, lang)
152
152
  partnumber, subpartnumber, amdnumber, corrnumber = title_nums(isoxml)
153
153
 
154
154
  set(:docsubtitlemain, @c.encode(main ? main.text : "", :hexadecimal))
155
- main = compose_title(main, intro, part, partnumber, subpartnumber, "fr")
155
+ main = compose_title(main, intro, part, partnumber, subpartnumber, lang)
156
156
  set(:docsubtitle, main)
157
157
  set(:docsubtitleintro, @c.encode(intro ? intro.text : "", :hexadecimal)) if intro
158
- set(:docsubtitlepartlabel, part_prefix(partnumber, subpartnumber, "fr"))
158
+ set(:docsubtitlepartlabel, part_prefix(partnumber, subpartnumber, lang))
159
159
  set(:docsubtitlepart, @c.encode(part.text, :hexadecimal)) if part
160
- set(:docsubtitleamdlabel, amd_prefix(amdnumber, "fr")) if amdnumber
160
+ set(:docsubtitleamdlabel, amd_prefix(amdnumber, lang)) if amdnumber
161
161
  set(:docsubtitleamd, @c.encode(amd.text, :hexadecimal)) if amd
162
- set(:docsubtitlecorrlabel, corr_prefix(corrnumber, "fr")) if corrnumber
162
+ set(:docsubtitlecorrlabel, corr_prefix(corrnumber, lang)) if corrnumber
163
163
  end
164
164
 
165
165
  def author(xml, _out)
@@ -211,6 +211,7 @@ module IsoDoc
211
211
  ics = []
212
212
  isoxml.xpath(ns("//bibdata/ext/ics/code")).each { |i| ics << i.text }
213
213
  set(:ics, ics.empty? ? nil : ics.join(", "))
214
+ a = isoxml.at(ns("//bibdata/ext/horizontal")) and set(:horizontal, a.text)
214
215
  end
215
216
  end
216
217
  end
@@ -21,6 +21,10 @@ module IsoDoc
21
21
  headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
22
22
  '"Cambria",serif'),
23
23
  monospacefont: '"Courier New",monospace',
24
+ normalfontsize: "11.0pt",
25
+ monospacefontsize: "9.0pt",
26
+ smallerfontsize: "10.0pt",
27
+ footnotefontsize: "10.0pt",
24
28
  }
25
29
  end
26
30
 
@@ -34,6 +34,9 @@ module IsoDoc
34
34
  @anchors[c["id"]] = anchor_struct(i + 1, nil, @labels["appendix"], "clause")
35
35
  @anchors[c["id"]][:level] = 2
36
36
  @anchors[c["id"]][:container] = clause["id"]
37
+ c.xpath(ns("./clause | ./references")).each_with_index do |c, j|
38
+ appendix_names1(c, l10n("#{@labels["appendix"]} #{i + 1}.#{j + 1}"), 3, clause["id"])
39
+ end
37
40
  end
38
41
  end
39
42
 
@@ -55,6 +58,13 @@ module IsoDoc
55
58
  end
56
59
  end
57
60
 
61
+ def appendix_names1(clause, num, level, container)
62
+ @anchors[clause["id"]] = { label: num, xref: num, level: level, container: container }
63
+ clause.xpath(ns("./clause | ./references")).each_with_index do |c, i|
64
+ appendix_names1(c, "#{num}.#{i + 1}", level + 1, container)
65
+ end
66
+ end
67
+
58
68
  def hierarchical_formula_names(clause, num)
59
69
  c = IsoDoc::XrefGen::Counter.new
60
70
  clause.xpath(ns(".//formula")).each do |t|
@@ -2,15 +2,6 @@ require "metanorma/processor"
2
2
 
3
3
  module Metanorma
4
4
  module Iso
5
- def self.fonts_used
6
- {
7
- html: ["Cambria", "Times New Roman", "Cambria Math", "HanSans", "Courier New"],
8
- html_alt: ["Cambria", "Times New Roman", "Cambria Math", "HanSans", "Courier New"],
9
- doc: ["Cambria", "Times New Roman", "Cambria Math", "HanSans", "Courier New"],
10
- pdf: ["Cambria", "Times New Roman", "Cambria Math", "HanSans", "Courier New"],
11
- }
12
- end
13
-
14
5
  class Processor < Metanorma::Processor
15
6
 
16
7
  def initialize
@@ -34,6 +25,17 @@ module Metanorma
34
25
  "Metanorma::ISO #{Metanorma::ISO::VERSION}"
35
26
  end
36
27
 
28
+ def fonts_manifest
29
+ {
30
+ "Cambria" => nil,
31
+ "Cambria Math" => nil,
32
+ "Times New Roman" => nil,
33
+ "Source Han Sans" => nil,
34
+ "Courier" => nil,
35
+ "Courier New" => nil,
36
+ }
37
+ end
38
+
37
39
  def use_presentation_xml(ext)
38
40
  return true if ext == :html_alt
39
41
  super
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "1.5.10".freeze
3
+ VERSION = "1.6.0".freeze
4
4
  end
5
5
  end
@@ -30,8 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
31
31
 
32
32
  spec.add_dependency "ruby-jing"
33
- spec.add_dependency "isodoc", "~> 1.2.0"
34
- spec.add_dependency "metanorma-standoc", "~> 1.6.0"
33
+ spec.add_dependency "isodoc", "~> 1.4.0"
34
+ spec.add_dependency "metanorma-standoc", "~> 1.7.0"
35
35
  spec.add_dependency "tokenizer", "~> 0.3.0"
36
36
  spec.add_dependency "twitter_cldr"
37
37
  spec.add_dependency "mn2sts", "~> 1.5.0"
@@ -6,17 +6,6 @@ RSpec.describe Asciidoctor::ISO do
6
6
  expect(Metanorma::ISO::VERSION).not_to be nil
7
7
  end
8
8
 
9
- #it "generates output for the Rice document" do
10
- #FileUtils.rm_f %w(spec/examples/rice.xml spec/examples/rice.doc spec/examples/rice.html spec/examples/rice_alt.html)
11
- #FileUtils.cd "spec/examples"
12
- #Asciidoctor.convert_file "rice.adoc", {:attributes=>{"backend"=>"iso"}, :safe=>0, :header_footer=>true, :requires=>["metanorma-iso"], :failure_level=>4, :mkdirs=>true, :to_file=>nil}
13
- #FileUtils.cd "../.."
14
- #expect(File.exist?("spec/examples/rice.xml"))).to be true
15
- #expect(File.exist?("spec/examples/rice.doc"))).to be true
16
- #expect(File.exist?("spec/examples/rice.html"))).to be true
17
- #expect(File.exist?("spec/examples/rice_alt.html"))).to be true
18
- #end
19
-
20
9
  it "processes a blank document" do
21
10
  expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
22
11
  #{ASCIIDOC_BLANK_HDR}
@@ -29,22 +18,43 @@ RSpec.describe Asciidoctor::ISO do
29
18
 
30
19
  it "converts a blank document" do
31
20
  FileUtils.rm_f "test.doc"
21
+ FileUtils.rm_f "test.html"
22
+ FileUtils.rm_f "test.pdf"
23
+ FileUtils.rm_f "test_alt.html"
32
24
  expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
33
25
  = Document title
34
26
  Author
35
27
  :docfile: test.adoc
36
28
  :novalid:
37
29
  :no-isobib:
38
- :no-pdf:
39
30
  INPUT
40
31
  #{BLANK_HDR}
41
32
  <sections/>
42
33
  </iso-standard>
43
34
  OUTPUT
35
+ expect(File.exist?("test_alt.html")).to be true
36
+ expect(File.exist?("test.html")).to be true
44
37
  expect(File.exist?("test.doc")).to be true
38
+ expect(File.exist?("test.pdf")).to be true
45
39
  expect(File.exist?("htmlstyle.css")).to be false
46
40
  end
47
41
 
42
+ it "converts a blank document in French" do
43
+ expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
44
+ = Document title
45
+ Author
46
+ :docfile: test.adoc
47
+ :novalid:
48
+ :no-isobib:
49
+ :no-pdf:
50
+ :language: fr
51
+ INPUT
52
+ #{BLANK_HDR_FR}
53
+ <sections/>
54
+ </iso-standard>
55
+ OUTPUT
56
+ end
57
+
48
58
  it "processes default metadata" do
49
59
  expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true).sub(%r{<boilerplate>.*</boilerplate>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
50
60
  = Document title
@@ -89,6 +99,7 @@ RSpec.describe Asciidoctor::ISO do
89
99
  :title-part-fr: Part du Titre
90
100
  :library-ics: 1,2,3
91
101
  :copyright-year: 2000
102
+ :horizontal: true
92
103
  INPUT
93
104
  <?xml version="1.0" encoding="UTF-8"?>
94
105
  <iso-standard xmlns="https://www.metanorma.org/ns/iso" type="semantic" version="#{Metanorma::ISO::VERSION}">
@@ -142,6 +153,7 @@ RSpec.describe Asciidoctor::ISO do
142
153
  </copyright>
143
154
  <ext>
144
155
  <doctype>article</doctype>
156
+ <horizontal>true</horizontal>
145
157
  <editorialgroup>
146
158
  <technical-committee number="1" type="A">TC</technical-committee>
147
159
  <technical-committee number="11" type="A1">TC1</technical-committee>
@@ -185,8 +197,8 @@ RSpec.describe Asciidoctor::ISO do
185
197
  :tc-docnumber: 2000, 2003
186
198
  :language: el
187
199
  :script: Grek
188
- :publisher: IEC,IETF,ISO
189
- :copyright-holder: ISO,IETF
200
+ :publisher: IEC;IETF;ISO
201
+ :copyright-holder: ISO;IETF
190
202
  :copyright-year: 2001
191
203
  :doctype: technical-report
192
204
  :pub-address: 1 Infinity Loop + \
@@ -191,7 +191,7 @@ RSpec.describe Asciidoctor::ISO do
191
191
  #{BLANK_HDR}
192
192
  <sections>
193
193
  <admonition id="_" type="safety precautions"><name>Safety Precautions</name><p id="_">While werewolves are hardy community members, keep in mind the following dietary concerns:</p>
194
- <ol id="_" type="arabic">
194
+ <ol id="_">
195
195
  <li>
196
196
  <p id="_">They are allergic to cinnamon.</p>
197
197
  </li>
@@ -124,7 +124,7 @@ RSpec.describe Asciidoctor::ISO do
124
124
  OUTPUT
125
125
  end
126
126
 
127
- it "strips any initial boilerplate from terms and definitions" do
127
+ it "keeps any initial boilerplate from terms and definitions" do
128
128
  expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
129
129
  #{ASCIIDOC_BLANK_HDR}
130
130
  == Terms and Definitions
@@ -142,6 +142,12 @@ RSpec.describe Asciidoctor::ISO do
142
142
  <terms id="_" obligation="normative"><title>Terms and definitions</title>
143
143
 
144
144
  #{TERM_BOILERPLATE}
145
+ <p id='_'>I am boilerplate</p>
146
+ <ul id='_'>
147
+ <li>
148
+ <p id='_'>So am I</p>
149
+ </li>
150
+ </ul>
145
151
  <term id="term-time">
146
152
  <preferred>Time</preferred>
147
153
  <definition><p id="_">This paragraph is extraneous</p></definition>
@@ -430,7 +436,7 @@ RSpec.describe Asciidoctor::ISO do
430
436
  <td valign="top" align="left">c</td>
431
437
  </tr>
432
438
  </tbody>
433
- <dl id="_">
439
+ <dl id="_" key="true">
434
440
  <dt>a</dt>
435
441
  <dd>
436
442
  <p id="_">b</p>
@@ -572,7 +578,7 @@ RSpec.describe Asciidoctor::ISO do
572
578
  #{BLANK_HDR}
573
579
  <sections><formula id="_">
574
580
  <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>F</mi><mi>or</mi><mi>μ</mi><mi>l</mi><mi>a</mi></math></stem>
575
- <dl id="_">
581
+ <dl id="_" key="true">
576
582
  <dt>a</dt>
577
583
  <dd>
578
584
  <p id="_">b</p>
@@ -620,7 +626,7 @@ RSpec.describe Asciidoctor::ISO do
620
626
  #{BLANK_HDR}
621
627
  <sections><figure id="_">
622
628
  <image src="spec/examples/rice_images/rice_image1.png" id="_" mimetype="image/png" height="auto" width="auto"/>
623
- <dl id="_">
629
+ <dl id="_" key="true">
624
630
  <dt>a</dt>
625
631
  <dd>
626
632
  <p id="_">b</p>
@@ -678,7 +684,7 @@ RSpec.describe Asciidoctor::ISO do
678
684
  <abbreviation>ISO</abbreviation>
679
685
  </organization>
680
686
  </contributor>
681
- <note format="text/plain" type="ISO DATE">The standard is in press</note>
687
+ <note format="text/plain" type="Unpublished-Status">The standard is in press</note>
682
688
  </bibitem>
683
689
  </references>
684
690
  </bibliography>
@@ -28,7 +28,7 @@ RSpec.describe Asciidoctor::ISO do
28
28
  </li>
29
29
  <li>
30
30
  <p id="_">List 3</p>
31
- <ol id="_" type="arabic">
31
+ <ol id="_">
32
32
  <li>
33
33
  <p id="_">List A</p>
34
34
  </li>
@@ -107,13 +107,13 @@ RSpec.describe Asciidoctor::ISO do
107
107
  <li><p id="_">Second</p><p id="_">entry1</p>
108
108
  <p id="_">entry2</p></li>
109
109
  </ul>
110
- <ol id="id1" type="alphabet">
110
+ <ol id="id1">
111
111
  <li>
112
112
  <p id="_">First</p>
113
113
  </li>
114
114
  <li>
115
115
  <p id="_">Second</p>
116
- <ol id="_" type="alphabet_upper">
116
+ <ol id="_">
117
117
  <li>
118
118
  <p id="_">Third</p>
119
119
  </li>
@@ -129,19 +129,19 @@ RSpec.describe Asciidoctor::ISO do
129
129
  <p id="_">Sixth</p>
130
130
  </li>
131
131
  </ol>
132
- <ol id="_" type="roman">
132
+ <ol id="_">
133
133
  <li>
134
134
  <p id="_">A</p>
135
135
  </li>
136
136
  <li>
137
137
  <p id="_">B</p>
138
- <ol id="_" type="roman_upper">
138
+ <ol id="_">
139
139
  <li>
140
140
  <p id="_">C</p>
141
141
  </li>
142
142
  <li>
143
143
  <p id="_">D</p>
144
- <ol id="_" type="arabic">
144
+ <ol id="_">
145
145
  <li>
146
146
  <p id="_">E</p>
147
147
  </li>
@@ -4,38 +4,177 @@ require "relaton_ietf"
4
4
 
5
5
  RSpec.describe Asciidoctor::ISO do
6
6
  it "processes draft ISO reference" do
7
- #stub_fetch_ref no_year: true, note: "The standard is in press"
8
-
7
+ mock_fdis
8
+ #mock_isobib_get_123
9
9
  expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
10
- #{ASCIIDOC_BLANK_HDR}
10
+ #{ISOBIB_BLANK_HDR}
11
+ == Clause
12
+ <<iso123>>
13
+ <<iso123>>
14
+ A.footnote:[a footnote]
15
+ <<fdis>>
16
+ <<fdis>>
17
+
11
18
  [bibliography]
12
19
  == Normative References
13
20
 
14
21
  * [[[iso123,ISO 123:--]]] footnote:[The standard is in press] _Standard_
22
+ * [[[fdis,ISO/FDIS 17664-1]]] Title
15
23
  INPUT
16
24
  #{BLANK_HDR}
17
- <sections>
18
- </sections><bibliography><references id="_" obligation="informative" normative="true">
19
- <title>Normative references</title>
20
- <p id="_">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>
21
- <bibitem id="iso123" type="standard">
22
- <title format="text/plain">Standard</title>
23
- <docidentifier>ISO 123:—</docidentifier>
24
- <docnumber>123</docnumber>
25
- <date type="published">
26
- <on>–</on>
27
- </date>
28
- <contributor>
29
- <role type="publisher"/>
30
- <organization>
31
- <name>International Organization for Standardization</name>
32
- <abbreviation>ISO</abbreviation>
33
- </organization>
34
- </contributor>
35
- <note format="text/plain" type="ISO DATE">The standard is in press</note>
36
- </bibitem>
37
- </references>
38
- </bibliography>
25
+ <sections>
26
+ <clause id='_' inline-header='false' obligation='normative'>
27
+ <title>Clause</title>
28
+ <p id='_'>
29
+ <eref type='inline' bibitemid='iso123' citeas='ISO 123:--'/>
30
+ <fn reference='1'>The standard is in press</fn>
31
+ <eref type='inline' bibitemid='iso123' citeas='ISO 123:--'/>
32
+ A.
33
+ <fn reference='2'>
34
+ <p id='_'>a footnote</p>
35
+ </fn>
36
+ <eref type='inline' bibitemid='fdis' citeas='ISO/FDIS 17664-1'/>
37
+ <fn reference='3'>
38
+ <p id='_'>Under preparation. (Stage at the time of publication ISO/FDIS 17664-1).</p>
39
+ </fn>
40
+ <eref type='inline' bibitemid='fdis' citeas='ISO/FDIS 17664-1'/>
41
+ </p>
42
+ </clause>
43
+ </sections>
44
+ <bibliography>
45
+ <references id='_' normative='true' obligation='informative'>
46
+ <title>Normative references</title>
47
+ <p id='_'>
48
+ The following documents are referred to in the text in such a way that
49
+ some or all of their content constitutes requirements of this document.
50
+ For dated references, only the edition cited applies. For undated
51
+ references, the latest edition of the referenced document (including any
52
+ amendments) applies.
53
+ </p>
54
+ <bibitem id='iso123' type='standard'>
55
+ <title format='text/plain'>Standard</title>
56
+ <docidentifier type='ISO'>ISO 123:—</docidentifier>
57
+ <docnumber>123</docnumber>
58
+ <date type='published'>
59
+ <on>–</on>
60
+ </date>
61
+ <contributor>
62
+ <role type='publisher'/>
63
+ <organization>
64
+ <name>International Organization for Standardization</name>
65
+ <abbreviation>ISO</abbreviation>
66
+ </organization>
67
+ </contributor>
68
+ <note format='text/plain' type='Unpublished-Status'>The standard is in press</note>
69
+ </bibitem>
70
+ <bibitem id='fdis' type='standard'>
71
+ <fetched>#{Date.today}</fetched>
72
+ <title type='title-intro' format='text/plain' language='fr' script='Latn'>Traitement de produits de soins de santé</title>
73
+ <title type='title-main' format='text/plain' language='fr' script='Latn'>
74
+ Informations relatives au traitement des dispositifs médicaux à
75
+ fournir par le fabricant du dispositif
76
+ </title>
77
+ <title type='title-part' format='text/plain' language='fr' script='Latn'>Partie 1: Titre manque</title>
78
+ <title type='main' format='text/plain' language='fr' script='Latn'>
79
+ Traitement de produits de soins de santé — Informations relatives au
80
+ traitement des dispositifs médicaux à fournir par le fabricant du
81
+ dispositif — Partie 1: Titre manque
82
+ </title>
83
+ <uri type='src'>https://www.iso.org/standard/81720.html</uri>
84
+ <uri type='rss'>https://www.iso.org/contents/data/standard/08/17/81720.detail.rss</uri>
85
+ <docidentifier type='ISO'>ISO/FDIS 17664-1</docidentifier>
86
+ <docidentifier type='URN'>urn:iso:std:iso-fdis:17664:-1:stage-50.00:ed-1:fr</docidentifier>
87
+ <docnumber>17664</docnumber>
88
+ <contributor>
89
+ <role type='publisher'/>
90
+ <organization>
91
+ <name>International Organization for Standardization</name>
92
+ <abbreviation>ISO</abbreviation>
93
+ <uri>www.iso.org</uri>
94
+ </organization>
95
+ </contributor>
96
+ <edition>1</edition>
97
+ <note type='Unpublished-Status'>
98
+ <p id='_'>Under preparation. (Stage at the time of publication ISO/FDIS 17664-1).</p>
99
+ </note>
100
+ <language>en</language>
101
+ <language>fr</language>
102
+ <script>Latn</script>
103
+ <status>
104
+ <stage>50</stage>
105
+ <substage>00</substage>
106
+ </status>
107
+ <copyright>
108
+ <from>unknown</from>
109
+ <owner>
110
+ <organization>
111
+ <name>ISO/FDIS</name>
112
+ </organization>
113
+ </owner>
114
+ </copyright>
115
+ <relation type='obsoletes'>
116
+ <bibitem type='standard'>
117
+ <formattedref format='text/plain'>ISO 17664:2017</formattedref>
118
+ </bibitem>
119
+ </relation>
120
+ <relation type='instance'>
121
+ <bibitem type='standard'>
122
+ <fetched>2020-11-03</fetched>
123
+ <title type='title-intro' format='text/plain' language='fr' script='Latn'>Traitement de produits de soins de santé</title>
124
+ <title type='title-main' format='text/plain' language='fr' script='Latn'>
125
+ Informations relatives au traitement des dispositifs médicaux à
126
+ fournir par le fabricant du dispositif
127
+ </title>
128
+ <title type='title-part' format='text/plain' language='fr' script='Latn'>Partie 1: Titre manque</title>
129
+ <title type='main' format='text/plain' language='fr' script='Latn'>
130
+ Traitement de produits de soins de santé — Informations relatives
131
+ au traitement des dispositifs médicaux à fournir par le fabricant
132
+ du dispositif — Partie 1: Titre manque
133
+ </title>
134
+ <uri type='src'>https://www.iso.org/standard/81720.html</uri>
135
+ <uri type='rss'>https://www.iso.org/contents/data/standard/08/17/81720.detail.rss</uri>
136
+ <docidentifier type='ISO'>ISO/FDIS 17664-1</docidentifier>
137
+ <docidentifier type='URN'>urn:iso:std:iso-fdis:17664:-1:stage-50.00:ed-1:fr</docidentifier>
138
+ <docnumber>17664</docnumber>
139
+ <contributor>
140
+ <role type='publisher'/>
141
+ <organization>
142
+ <name>International Organization for Standardization</name>
143
+ <abbreviation>ISO</abbreviation>
144
+ <uri>www.iso.org</uri>
145
+ </organization>
146
+ </contributor>
147
+ <edition>1</edition>
148
+ <note type='Unpublished-Status'>
149
+ <p id='_'>Under preparation. (Stage at the time of publication ISO/FDIS 17664-1).</p>
150
+ </note>
151
+ <language>en</language>
152
+ <language>fr</language>
153
+ <script>Latn</script>
154
+ <status>
155
+ <stage>50</stage>
156
+ <substage>00</substage>
157
+ </status>
158
+ <copyright>
159
+ <from>unknown</from>
160
+ <owner>
161
+ <organization>
162
+ <name>ISO/FDIS</name>
163
+ </organization>
164
+ </owner>
165
+ </copyright>
166
+ <relation type='obsoletes'>
167
+ <bibitem type='standard'>
168
+ <formattedref format='text/plain'>ISO 17664:2017</formattedref>
169
+ </bibitem>
170
+ </relation>
171
+ <place>Geneva</place>
172
+ </bibitem>
173
+ </relation>
174
+ <place>Geneva</place>
175
+ </bibitem>
176
+ </references>
177
+ </bibliography>
39
178
  </iso-standard>
40
179
  OUTPUT
41
180
  end
@@ -141,132 +280,16 @@ RSpec.describe Asciidoctor::ISO do
141
280
  OUTPUT
142
281
  end
143
282
 
144
- private
145
-
146
283
  private
147
284
 
148
285
  def mock_isobib_get_123
149
- expect(Isobib::IsoBibliography).to receive(:get).with("ISO 123", nil, {}) do
150
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
286
+ expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, {:lang=>"en", :title=>"Title", :usrlbl=>nil}) do
287
+ RelatonIsoBib::XMLParser.from_xml(<<~"OUTPUT")
151
288
  <bibitem type=\"international-standard\" id=\"ISO123\">\n <fetched>#{Date.today}</fetched>\n<title format=\"text/plain\" language=\"en\" script=\"Latn\">Rubber latex -- Sampling</title>\n <title format=\"text/plain\" language=\"fr\" script=\"Latn\">Latex de caoutchouc -- ?chantillonnage</title>\n <uri type=\"src\">https://www.iso.org/standard/23281.html</uri>\n <uri type=\"obp\">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>\n <uri type=\"rss\">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>\n <docidentifier type="ISO">ISO 123:2001</docidentifier>\n <date type=\"published\">\n <on>2001</on>\n </date>\n <contributor>\n <role type=\"publisher\"/>\n <organization>\n <name>International Organization for Standardization</name>\n <abbreviation>ISO</abbreviation>\n <uri>www.iso.org</uri>\n </organization>\n </contributor>\n <edition>3</edition>\n <language>en</language>\n <language>fr</language>\n <script>Latn</script>\n <status>Published</status>\n <copyright>\n <from>2001</from>\n <owner>\n <organization>\n <name>ISO</name>\n <abbreviation></abbreviation>\n </organization>\n </owner>\n </copyright>\n <relation type=\"obsoletes\">\n <bibitem>\n <formattedref>ISO 123:1985</formattedref>\n </bibitem>\n </relation>\n <relation type=\"updates\">\n <bibitem>\n <formattedref>ISO 123:2001</formattedref>\n </bibitem>\n </relation>\n</bibitem>
152
289
  OUTPUT
153
290
  end
154
291
  end
155
292
 
156
- def mock_isobib_get_124
157
- expect(Isobib::IsoBibliography).to receive(:get).with("ISO 124", "2014", {}) do
158
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
159
- <bibitem type="international-standard" id="iso124">
160
- <fetched>#{Date.today}</fetched>
161
- <title format="text/plain" language="en" script="Latn">Latex, rubber -- Determination of total solids content</title>
162
- <title format="text/plain" language="fr" script="Latn">Latex de caoutchouc -- Détermination des matières solides totales</title>
163
- <uri type="src">https://www.iso.org/standard/61884.html</uri>
164
- <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
165
- <uri type="rss">https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
166
- <docidentifier type="ISO">ISO 124:2014</docidentifier>
167
- <date type="published">
168
- <on>2014</on>
169
- </date>
170
- <contributor>
171
- <role type="publisher"/>
172
- <organization>
173
- <name>International Organization for Standardization</name>
174
- <abbreviation>ISO</abbreviation>
175
- <uri>www.iso.org</uri>
176
- </organization>
177
- </contributor>
178
- <edition>7</edition>
179
- <language>en</language>
180
- <language>fr</language>
181
- <script>Latn</script>
182
- <abstract format="plain" language="en" script="Latn">ISO 124:2014 specifies methods for the determination of the total solids content of natural rubber field and concentrated latices and synthetic rubber latex. These methods are not necessarily suitable for latex from natural sources other than the Hevea brasiliensis, for vulcanized latex, for compounded latex, or for artificial dispersions of rubber.</abstract>
183
- <status>Published</status>
184
- <copyright>
185
- <from>2014</from>
186
- <owner>
187
- <organization>
188
- <name>ISO</name>
189
- <abbreviation/>
190
- </organization>
191
- </owner>
192
- </copyright>
193
- <relation type="obsoletes">
194
- <bibitem>
195
- <formattedref>ISO 124:2011</formattedref>
196
- </bibitem>
197
- </relation>
198
- <ics>
199
- <code>83.040.10</code>
200
- <text>Latex and raw rubber</text>
201
- </ics>
202
- </bibitem>
203
- OUTPUT
204
- end
205
- end
206
-
207
- def mock_isobib_get_iec12382
208
- expect(Isobib::IsoBibliography).to receive(:get).with("ISO/IEC TR 12382", "1992", {}) do
209
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
210
- <bibitem type="international-standard" id="iso123">
211
- <fetched>#{Date.today}</fetched>
212
- <title format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
213
- <title format="text/plain" language="fr" script="Latn">Index permuté du vocabulaire des technologies de l'information</title>
214
- <uri type="src">https://www.iso.org/standard/21071.html</uri>
215
- <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:21071:en</uri>
216
- <uri type="rss">https://www.iso.org/contents/data/standard/02/10/21071.detail.rss</uri>
217
- <docidentifier type="ISO">ISO/IEC 12382:1992</docidentifier>
218
- <date type="published">
219
- <on>1992</on>
220
- </date>
221
- <contributor>
222
- <role type="publisher"/>
223
- <organization>
224
- <name>International Organization for Standardization</name>
225
- <abbreviation>ISO</abbreviation>
226
- <uri>www.iso.org</uri>
227
- </organization>
228
- </contributor>
229
- <contributor>
230
- <role type="publisher"/>
231
- <organization>
232
- <name>International Electrotechnical Commission</name>
233
- <abbreviation>IEC</abbreviation>
234
- <uri>www.iec.ch</uri>
235
- </organization>
236
- </contributor>
237
- <edition>2</edition>
238
- <language>en</language>
239
- <language>fr</language>
240
- <script>Latn</script>
241
- <abstract format="plain" language="en" script="Latn">Contains a permuted index of all terms included in the parts 1 - 28 of ISO 2382. If any of these parts has been revised, the present TR refers to the revision.</abstract>
242
- <status>Published</status>
243
- <copyright>
244
- <from>1992</from>
245
- <owner>
246
- <organization>
247
- <name>ISO/IEC</name>
248
- <abbreviation/>
249
- </organization>
250
- </owner>
251
- </copyright>
252
- <relation type="updates">
253
- <bibitem>
254
- <formattedref>ISO/IEC TR 12382:1992</formattedref>
255
- </bibitem>
256
- </relation>
257
- <ics>
258
- <code>35.020</code>
259
- <text>Information technology (IT) in general</text>
260
- </ics>
261
- <ics>
262
- <code>01.040.35</code>
263
- <text>Information technology (Vocabularies)</text>
264
- </ics>
265
- </bibitem>
266
- OUTPUT
267
- end
268
- end
269
-
270
293
  def mock_rfcbib_get_rfc8341
271
294
  expect(IETFBib::RfcBibliography).to receive(:get).with("RFC 8341", nil, {}) do
272
295
  IETFBib::XMLParser.from_xml(<<~"OUTPUT")
@@ -283,4 +306,12 @@ OUTPUT
283
306
  end
284
307
  end
285
308
 
309
+ def mock_fdis
310
+ expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO/FDIS 17664-1", nil, {:lang=>"en", :title=>"Title", :usrlbl=>nil}) do
311
+ RelatonIsoBib::XMLParser.from_xml(<<~"OUTPUT")
312
+ <bibitem id="x" type="standard"> <fetched>#{Date.today}</fetched> <title type="title-intro" format="text/plain" language="fr" script="Latn">Traitement de produits de soins de santé</title> <title type="title-main" format="text/plain" language="fr" script="Latn">Informations relatives au traitement des dispositifs médicaux à fournir par le fabricant du dispositif</title> <title type="title-part" format="text/plain" language="fr" script="Latn">Partie 1: Titre manque</title> <title type="main" format="text/plain" language="fr" script="Latn">Traitement de produits de soins de santé — Informations relatives au traitement des dispositifs médicaux à fournir par le fabricant du dispositif — Partie 1: Titre manque</title> <uri type="src">https://www.iso.org/standard/81720.html</uri> <uri type="rss">https://www.iso.org/contents/data/standard/08/17/81720.detail.rss</uri> <docidentifier type="ISO">ISO/FDIS 17664-1</docidentifier> <docidentifier type="URN">urn:iso:std:iso-fdis:17664:-1:stage-50.00:ed-1:fr</docidentifier> <docnumber>17664</docnumber> <contributor> <role type="publisher"/> <organization> <name>International Organization for Standardization</name> <abbreviation>ISO</abbreviation> <uri>www.iso.org</uri> </organization> </contributor> <edition>1</edition> <language>en</language> <language>fr</language> <script>Latn</script> <status> <stage>50</stage> <substage>00</substage> </status> <copyright> <from>unknown</from> <owner> <organization> <name>ISO/FDIS</name> </organization> </owner> </copyright> <relation type="obsoletes"> <bibitem type="standard"> <formattedref format="text/plain">ISO 17664:2017</formattedref> </bibitem> </relation> <relation type="instance"> <bibitem type="standard"> <fetched>2020-11-03</fetched> <title type="title-intro" format="text/plain" language="fr" script="Latn">Traitement de produits de soins de santé</title> <title type="title-main" format="text/plain" language="fr" script="Latn">Informations relatives au traitement des dispositifs médicaux à fournir par le fabricant du dispositif</title> <title type="title-part" format="text/plain" language="fr" script="Latn">Partie 1: Titre manque</title> <title type="main" format="text/plain" language="fr" script="Latn">Traitement de produits de soins de santé — Informations relatives au traitement des dispositifs médicaux à fournir par le fabricant du dispositif — Partie 1: Titre manque</title> <uri type="src">https://www.iso.org/standard/81720.html</uri> <uri type="rss">https://www.iso.org/contents/data/standard/08/17/81720.detail.rss</uri> <docidentifier type="ISO">ISO/FDIS 17664-1</docidentifier> <docidentifier type="URN">urn:iso:std:iso-fdis:17664:-1:stage-50.00:ed-1:fr</docidentifier> <docnumber>17664</docnumber> <contributor> <role type="publisher"/> <organization> <name>International Organization for Standardization</name> <abbreviation>ISO</abbreviation> <uri>www.iso.org</uri> </organization> </contributor> <edition>1</edition> <language>en</language> <language>fr</language> <script>Latn</script> <status> <stage>50</stage> <substage>00</substage> </status> <copyright> <from>unknown</from> <owner> <organization> <name>ISO/FDIS</name> </organization> </owner> </copyright> <relation type="obsoletes"> <bibitem type="standard"> <formattedref format="text/plain">ISO 17664:2017</formattedref> </bibitem> </relation> <place>Geneva</place> </bibitem> </relation> <place>Geneva</place></bibitem>
313
+ OUTPUT
314
+ end
315
+ end
316
+
286
317
  end