metanorma-standoc 2.1.4 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/metanorma/standoc/cleanup.rb +3 -1
- data/lib/metanorma/standoc/cleanup_block.rb +41 -1
- data/lib/metanorma/standoc/cleanup_terms.rb +6 -2
- data/lib/metanorma/standoc/isodoc.rng +10 -0
- data/lib/metanorma/standoc/ref_utility.rb +4 -5
- data/lib/metanorma/standoc/section.rb +2 -0
- data/lib/metanorma/standoc/term_lookup_cleanup.rb +1 -1
- data/lib/metanorma/standoc/utils.rb +1 -1
- data/lib/metanorma/standoc/version.rb +1 -1
- data/spec/metanorma/blocks_spec.rb +50 -0
- data/spec/metanorma/cleanup_blocks_spec.rb +83 -0
- data/spec/metanorma/isobib_cache_spec.rb +6 -4
- data/spec/metanorma/macros_spec.rb +4 -2
- data/spec/metanorma/refs_spec.rb +261 -230
- data/spec/metanorma/validate_spec.rb +60 -1
- data/spec/vcr_cassettes/isobib_get_123_2.yml +295 -0
- data/spec/vcr_cassettes/std-link.yml +13 -71
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9487b5701cc86946c27e560e244cc4f84fceb61b0a93dd271068875654eb49a0
|
4
|
+
data.tar.gz: c647cf6fb530aba3bc96c9087e7a9d49408ce239a6c6aa3a4a46a0e8cf1a5763
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8356539be6d28f5dc6d4d148cfcabb8ed7dbc033392544d382d36e1e392e33da6b29a64b535f6c24cdab85a4d17d1dc5698367f0edff8f45eb02b1f8ed97330
|
7
|
+
data.tar.gz: 13c49550edea0d6169fef67357a5030e146cdf62fec3cb41900db7490d95c09f9dbb1c4f4b55bea4836651ba11fcaf0714b20f37fc3a96a48dd31596cf564549
|
@@ -28,6 +28,8 @@ module Metanorma
|
|
28
28
|
passthrough_cleanup(xmldoc)
|
29
29
|
sections_cleanup(xmldoc)
|
30
30
|
obligations_cleanup(xmldoc)
|
31
|
+
para_index_cleanup(xmldoc)
|
32
|
+
block_index_cleanup(xmldoc)
|
31
33
|
table_cleanup(xmldoc)
|
32
34
|
formula_cleanup(xmldoc)
|
33
35
|
form_cleanup(xmldoc)
|
@@ -51,7 +53,7 @@ module Metanorma
|
|
51
53
|
termdef_cleanup(xmldoc)
|
52
54
|
RelatonIev::iev_cleanup(xmldoc, @bibdb)
|
53
55
|
element_name_cleanup(xmldoc)
|
54
|
-
|
56
|
+
term_index_cleanup(xmldoc)
|
55
57
|
bpart_cleanup(xmldoc)
|
56
58
|
quotesource_cleanup(xmldoc)
|
57
59
|
callout_cleanup(xmldoc)
|
@@ -66,7 +66,7 @@ module Metanorma
|
|
66
66
|
def subfigure_cleanup(xmldoc)
|
67
67
|
xmldoc.xpath("//example[figure]").each do |e|
|
68
68
|
next unless e.elements.map(&:name).reject do |m|
|
69
|
-
%w(name figure).include? m
|
69
|
+
%w(name figure index).include? m
|
70
70
|
end.empty?
|
71
71
|
|
72
72
|
e.name = "figure"
|
@@ -178,6 +178,46 @@ module Metanorma
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
end
|
181
|
+
|
182
|
+
def block_index_cleanup(xmldoc)
|
183
|
+
xmldoc.xpath("//quote | //td | //th | //formula | //li | //dt | "\
|
184
|
+
"//dd | //example | //note | //figure | //sourcecode | "\
|
185
|
+
"//admonition | //termnote | //termexample | //form | "\
|
186
|
+
"//requirement | //recommendation | //permission | "\
|
187
|
+
"//imagemap | //svgmap").each do |b|
|
188
|
+
b.xpath("./p[indexterm]").each do |p|
|
189
|
+
indexterm_para?(p) or next
|
190
|
+
p.replace(p.children)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
def indexterm_para?(para)
|
196
|
+
p = para.dup
|
197
|
+
p.xpath("./index").each(&:remove)
|
198
|
+
p.text.strip.empty?
|
199
|
+
end
|
200
|
+
|
201
|
+
def include_indexterm?(elem)
|
202
|
+
return false if elem.nil?
|
203
|
+
|
204
|
+
!%w(image literal sourcecode).include?(elem.name)
|
205
|
+
end
|
206
|
+
|
207
|
+
def para_index_cleanup(xmldoc)
|
208
|
+
xmldoc.xpath("//p[index]").select { |p| indexterm_para?(p) }
|
209
|
+
.each do |p|
|
210
|
+
para_index_cleanup1(p, p.previous_element, p.next_element)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
def para_index_cleanup1(para, prev, foll)
|
215
|
+
if include_indexterm?(prev)
|
216
|
+
prev << para.remove.children
|
217
|
+
elsif include_indexterm?(foll) && !foll.children.empty?
|
218
|
+
foll.children.first.previous = para.remove.children
|
219
|
+
end
|
220
|
+
end
|
181
221
|
end
|
182
222
|
end
|
183
223
|
end
|
@@ -100,9 +100,13 @@ module Metanorma
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
+
def termlookup_cleanup(xmldoc)
|
104
|
+
Metanorma::Standoc::TermLookupCleanup.new(xmldoc, @log).call
|
105
|
+
end
|
106
|
+
|
103
107
|
def termdef_cleanup(xmldoc)
|
104
108
|
termdef_unnest_cleanup(xmldoc)
|
105
|
-
|
109
|
+
termlookup_cleanup(xmldoc)
|
106
110
|
term_nonverbal_designations(xmldoc)
|
107
111
|
term_dl_to_metadata(xmldoc)
|
108
112
|
term_termsource_to_designation(xmldoc)
|
@@ -117,7 +121,7 @@ module Metanorma
|
|
117
121
|
termdocsource_cleanup(xmldoc)
|
118
122
|
end
|
119
123
|
|
120
|
-
def
|
124
|
+
def term_index_cleanup(xmldoc)
|
121
125
|
return unless @index_terms
|
122
126
|
|
123
127
|
xmldoc.xpath("//preferred").each do |p|
|
@@ -2504,6 +2504,16 @@
|
|
2504
2504
|
<text/>
|
2505
2505
|
</element>
|
2506
2506
|
</optional>
|
2507
|
+
<optional>
|
2508
|
+
<element name="amendment">
|
2509
|
+
<text/>
|
2510
|
+
</element>
|
2511
|
+
</optional>
|
2512
|
+
<optional>
|
2513
|
+
<element name="corrigendum">
|
2514
|
+
<text/>
|
2515
|
+
</element>
|
2516
|
+
</optional>
|
2507
2517
|
<optional>
|
2508
2518
|
<element name="language">
|
2509
2519
|
<text/>
|
@@ -104,9 +104,9 @@ module Metanorma
|
|
104
104
|
ret = { id: code }
|
105
105
|
return ret if code.blank?
|
106
106
|
|
107
|
-
|
108
|
-
|
109
|
-
analyse_ref_dropid(
|
107
|
+
analyse_ref_numeric(
|
108
|
+
analyse_ref_repo_path(
|
109
|
+
analyse_ref_dropid(analyse_ref_hidden(analyse_ref_nofetch(ret))),
|
110
110
|
),
|
111
111
|
)
|
112
112
|
end
|
@@ -121,8 +121,7 @@ module Metanorma
|
|
121
121
|
end
|
122
122
|
|
123
123
|
def ref_attributes(match)
|
124
|
-
|
125
|
-
code = analyse_ref_code(match[:code])
|
124
|
+
code = analyse_ref_code(match[:code])
|
126
125
|
|
127
126
|
{ id: match[:anchor], type: "standard",
|
128
127
|
suppress_identifier: code[:dropid] || nil }
|
@@ -60,7 +60,7 @@ module Metanorma
|
|
60
60
|
"[not(ancestor::boilerplate)]".freeze
|
61
61
|
|
62
62
|
def isodoc(lang, script, i18nyaml = nil)
|
63
|
-
conv =
|
63
|
+
conv = presentation_xml_converter(EmptyAttr.new)
|
64
64
|
i18n = conv.i18n_init(lang, script, i18nyaml)
|
65
65
|
conv.metadata_init(lang, script, i18n)
|
66
66
|
conv
|
@@ -1070,6 +1070,56 @@ RSpec.describe Metanorma::Standoc do
|
|
1070
1070
|
.to be_equivalent_to xmlpp(output)
|
1071
1071
|
end
|
1072
1072
|
|
1073
|
+
it "ignores index terms when processing figures marked up as examples" do
|
1074
|
+
input = <<~INPUT
|
1075
|
+
#{ASCIIDOC_BLANK_HDR}
|
1076
|
+
|
1077
|
+
====
|
1078
|
+
image::spec/examples/rice_images/rice_image3_1.png[]
|
1079
|
+
====
|
1080
|
+
|
1081
|
+
====
|
1082
|
+
((indexterm))
|
1083
|
+
|
1084
|
+
image::spec/examples/rice_images/rice_image3_3.png[]
|
1085
|
+
====
|
1086
|
+
|
1087
|
+
====
|
1088
|
+
(((indexterm2)))
|
1089
|
+
|
1090
|
+
image::spec/examples/rice_images/rice_image3_2.png[]
|
1091
|
+
====
|
1092
|
+
INPUT
|
1093
|
+
output = <<~OUTPUT
|
1094
|
+
#{BLANK_HDR}
|
1095
|
+
<sections>
|
1096
|
+
<figure id='_'>
|
1097
|
+
<image src='spec/examples/rice_images/rice_image3_1.png' id='_' mimetype='image/png' height='auto' width='auto'/>
|
1098
|
+
</figure>
|
1099
|
+
<example id='_'>
|
1100
|
+
<p id='_'>
|
1101
|
+
indexterm
|
1102
|
+
<index>
|
1103
|
+
<primary>indexterm</primary>
|
1104
|
+
</index>
|
1105
|
+
</p>
|
1106
|
+
<figure id='_'>
|
1107
|
+
<image src='spec/examples/rice_images/rice_image3_3.png' id='_' mimetype='image/png' height='auto' width='auto'/>
|
1108
|
+
</figure>
|
1109
|
+
</example>
|
1110
|
+
<figure id='_'>
|
1111
|
+
<index>
|
1112
|
+
<primary>indexterm2</primary>
|
1113
|
+
</index>
|
1114
|
+
<image src='spec/examples/rice_images/rice_image3_2.png' id='_' mimetype='image/png' height='auto' width='auto'/>
|
1115
|
+
</figure>
|
1116
|
+
</sections>
|
1117
|
+
</standard-document>
|
1118
|
+
OUTPUT
|
1119
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1120
|
+
.to be_equivalent_to xmlpp(output)
|
1121
|
+
end
|
1122
|
+
|
1073
1123
|
it "processes images" do
|
1074
1124
|
input = <<~INPUT
|
1075
1125
|
#{ASCIIDOC_BLANK_HDR}
|
@@ -1184,4 +1184,87 @@ RSpec.describe Metanorma::Standoc do
|
|
1184
1184
|
.gsub(%r{<style.*?</style>}m, "<style/>")))
|
1185
1185
|
.to be_equivalent_to xmlpp(output)
|
1186
1186
|
end
|
1187
|
+
|
1188
|
+
it "removes paras with indexterms" do
|
1189
|
+
input = <<~INPUT
|
1190
|
+
#{ASCIIDOC_BLANK_HDR}
|
1191
|
+
|
1192
|
+
== Clause 1
|
1193
|
+
|
1194
|
+
Paragraph
|
1195
|
+
|
1196
|
+
(((index)))
|
1197
|
+
|
1198
|
+
[NOTE]
|
1199
|
+
--
|
1200
|
+
|
1201
|
+
(((index)))
|
1202
|
+
|
1203
|
+
Note
|
1204
|
+
--
|
1205
|
+
|
1206
|
+
[NOTE]
|
1207
|
+
--
|
1208
|
+
|
1209
|
+
(((index)))
|
1210
|
+
|
1211
|
+
--
|
1212
|
+
|
1213
|
+
== Clause 2
|
1214
|
+
|
1215
|
+
Paragraph
|
1216
|
+
|
1217
|
+
((index))
|
1218
|
+
|
1219
|
+
INPUT
|
1220
|
+
|
1221
|
+
output = <<~OUTPUT
|
1222
|
+
#{BLANK_HDR}
|
1223
|
+
<sections>
|
1224
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
1225
|
+
<title>Clause 1</title>
|
1226
|
+
<p id='_'>
|
1227
|
+
Paragraph
|
1228
|
+
<index>
|
1229
|
+
<primary>index</primary>
|
1230
|
+
</index>
|
1231
|
+
</p>
|
1232
|
+
<note id='_'>
|
1233
|
+
<p id='_'>
|
1234
|
+
<index>
|
1235
|
+
<primary>index</primary>
|
1236
|
+
</index>
|
1237
|
+
Note
|
1238
|
+
</p>
|
1239
|
+
</note>
|
1240
|
+
<note id='_'>
|
1241
|
+
<p id='_'>
|
1242
|
+
<index>
|
1243
|
+
<primary>index</primary>
|
1244
|
+
</index>
|
1245
|
+
</p>
|
1246
|
+
</note>
|
1247
|
+
</clause>
|
1248
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
1249
|
+
<title>Clause 2</title>
|
1250
|
+
<p id='_'>Paragraph</p>
|
1251
|
+
<p id='_'>
|
1252
|
+
index
|
1253
|
+
<index>
|
1254
|
+
<primary>index</primary>
|
1255
|
+
</index>
|
1256
|
+
</p>
|
1257
|
+
</clause>
|
1258
|
+
</sections>
|
1259
|
+
</standard-document>
|
1260
|
+
OUTPUT
|
1261
|
+
xml = Nokogiri::XML(Asciidoctor.convert(input, *OPTIONS))
|
1262
|
+
xml.xpath("//*[local-name() = 'image']").each do |x|
|
1263
|
+
x.replace("<image/>")
|
1264
|
+
end
|
1265
|
+
expect(xmlpp(strip_guid(xml.to_xml)
|
1266
|
+
.gsub(%r{<style.*?</style>}m, "<style/>")))
|
1267
|
+
.to be_equivalent_to xmlpp(output)
|
1268
|
+
end
|
1269
|
+
|
1187
1270
|
end
|
@@ -50,7 +50,7 @@ ISO_124_DATED = <<~XML.freeze
|
|
50
50
|
<uri type="obp">https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
|
51
51
|
<uri type="rss">https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
|
52
52
|
<docidentifier type="ISO" primary="true">ISO 124:2014</docidentifier>
|
53
|
-
<docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7
|
53
|
+
<docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7</docidentifier>
|
54
54
|
<docnumber>124</docnumber>
|
55
55
|
<date type="published">
|
56
56
|
<on>2014-03</on>
|
@@ -82,6 +82,7 @@ ISO_124_DATED = <<~XML.freeze
|
|
82
82
|
<relation type="obsoletes">
|
83
83
|
<bibitem type="standard">
|
84
84
|
<formattedref format="text/plain">ISO 124:2011</formattedref>
|
85
|
+
<docidentifier type='ISO' primary='true'>ISO 124:2011</docidentifier>
|
85
86
|
</bibitem>
|
86
87
|
</relation>
|
87
88
|
<place>Geneva</place>
|
@@ -95,7 +96,7 @@ ISO_124_DATED = <<~XML.freeze
|
|
95
96
|
<text>Latex and raw rubber</text>
|
96
97
|
</ics>
|
97
98
|
<structuredidentifier type="ISO">
|
98
|
-
<project-number
|
99
|
+
<project-number>ISO 124</project-number>
|
99
100
|
</structuredidentifier>
|
100
101
|
</ext>
|
101
102
|
</bibdata>
|
@@ -209,7 +210,7 @@ ISO_123_DATED = <<~XML.freeze
|
|
209
210
|
<uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
210
211
|
<uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
211
212
|
<docidentifier type="ISO" primary="true">ISO 123:2001</docidentifier>
|
212
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3
|
213
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3</docidentifier>
|
213
214
|
<docnumber>123</docnumber>
|
214
215
|
<date type="published">
|
215
216
|
<on>2001-05</on>
|
@@ -247,6 +248,7 @@ ISO_123_DATED = <<~XML.freeze
|
|
247
248
|
<relation type="obsoletes">
|
248
249
|
<bibitem type="standard">
|
249
250
|
<formattedref format="text/plain">ISO 123:1985</formattedref>
|
251
|
+
<docidentifier type='ISO' primary='true'>ISO 123:1985</docidentifier>
|
250
252
|
</bibitem>
|
251
253
|
</relation>
|
252
254
|
<place>Geneva</place>
|
@@ -260,7 +262,7 @@ ISO_123_DATED = <<~XML.freeze
|
|
260
262
|
<text>Latex and raw rubber</text>
|
261
263
|
</ics>
|
262
264
|
<structuredidentifier type="ISO">
|
263
|
-
<project-number
|
265
|
+
<project-number>ISO 123</project-number>
|
264
266
|
</structuredidentifier>
|
265
267
|
</ext>
|
266
268
|
</bibdata>
|
@@ -1706,7 +1706,7 @@ RSpec.describe Metanorma::Standoc do
|
|
1706
1706
|
<uri type='src'>https://www.iso.org/standard/3944.html</uri>
|
1707
1707
|
<uri type='rss'>https://www.iso.org/contents/data/standard/00/39/3944.detail.rss</uri>
|
1708
1708
|
<docidentifier type='ISO' primary='true'>ISO 131</docidentifier>
|
1709
|
-
<docidentifier type='URN'>urn:iso:std:iso:131:stage-95.99:ed-1
|
1709
|
+
<docidentifier type='URN'>urn:iso:std:iso:131:stage-95.99:ed-1</docidentifier>
|
1710
1710
|
<docnumber>131</docnumber>
|
1711
1711
|
<contributor>
|
1712
1712
|
<role type='publisher'/>
|
@@ -1734,6 +1734,7 @@ RSpec.describe Metanorma::Standoc do
|
|
1734
1734
|
<relation type='obsoletes'>
|
1735
1735
|
<bibitem type='standard'>
|
1736
1736
|
<formattedref format='text/plain'>ISO/R 357:1963</formattedref>
|
1737
|
+
<docidentifier type='ISO' primary='true'>ISO/R 357:1963</docidentifier>
|
1737
1738
|
</bibitem>
|
1738
1739
|
</relation>
|
1739
1740
|
<relation type='instance'>
|
@@ -1748,7 +1749,7 @@ RSpec.describe Metanorma::Standoc do
|
|
1748
1749
|
<uri type='src'>https://www.iso.org/standard/3944.html</uri>
|
1749
1750
|
<uri type='rss'>https://www.iso.org/contents/data/standard/00/39/3944.detail.rss</uri>
|
1750
1751
|
<docidentifier type='ISO' primary='true'>ISO 131:1979</docidentifier>
|
1751
|
-
<docidentifier type='URN'>urn:iso:std:iso:131:stage-95.99:ed-1
|
1752
|
+
<docidentifier type='URN'>urn:iso:std:iso:131:stage-95.99:ed-1</docidentifier>
|
1752
1753
|
<docnumber>131</docnumber>
|
1753
1754
|
<date type='published'>
|
1754
1755
|
<on>1979-11</on>
|
@@ -1779,6 +1780,7 @@ RSpec.describe Metanorma::Standoc do
|
|
1779
1780
|
<relation type='obsoletes'>
|
1780
1781
|
<bibitem type='standard'>
|
1781
1782
|
<formattedref format='text/plain'>ISO/R 357:1963</formattedref>
|
1783
|
+
<docidentifier type='ISO' primary='true'>ISO/R 357:1963</docidentifier>
|
1782
1784
|
</bibitem>
|
1783
1785
|
</relation>
|
1784
1786
|
<place>Geneva</place>
|