metanorma-standoc 1.7.3 → 1.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/asciidoctor/standoc/base.rb +31 -44
- data/lib/asciidoctor/standoc/basicdoc.rng +5 -3
- data/lib/asciidoctor/standoc/blocks.rb +7 -7
- data/lib/asciidoctor/standoc/blocks_notes.rb +2 -2
- data/lib/asciidoctor/standoc/cleanup.rb +5 -6
- data/lib/asciidoctor/standoc/cleanup_block.rb +3 -3
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +56 -0
- data/lib/asciidoctor/standoc/cleanup_inline.rb +22 -26
- data/lib/asciidoctor/standoc/cleanup_ref.rb +0 -85
- data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +94 -0
- data/lib/asciidoctor/standoc/converter.rb +0 -1
- data/lib/asciidoctor/standoc/front.rb +2 -2
- data/lib/asciidoctor/standoc/inline.rb +1 -1
- data/lib/asciidoctor/standoc/isodoc.rng +3 -0
- data/lib/asciidoctor/standoc/lists.rb +2 -2
- data/lib/asciidoctor/standoc/macros_plantuml.rb +1 -1
- data/lib/asciidoctor/standoc/ref_sect.rb +2 -2
- data/lib/asciidoctor/standoc/reqt.rb +6 -1
- data/lib/asciidoctor/standoc/section.rb +3 -80
- data/lib/asciidoctor/standoc/table.rb +1 -1
- data/lib/asciidoctor/standoc/terms.rb +125 -0
- data/lib/asciidoctor/standoc/utils.rb +2 -96
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +2 -2
- data/spec/asciidoctor-standoc/base_spec.rb +30 -1
- data/spec/asciidoctor-standoc/cleanup_spec.rb +111 -2
- data/spec/asciidoctor-standoc/isobib_cache_spec.rb +4 -4
- data/spec/asciidoctor-standoc/refs_dl_spec.rb +13 -1
- data/spec/asciidoctor-standoc/refs_spec.rb +12 -12
- data/spec/asciidoctor-standoc/section_spec.rb +5 -3
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +47 -47
- data/spec/vcr_cassettes/isobib_get_123.yml +11 -11
- data/spec/vcr_cassettes/isobib_get_123_1.yml +26 -26
- data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +36 -36
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +14 -14
- data/spec/vcr_cassettes/isobib_get_124.yml +14 -14
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +45 -45
- metadata +19 -18
- data/lib/asciidoctor/standoc/log.rb +0 -59
@@ -5,105 +5,11 @@ require "json"
|
|
5
5
|
require "pathname"
|
6
6
|
require "open-uri"
|
7
7
|
require "uuidtools"
|
8
|
-
require "sterile"
|
9
8
|
require "mimemagic"
|
10
9
|
|
11
10
|
module Asciidoctor
|
12
11
|
module Standoc
|
13
12
|
module Utils
|
14
|
-
class << self
|
15
|
-
def anchor_or_uuid(node = nil)
|
16
|
-
uuid = UUIDTools::UUID.random_create
|
17
|
-
node.nil? || node.id.nil? || node.id.empty? ? "_" + uuid : node.id
|
18
|
-
end
|
19
|
-
|
20
|
-
def asciidoc_sub(x)
|
21
|
-
return nil if x.nil?
|
22
|
-
return "" if x.empty?
|
23
|
-
d = Asciidoctor::Document.new(x.lines.entries, { header_footer: false,
|
24
|
-
backend: :standoc })
|
25
|
-
b = d.parse.blocks.first
|
26
|
-
b.apply_subs(b.source)
|
27
|
-
end
|
28
|
-
|
29
|
-
def localdir(node)
|
30
|
-
docfile = node.attr("docfile")
|
31
|
-
docfile.nil? ? './' : Pathname.new(docfile).parent.to_s + '/'
|
32
|
-
end
|
33
|
-
|
34
|
-
# TODO needs internationalisation
|
35
|
-
def smartformat(n)
|
36
|
-
n.gsub(/ --? /, " — ").
|
37
|
-
gsub(/\'(\d\d)(?=[^\u2019\'\s<]+[’\'][\p{P}\p{Z}])([\p{P}\p{Z}])/, "\u2018\\1\\2").
|
38
|
-
gsub(/--/, "—").smart_format.gsub(/</, "<").gsub(/>/, ">")
|
39
|
-
end
|
40
|
-
|
41
|
-
def endash_date(elem)
|
42
|
-
elem.traverse do |n|
|
43
|
-
n.text? and n.replace(n.text.gsub(/\s+--?\s+/, "–").gsub(/--/, "–"))
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# Set hash value using keys path
|
48
|
-
# mod from https://stackoverflow.com/a/42425884
|
49
|
-
def set_nested_value(hash, keys, new_val)
|
50
|
-
key = keys[0]
|
51
|
-
if keys.length == 1
|
52
|
-
hash[key] = hash[key].is_a?(Array) ? (hash[key] << new_val) :
|
53
|
-
hash[key].nil? ? new_val : [hash[key], new_val]
|
54
|
-
return hash
|
55
|
-
end
|
56
|
-
if hash[key].is_a?(Array)
|
57
|
-
hash[key][-1] = {} if hash[key][-1].nil?
|
58
|
-
set_nested_value(hash[key][-1], keys[1..-1], new_val)
|
59
|
-
elsif hash[key].nil? || hash[key].empty?
|
60
|
-
hash[key] = {}
|
61
|
-
set_nested_value(hash[key], keys[1..-1], new_val)
|
62
|
-
elsif hash[key].is_a?(Hash) && !hash[key][keys[1]]
|
63
|
-
set_nested_value(hash[key], keys[1..-1], new_val)
|
64
|
-
elsif !hash[key][keys[1]]
|
65
|
-
hash[key] = [hash[key], {}]
|
66
|
-
set_nested_value(hash[key][-1], keys[1..-1], new_val)
|
67
|
-
else
|
68
|
-
set_nested_value(hash[key], keys[1..-1], new_val)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def flatten_rawtext_lines(node, result)
|
73
|
-
node.lines.each do |x|
|
74
|
-
if node.respond_to?(:context) && (node.context == :literal ||
|
75
|
-
node.context == :listing)
|
76
|
-
result << x.gsub(/</, "<").gsub(/>/, ">")
|
77
|
-
else
|
78
|
-
# strip not only HTML <tag>, and Asciidoc xrefs <<xref>>
|
79
|
-
result << x.gsub(/<[^>]*>+/, "")
|
80
|
-
end
|
81
|
-
end
|
82
|
-
result
|
83
|
-
end
|
84
|
-
|
85
|
-
# if node contains blocks, flatten them into a single line;
|
86
|
-
# and extract only raw text
|
87
|
-
def flatten_rawtext(node)
|
88
|
-
result = []
|
89
|
-
if node.respond_to?(:blocks) && node.blocks?
|
90
|
-
node.blocks.each { |b| result << flatten_rawtext(b) }
|
91
|
-
elsif node.respond_to?(:lines)
|
92
|
-
result = flatten_rawtext_lines(node, result)
|
93
|
-
elsif node.respond_to?(:text)
|
94
|
-
result << node.text.gsub(/<[^>]*>+/, "")
|
95
|
-
else
|
96
|
-
result << node.content.gsub(/<[^>]*>+/, "")
|
97
|
-
end
|
98
|
-
result.reject(&:empty?)
|
99
|
-
end
|
100
|
-
|
101
|
-
def reqt_subpart(x)
|
102
|
-
%w(specification measurement-target verification import label
|
103
|
-
subject inherit classification title).include? x
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
13
|
def convert(node, transform = nil, opts = {})
|
108
14
|
transform ||= node.node_name
|
109
15
|
opts.empty? ? (send transform, node) : (send transform, node, opts)
|
@@ -177,14 +83,14 @@ module Asciidoctor
|
|
177
83
|
SUBCLAUSE_XPATH = "//clause[not(parent::sections)]"\
|
178
84
|
"[not(ancestor::boilerplate)]".freeze
|
179
85
|
|
180
|
-
|
86
|
+
def isodoc(lang, script, i18nyaml = nil)
|
181
87
|
conv = html_converter(EmptyAttr.new)
|
182
88
|
i18n = conv.i18n_init(lang, script, i18nyaml)
|
183
89
|
conv.metadata_init(lang, script, i18n)
|
184
90
|
conv
|
185
91
|
end
|
186
92
|
|
187
|
-
|
93
|
+
class EmptyAttr
|
188
94
|
def attr(_x)
|
189
95
|
nil
|
190
96
|
end
|
data/metanorma-standoc.gemspec
CHANGED
@@ -28,16 +28,16 @@ Gem::Specification.new do |spec|
|
|
28
28
|
|
29
29
|
spec.add_dependency "asciidoctor", "~> 2.0.0"
|
30
30
|
spec.add_dependency "ruby-jing"
|
31
|
-
spec.add_dependency "isodoc", "~> 1.
|
31
|
+
spec.add_dependency "isodoc", "~> 1.5.0"
|
32
32
|
spec.add_dependency "iev", "~> 0.2.1"
|
33
33
|
spec.add_dependency "metanorma-plugin-datastruct"
|
34
34
|
spec.add_dependency "metanorma-plugin-lutaml", "~> 0.2.1"
|
35
35
|
# relaton-cli not just relaton, to avoid circular reference in metanorma
|
36
36
|
spec.add_dependency "relaton-cli", "~> 1.7.0"
|
37
37
|
spec.add_dependency "relaton-iev", "~> 1.1.0"
|
38
|
-
spec.add_dependency "sterile", "~> 1.0.14"
|
39
38
|
spec.add_dependency "concurrent-ruby"
|
40
39
|
spec.add_dependency "unicode2latex", "~> 0.0.1"
|
40
|
+
spec.add_dependency "metanorma-utils", "~> 1"
|
41
41
|
spec.add_dependency "mimemagic"
|
42
42
|
spec.add_dependency "mathml2asciimath"
|
43
43
|
spec.add_dependency "latexmath"
|
@@ -32,7 +32,36 @@ RSpec.describe Asciidoctor::Standoc do
|
|
32
32
|
expect(File.exist?("htmlstyle.css")).to be false
|
33
33
|
end
|
34
34
|
|
35
|
-
it "
|
35
|
+
it "assigns default scripts to major languages" do
|
36
|
+
FileUtils.rm_f "test.doc"
|
37
|
+
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
38
|
+
= Document title
|
39
|
+
Author
|
40
|
+
:docfile: test.adoc
|
41
|
+
:novalid:
|
42
|
+
:language: ar
|
43
|
+
INPUT
|
44
|
+
<standard-document xmlns='https://www.metanorma.org/ns/standoc' type='semantic' version='#{Metanorma::Standoc::VERSION}'>
|
45
|
+
<bibdata type='standard'>
|
46
|
+
<title language='en' format='text/plain'>Document title</title>
|
47
|
+
<language>ar</language>
|
48
|
+
<script>Arab</script>
|
49
|
+
<status>
|
50
|
+
<stage>published</stage>
|
51
|
+
</status>
|
52
|
+
<copyright>
|
53
|
+
<from>2021</from>
|
54
|
+
</copyright>
|
55
|
+
<ext>
|
56
|
+
<doctype>article</doctype>
|
57
|
+
</ext>
|
58
|
+
</bibdata>
|
59
|
+
<sections> </sections>
|
60
|
+
</standard-document>
|
61
|
+
OUTPUT
|
62
|
+
end
|
63
|
+
|
64
|
+
it "processes publisher abbreviations" do
|
36
65
|
mock_org_abbrevs
|
37
66
|
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
38
67
|
= Document title
|
@@ -1867,6 +1867,8 @@ input = <<~INPUT
|
|
1867
1867
|
<<1:>>
|
1868
1868
|
<<1#b>>
|
1869
1869
|
<<:a#b:>>
|
1870
|
+
<</%ab>>
|
1871
|
+
<<1!>>
|
1870
1872
|
|
1871
1873
|
INPUT
|
1872
1874
|
expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).gsub(/<p id="_[^"]+">/, "").gsub('</p>', ""))).to be_equivalent_to (<<~"OUTPUT")
|
@@ -1888,18 +1890,27 @@ expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).
|
|
1888
1890
|
<sections>
|
1889
1891
|
<clause id='a_b' inline-header='false' obligation='normative'>
|
1890
1892
|
<title>A</title>
|
1891
|
-
<
|
1893
|
+
<eref bibitemid='__ab' citeas=''/>
|
1892
1894
|
<xref target='_'/>
|
1893
1895
|
<xref target='_1'/>
|
1894
1896
|
<xref target='_1_'/>
|
1895
1897
|
<xref target='1#b'/>
|
1896
1898
|
<xref target='_a#b_'/>
|
1899
|
+
<xref target='_%ab'/>
|
1900
|
+
<xref target='_1_'/>
|
1897
1901
|
</clause>
|
1898
1902
|
</sections>
|
1903
|
+
<bibliography>
|
1904
|
+
<references hidden='true' normative='false'>
|
1905
|
+
<bibitem id='__ab' type='internal'>
|
1906
|
+
<docidentifier type='repository'>//ab</docidentifier>
|
1907
|
+
</bibitem>
|
1908
|
+
</references>
|
1909
|
+
</bibliography>
|
1899
1910
|
</standard-document>
|
1900
1911
|
OUTPUT
|
1901
1912
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <clause id="a_b" inline-header="false" obligation="normative"/> from a:b}).to_stderr
|
1902
|
-
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <
|
1913
|
+
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <eref bibitemid="__ab" citeas=""/> from /_ab}).to_stderr
|
1903
1914
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_"/> from :}).to_stderr
|
1904
1915
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_1"/> from 1}).to_stderr
|
1905
1916
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_1_"/> from 1:}).to_stderr
|
@@ -2109,6 +2120,104 @@ mock_mathml_italicise({ uppergreek: true, upperroman: true, lowergreek: true, lo
|
|
2109
2120
|
|
2110
2121
|
end
|
2111
2122
|
|
2123
|
+
it "process express_ref macro with existing bibliography" do
|
2124
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true, agree_to_terms: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2125
|
+
#{ASCIIDOC_BLANK_HDR}
|
2126
|
+
== Clause
|
2127
|
+
|
2128
|
+
<<uml:A:A.B.C,C>>
|
2129
|
+
<<uml:A>>
|
2130
|
+
<<express-schema:action:action.AA,AA>>
|
2131
|
+
<<express-schema:action:action.AB>>
|
2132
|
+
|
2133
|
+
[[action]]
|
2134
|
+
[type="express-schema"]
|
2135
|
+
== Action
|
2136
|
+
|
2137
|
+
[[action.AA]]
|
2138
|
+
=== AA
|
2139
|
+
|
2140
|
+
[bibliography]
|
2141
|
+
== Bibliography
|
2142
|
+
* [[[D,E]]] F
|
2143
|
+
INPUT
|
2144
|
+
#{BLANK_HDR}
|
2145
|
+
<sections>
|
2146
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
2147
|
+
<title>Clause</title>
|
2148
|
+
<p id='_'>
|
2149
|
+
<eref bibitemid='uml_A' citeas="">
|
2150
|
+
<localityStack>
|
2151
|
+
<locality type='anchor'><referenceFrom>A.B.C</referenceFrom></locality>
|
2152
|
+
</localityStack>
|
2153
|
+
C
|
2154
|
+
</eref>
|
2155
|
+
<eref bibitemid='uml_A' citeas=""/>
|
2156
|
+
<xref target='action.AA'>AA</xref>
|
2157
|
+
<xref target='action'>** Missing target action.AB</xref>
|
2158
|
+
</p>
|
2159
|
+
</clause>
|
2160
|
+
<clause id='action' type='express-schema' inline-header='false' obligation='normative'>
|
2161
|
+
<title>Action</title>
|
2162
|
+
<clause id='action.AA' inline-header='false' obligation='normative'>
|
2163
|
+
<title>AA</title>
|
2164
|
+
</clause>
|
2165
|
+
</clause>
|
2166
|
+
</sections>
|
2167
|
+
<bibliography>
|
2168
|
+
<references id='_' normative='false' obligation='informative'>
|
2169
|
+
<title>Bibliography</title>
|
2170
|
+
<bibitem id='D'>
|
2171
|
+
<formattedref format='application/x-isodoc+xml'>F</formattedref>
|
2172
|
+
<docidentifier>E</docidentifier>
|
2173
|
+
</bibitem>
|
2174
|
+
</references>
|
2175
|
+
<references hidden='true' normative='false'>
|
2176
|
+
<bibitem id='uml_A' type='internal'>
|
2177
|
+
<docidentifier type='repository'>uml/A</docidentifier>
|
2178
|
+
</bibitem>
|
2179
|
+
</references>
|
2180
|
+
</bibliography>
|
2181
|
+
</standard-document>
|
2182
|
+
OUTPUT
|
2183
|
+
end
|
2184
|
+
|
2185
|
+
|
2186
|
+
it "process express_ref macro with no existing bibliography" do
|
2187
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true, agree_to_terms: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2188
|
+
#{ASCIIDOC_BLANK_HDR}
|
2189
|
+
== Clause
|
2190
|
+
|
2191
|
+
<<express-schema:A:A.B.C,C>>
|
2192
|
+
<<express-schema:A>>
|
2193
|
+
INPUT
|
2194
|
+
#{BLANK_HDR}
|
2195
|
+
<sections>
|
2196
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
2197
|
+
<title>Clause</title>
|
2198
|
+
<p id='_'>
|
2199
|
+
<eref bibitemid='express-schema_A' citeas="">
|
2200
|
+
<localityStack>
|
2201
|
+
<locality type='anchor'><referenceFrom>A.B.C</referenceFrom></locality>
|
2202
|
+
</localityStack>
|
2203
|
+
C
|
2204
|
+
</eref>
|
2205
|
+
<eref bibitemid='express-schema_A' citeas=""/>
|
2206
|
+
</p>
|
2207
|
+
</clause>
|
2208
|
+
</sections>
|
2209
|
+
<bibliography>
|
2210
|
+
<references hidden='true' normative='false'>
|
2211
|
+
<bibitem id='express-schema_A' type='internal'>
|
2212
|
+
<docidentifier type='repository'>express-schema/A</docidentifier>
|
2213
|
+
</bibitem>
|
2214
|
+
</references>
|
2215
|
+
</bibliography>
|
2216
|
+
</standard-document>
|
2217
|
+
OUTPUT
|
2218
|
+
end
|
2219
|
+
|
2220
|
+
|
2112
2221
|
private
|
2113
2222
|
|
2114
2223
|
def mock_mathml_italicise(x)
|
@@ -127,7 +127,7 @@ EOS
|
|
127
127
|
<script>Latn</script>
|
128
128
|
<status>
|
129
129
|
<stage>90</stage>
|
130
|
-
<substage>
|
130
|
+
<substage>20</substage>
|
131
131
|
</status>
|
132
132
|
<copyright>
|
133
133
|
<from>2001</from>
|
@@ -168,7 +168,7 @@ EOS
|
|
168
168
|
<script>Latn</script>
|
169
169
|
<status>
|
170
170
|
<stage>90</stage>
|
171
|
-
<substage>
|
171
|
+
<substage>20</substage>
|
172
172
|
</status>
|
173
173
|
<copyright>
|
174
174
|
<from>2001</from>
|
@@ -211,7 +211,7 @@ EOS
|
|
211
211
|
<uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
212
212
|
<uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
213
213
|
<docidentifier type="ISO">ISO 123:2001</docidentifier>
|
214
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
214
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
|
215
215
|
<docnumber>123</docnumber>
|
216
216
|
<date type="published">
|
217
217
|
<on>2001-05</on>
|
@@ -236,7 +236,7 @@ EOS
|
|
236
236
|
</abstract>
|
237
237
|
<status>
|
238
238
|
<stage>90</stage>
|
239
|
-
<substage>
|
239
|
+
<substage>20</substage>
|
240
240
|
</status>
|
241
241
|
<copyright>
|
242
242
|
<from>2001</from>
|
@@ -74,6 +74,11 @@ RSpec.describe Asciidoctor::Standoc do
|
|
74
74
|
it "processes complex dl reference" do
|
75
75
|
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
76
76
|
#{ASCIIDOC_BLANK_HDR}
|
77
|
+
|
78
|
+
== Clause
|
79
|
+
|
80
|
+
<<ISOTC211>>
|
81
|
+
|
77
82
|
[bibliography]
|
78
83
|
== Normative References
|
79
84
|
|
@@ -288,7 +293,14 @@ formattedref::
|
|
288
293
|
INPUT
|
289
294
|
#{BLANK_HDR}
|
290
295
|
<sections>
|
291
|
-
|
296
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
297
|
+
<title>Clause</title>
|
298
|
+
<p id='_'>
|
299
|
+
<eref type='inline' bibitemid='ISOTC211' citeas='TC211'/>
|
300
|
+
</p>
|
301
|
+
</clause>
|
302
|
+
</sections>
|
303
|
+
<bibliography><references id="_" obligation="informative" normative="true">
|
292
304
|
<title>Normative references</title>
|
293
305
|
#{NORM_REF_BOILERPLATE}
|
294
306
|
<bibitem id="ISOTC211" type="standard">
|
@@ -264,7 +264,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
264
264
|
<script>Latn</script>
|
265
265
|
<status>
|
266
266
|
<stage>90</stage>
|
267
|
-
<substage>
|
267
|
+
<substage>20</substage>
|
268
268
|
</status>
|
269
269
|
<copyright>
|
270
270
|
<from>2001</from>
|
@@ -289,7 +289,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
289
289
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
290
290
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
291
291
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
292
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
292
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
|
293
293
|
<docnumber>123</docnumber>
|
294
294
|
<date type='published'>
|
295
295
|
<on>2001-05</on>
|
@@ -314,7 +314,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
314
314
|
</abstract>
|
315
315
|
<status>
|
316
316
|
<stage>90</stage>
|
317
|
-
<substage>
|
317
|
+
<substage>20</substage>
|
318
318
|
</status>
|
319
319
|
<copyright>
|
320
320
|
<from>2001</from>
|
@@ -372,7 +372,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
372
372
|
<script>Latn</script>
|
373
373
|
<status>
|
374
374
|
<stage>90</stage>
|
375
|
-
<substage>
|
375
|
+
<substage>20</substage>
|
376
376
|
</status>
|
377
377
|
<copyright>
|
378
378
|
<from>2001</from>
|
@@ -397,7 +397,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
397
397
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
398
398
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
399
399
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
400
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
400
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
|
401
401
|
<docnumber>123</docnumber>
|
402
402
|
<date type='published'>
|
403
403
|
<on>2001-05</on>
|
@@ -422,7 +422,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
422
422
|
</abstract>
|
423
423
|
<status>
|
424
424
|
<stage>90</stage>
|
425
|
-
<substage>
|
425
|
+
<substage>20</substage>
|
426
426
|
</status>
|
427
427
|
<copyright>
|
428
428
|
<from>2001</from>
|
@@ -517,7 +517,7 @@ compris les éventuels amendements).
|
|
517
517
|
<script>Latn</script>
|
518
518
|
<status>
|
519
519
|
<stage>90</stage>
|
520
|
-
<substage>
|
520
|
+
<substage>20</substage>
|
521
521
|
</status>
|
522
522
|
<copyright>
|
523
523
|
<from>2001</from>
|
@@ -542,7 +542,7 @@ compris les éventuels amendements).
|
|
542
542
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
543
543
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
544
544
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
545
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
545
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:fr</docidentifier>
|
546
546
|
<docnumber>123</docnumber>
|
547
547
|
<date type='published'>
|
548
548
|
<on>2001-05</on>
|
@@ -570,7 +570,7 @@ compris les éventuels amendements).
|
|
570
570
|
</abstract>
|
571
571
|
<status>
|
572
572
|
<stage>90</stage>
|
573
|
-
<substage>
|
573
|
+
<substage>20</substage>
|
574
574
|
</status>
|
575
575
|
<copyright>
|
576
576
|
<from>2001</from>
|
@@ -629,7 +629,7 @@ compris les éventuels amendements).
|
|
629
629
|
<script>Latn</script>
|
630
630
|
<status>
|
631
631
|
<stage>90</stage>
|
632
|
-
<substage>
|
632
|
+
<substage>20</substage>
|
633
633
|
</status>
|
634
634
|
<copyright>
|
635
635
|
<from>2001</from>
|
@@ -654,7 +654,7 @@ compris les éventuels amendements).
|
|
654
654
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
655
655
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
656
656
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
657
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
657
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:fr</docidentifier>
|
658
658
|
<docnumber>123</docnumber>
|
659
659
|
<date type='published'>
|
660
660
|
<on>2001-05</on>
|
@@ -682,7 +682,7 @@ compris les éventuels amendements).
|
|
682
682
|
</abstract>
|
683
683
|
<status>
|
684
684
|
<stage>90</stage>
|
685
|
-
<substage>
|
685
|
+
<substage>20</substage>
|
686
686
|
</status>
|
687
687
|
<copyright>
|
688
688
|
<from>2001</from>
|