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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +66 -0
- data/README.adoc +5 -6
- data/lib/asciidoctor/iso/base.rb +5 -5
- data/lib/asciidoctor/iso/basicdoc.rng +50 -3
- data/lib/asciidoctor/iso/boilerplate-fr.xml +40 -0
- data/lib/asciidoctor/iso/boilerplate.xml +1 -0
- data/lib/asciidoctor/iso/cleanup.rb +38 -6
- data/lib/asciidoctor/iso/front.rb +5 -0
- data/lib/asciidoctor/iso/isodoc.rng +36 -43
- data/lib/asciidoctor/iso/isostandard.rng +11 -0
- data/lib/asciidoctor/iso/validate.rb +1 -1
- data/lib/asciidoctor/iso/validate_section.rb +9 -0
- data/lib/isodoc/iso/base_convert.rb +2 -1
- data/lib/isodoc/iso/html/header.html +12 -24
- data/lib/isodoc/iso/html/htmlstyle.css +1 -1
- data/lib/isodoc/iso/html/htmlstyle.scss +1 -1
- data/lib/isodoc/iso/html/isodoc.css +42 -42
- data/lib/isodoc/iso/html/isodoc.scss +42 -42
- data/lib/isodoc/iso/html/style-human.css +13 -9
- data/lib/isodoc/iso/html/style-human.scss +7 -7
- data/lib/isodoc/iso/html/style-iso.css +11 -7
- data/lib/isodoc/iso/html/style-iso.scss +5 -5
- data/lib/isodoc/iso/html/wordstyle.css +67 -67
- data/lib/isodoc/iso/html/wordstyle.scss +67 -67
- data/lib/isodoc/iso/html_convert.rb +4 -0
- data/lib/isodoc/iso/i18n-en.yaml +4 -0
- data/lib/isodoc/iso/i18n-fr.yaml +5 -0
- data/lib/isodoc/iso/i18n-zh-Hans.yaml +5 -0
- data/lib/isodoc/iso/i18n.rb +10 -11
- data/lib/isodoc/iso/iso.amendment.xsl +391 -88
- data/lib/isodoc/iso/iso.international-standard.xsl +391 -88
- data/lib/isodoc/iso/metadata.rb +20 -19
- data/lib/isodoc/iso/word_convert.rb +4 -0
- data/lib/isodoc/iso/xref.rb +10 -0
- data/lib/metanorma/iso/processor.rb +11 -9
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +2 -2
- data/spec/asciidoctor-iso/base_spec.rb +26 -14
- data/spec/asciidoctor-iso/blocks_spec.rb +1 -1
- data/spec/asciidoctor-iso/cleanup_spec.rb +11 -5
- data/spec/asciidoctor-iso/lists_spec.rb +6 -6
- data/spec/asciidoctor-iso/refs_spec.rb +174 -143
- data/spec/asciidoctor-iso/section_spec.rb +5 -0
- data/spec/asciidoctor-iso/validate_spec.rb +18 -1
- data/spec/isodoc/amd_spec.rb +187 -22
- data/spec/isodoc/blocks_spec.rb +1 -0
- data/spec/isodoc/i18n_spec.rb +9 -22
- data/spec/isodoc/inline_spec.rb +1 -1
- data/spec/isodoc/metadata_spec.rb +170 -3
- data/spec/isodoc/postproc_spec.rb +2 -5
- data/spec/isodoc/ref_spec.rb +4 -7
- data/spec/isodoc/section_spec.rb +20 -0
- data/spec/isodoc/xref_spec.rb +12 -0
- data/spec/spec_helper.rb +17 -1
- metadata +8 -12
- data/.github/workflows/macos.yml +0 -41
- data/.github/workflows/ubuntu.yml +0 -45
- data/.github/workflows/windows.yml +0 -43
- data/lib/asciidoctor/iso/macros.rb +0 -21
- data/lib/asciidoctor/iso/term_lookup_cleanup.rb +0 -86
- data/spec/asciidoctor-iso/macros_spec.rb +0 -310
data/lib/isodoc/iso/metadata.rb
CHANGED
@@ -5,15 +5,13 @@ module IsoDoc
|
|
5
5
|
class Metadata < IsoDoc::Metadata
|
6
6
|
def initialize(lang, script, i18n)
|
7
7
|
super
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
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,
|
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,
|
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,
|
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,
|
146
|
+
set(:doctitlecorrlabel, corr_prefix(corrnumber, lang)) if corrnumber
|
148
147
|
end
|
149
148
|
|
150
149
|
def subtitle(isoxml, _out)
|
151
|
-
|
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,
|
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,
|
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,
|
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,
|
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
|
|
data/lib/isodoc/iso/xref.rb
CHANGED
@@ -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
|
data/metanorma-iso.gemspec
CHANGED
@@ -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.
|
34
|
-
spec.add_dependency "metanorma-standoc", "~> 1.
|
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
|
189
|
-
:copyright-holder: ISO
|
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="_"
|
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 "
|
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="
|
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="_"
|
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"
|
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="_"
|
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="_"
|
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="_"
|
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="_"
|
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
|
-
|
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
|
-
#{
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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(
|
150
|
-
|
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
|