metanorma-bipm 2.2.14 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isodoc/bipm/base_convert.rb +16 -15
- data/lib/isodoc/bipm/bipm.brochure.xsl +100 -58
- data/lib/isodoc/bipm/bipm.guide.xsl +100 -58
- data/lib/isodoc/bipm/bipm.mise-en-pratique.xsl +100 -58
- data/lib/isodoc/bipm/bipm.rapport.xsl +100 -58
- data/lib/isodoc/bipm/doccontrol.rb +4 -4
- data/lib/isodoc/bipm/html/htmlstyle.css +6 -6
- data/lib/isodoc/bipm/html/htmlstyle.scss +6 -6
- data/lib/isodoc/bipm/html_convert.rb +3 -9
- data/lib/isodoc/bipm/init.rb +5 -2
- data/lib/isodoc/bipm/jcgm.standard.xsl +120 -47
- data/lib/isodoc/bipm/metadata.rb +4 -4
- data/lib/isodoc/bipm/presentation_blocks.rb +41 -0
- data/lib/isodoc/bipm/presentation_xml_convert.rb +15 -38
- data/lib/isodoc/bipm/xref.rb +56 -57
- data/lib/metanorma/bipm/front.rb +2 -2
- data/lib/metanorma/bipm/isodoc.rng +29 -4
- data/lib/metanorma/bipm/version.rb +1 -1
- data/metanorma-bipm.gemspec +2 -2
- metadata +7 -6
data/lib/isodoc/bipm/xref.rb
CHANGED
@@ -4,14 +4,16 @@ module IsoDoc
|
|
4
4
|
end
|
5
5
|
|
6
6
|
class Xref < IsoDoc::Xref
|
7
|
+
attr_accessor :jcgm
|
8
|
+
|
7
9
|
def initialize(lang, script, klass, i18n, options = {})
|
8
10
|
@iso = IsoDoc::Iso::Xref.new(lang, script, klass, i18n, options)
|
9
11
|
super
|
10
12
|
end
|
11
13
|
|
12
14
|
def parse(docxml)
|
13
|
-
@jcgm = docxml
|
14
|
-
|
15
|
+
@jcgm = docxml.at(ns("//bibdata/ext/editorialgroup/committee/" \
|
16
|
+
"@acronym"))&.value == "JCGM"
|
15
17
|
@annexlbl =
|
16
18
|
if @jcgm then @labels["iso_annex"]
|
17
19
|
elsif docxml.at(ns("//bibdata/ext/structuredidentifier/appendix"))
|
@@ -31,41 +33,40 @@ module IsoDoc
|
|
31
33
|
@anchors[ref["id"]][:xref] = wrap_brackets(@anchors[ref["id"]][:xref])
|
32
34
|
end
|
33
35
|
|
34
|
-
def clause_names(docxml, sect_num)
|
35
|
-
if @jcgm then clause_names_jcgm(docxml, sect_num)
|
36
|
-
else clause_names_bipm(docxml, sect_num)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def clause_names_jcgm(docxml, sect_num)
|
41
|
-
docxml.xpath(ns("//clause[parent::sections][not(@type = 'scope')]"\
|
42
|
-
"[not(descendant::terms)]")).each do |c|
|
43
|
-
section_names(c, sect_num, 1)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
36
|
UNNUM = "@unnumbered = 'true'".freeze
|
48
37
|
|
49
|
-
def
|
38
|
+
def clause_order_main(docxml)
|
39
|
+
@jcgm and return @iso.clause_order_main(docxml)
|
40
|
+
[{ path: "//sections/clause[not(#{UNNUM})] | " \
|
41
|
+
"//sections/terms[not(#{UNNUM})] | " \
|
42
|
+
"//sections/definitions[not(#{UNNUM})] | " \
|
43
|
+
"//sections/references[not(#{UNNUM})]", multi: true },
|
44
|
+
{ path: "//sections/clause[#{UNNUM}] | " \
|
45
|
+
"//sections/terms[#{UNNUM}] | " \
|
46
|
+
"//sections/definitions[#{UNNUM}] | " \
|
47
|
+
"//sections/references[#{UNNUM}]", multi: true }]
|
48
|
+
end
|
49
|
+
|
50
|
+
def main_anchor_names(xml)
|
51
|
+
@jcgm and return super
|
52
|
+
t = clause_order_main(xml)
|
50
53
|
n = Counter.new
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
"//sections/definitions[#{UNNUM}]"))
|
58
|
-
.each { |c| unnumbered_section_names(c, 1) }
|
54
|
+
t.each_with_index do |a, i|
|
55
|
+
xml.xpath(ns(a[:path])).each do |c|
|
56
|
+
i.zero? ? section_names(c, n, 1) : unnumbered_section_names(c, 1)
|
57
|
+
a[:multi] or break
|
58
|
+
end
|
59
|
+
end
|
59
60
|
end
|
60
61
|
|
61
62
|
NUMBERED_SUBCLAUSES =
|
62
|
-
"./clause[not(#{UNNUM})] | ./references[not(#{UNNUM})] | "\
|
63
|
-
"./term[not(#{UNNUM})] | ./terms[not(#{UNNUM})] | "\
|
63
|
+
"./clause[not(#{UNNUM})] | ./references[not(#{UNNUM})] | " \
|
64
|
+
"./term[not(#{UNNUM})] | ./terms[not(#{UNNUM})] | " \
|
64
65
|
"./definitions[not(#{UNNUM})]".freeze
|
65
66
|
|
66
67
|
UNNUMBERED_SUBCLAUSES =
|
67
|
-
"./clause[#{UNNUM}] | ./references[#{UNNUM}] | "\
|
68
|
-
"./term[#{UNNUM}] | ./terms[#{UNNUM}] | "\
|
68
|
+
"./clause[#{UNNUM}] | ./references[#{UNNUM}] | " \
|
69
|
+
"./term[#{UNNUM}] | ./terms[#{UNNUM}] | " \
|
69
70
|
"./definitions[#{UNNUM}]".freeze
|
70
71
|
|
71
72
|
def section_name_anchors(clause, num, lvl)
|
@@ -76,8 +77,7 @@ module IsoDoc
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def section_names(clause, num, lvl)
|
79
|
-
|
80
|
-
|
80
|
+
clause.nil? and return num
|
81
81
|
num.increment(clause)
|
82
82
|
@anchors[clause["id"]] = section_name_anchors(clause, num, lvl)
|
83
83
|
i = Counter.new
|
@@ -92,9 +92,8 @@ module IsoDoc
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def unnumbered_section_names(clause, lvl)
|
95
|
-
|
96
|
-
|
97
|
-
lbl = clause&.at(ns("./title"))&.text || "[#{clause['id']}]"
|
95
|
+
clause.nil? and return num
|
96
|
+
lbl = clause.at(ns("./title"))&.text || "[#{clause['id']}]"
|
98
97
|
@anchors[clause["id"]] = { label: lbl, xref: l10n(%{"#{lbl}"}),
|
99
98
|
level: lvl, type: "clause" }
|
100
99
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
@@ -122,7 +121,7 @@ module IsoDoc
|
|
122
121
|
end
|
123
122
|
|
124
123
|
def unnumbered_section_names1(clause, level)
|
125
|
-
lbl = clause
|
124
|
+
lbl = clause.at(ns("./title"))&.text || "[#{clause['id']}]"
|
126
125
|
@anchors[clause["id"]] =
|
127
126
|
{ label: lbl, xref: l10n(%{"#{lbl}"}), level: level, type: "clause" }
|
128
127
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
@@ -130,16 +129,22 @@ module IsoDoc
|
|
130
129
|
end
|
131
130
|
end
|
132
131
|
|
133
|
-
def
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
132
|
+
def clause_order_annex(_docxml)
|
133
|
+
[{ path: "//annex[not(#{UNNUM})]", multi: true },
|
134
|
+
{ path: "//annex[#{UNNUM}]", multi: true }]
|
135
|
+
end
|
136
|
+
|
137
|
+
def annex_anchor_names(docxml)
|
138
|
+
n = @jcgm ? Counter.new("@", skip_i: true) : Counter.new(0)
|
139
|
+
clause_order_annex(docxml).each_with_index do |a, i|
|
140
|
+
docxml.xpath(ns(a[:path])).each do |c|
|
141
|
+
if i.zero?
|
142
|
+
n.increment(c)
|
143
|
+
annex_names(c, n.print)
|
144
|
+
else unnumbered_annex_names(c) end
|
145
|
+
a[:multi] or break
|
146
|
+
end
|
139
147
|
end
|
140
|
-
docxml.xpath(ns("//annex[#{UNNUM}]"))
|
141
|
-
.each { |c| unnumbered_annex_names(c) }
|
142
|
-
docxml.xpath(ns("//indexsect")).each { |b| preface_names(b) }
|
143
148
|
end
|
144
149
|
|
145
150
|
def annex_name_anchors(clause, num)
|
@@ -171,7 +176,7 @@ module IsoDoc
|
|
171
176
|
end
|
172
177
|
|
173
178
|
def unnumbered_annex_names(clause)
|
174
|
-
lbl = clause
|
179
|
+
lbl = clause.at(ns("./title"))&.text || "[#{clause['id']}]"
|
175
180
|
@anchors[clause["id"]] = unnumbered_annex_anchors(lbl)
|
176
181
|
if @klass.single_term_clause?(clause)
|
177
182
|
annex_names1(clause.at(ns("./references | ./terms | ./definitions")),
|
@@ -214,9 +219,7 @@ module IsoDoc
|
|
214
219
|
|
215
220
|
def sequential_formula_names(clause)
|
216
221
|
c = Counter.new
|
217
|
-
clause.xpath(ns(".//formula")).each do |t|
|
218
|
-
next if t["id"].nil? || t["id"].empty?
|
219
|
-
|
222
|
+
clause.xpath(ns(".//formula")).noblank.each do |t|
|
220
223
|
@anchors[t["id"]] = anchor_struct(
|
221
224
|
c.increment(t).print, nil,
|
222
225
|
t["inequality"] ? @labels["inequality"] : @labels["formula"],
|
@@ -234,19 +237,15 @@ module IsoDoc
|
|
234
237
|
end
|
235
238
|
|
236
239
|
def sequential_figure_names(clause)
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
else super
|
241
|
-
end
|
240
|
+
@jcgm or return super
|
241
|
+
@iso.sequential_figure_names(clause)
|
242
|
+
@anchors.merge!(@iso.get)
|
242
243
|
end
|
243
244
|
|
244
245
|
def hierarchical_figure_names(clause, num)
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
else super
|
249
|
-
end
|
246
|
+
@jcgm or return super
|
247
|
+
@iso.hierarchical_figure_names(clause, num)
|
248
|
+
@anchors.merge!(@iso.get)
|
250
249
|
end
|
251
250
|
end
|
252
251
|
end
|
data/lib/metanorma/bipm/front.rb
CHANGED
@@ -91,7 +91,7 @@ module Metanorma
|
|
91
91
|
def title(node, xml)
|
92
92
|
["en", "fr"].each do |lang|
|
93
93
|
at = { language: lang, format: "text/plain" }
|
94
|
-
xml.title **attr_code(at.merge(type: "main")) do |t1|
|
94
|
+
xml.title **attr_code(at.merge(type: "title-main")) do |t1|
|
95
95
|
t1 << Metanorma::Utils::asciidoc_sub(node.attr("title-#{lang}"))
|
96
96
|
end
|
97
97
|
%w(cover appendix annex part subpart provenance).each do |w|
|
@@ -104,7 +104,7 @@ module Metanorma
|
|
104
104
|
at = { language: lang, format: "text/plain" }
|
105
105
|
return unless title = node.attr("title-#{type}-#{lang}")
|
106
106
|
|
107
|
-
xml.title **attr_code(at.merge(type: type)) do |t1|
|
107
|
+
xml.title **attr_code(at.merge(type: "title-#{type}")) do |t1|
|
108
108
|
t1 << Metanorma::Utils::asciidoc_sub(title)
|
109
109
|
end
|
110
110
|
end
|
@@ -17,7 +17,7 @@
|
|
17
17
|
these elements; we just want one namespace for any child grammars
|
18
18
|
of this.
|
19
19
|
-->
|
20
|
-
<!-- VERSION v1.2.
|
20
|
+
<!-- VERSION v1.2.4 -->
|
21
21
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
22
22
|
<include href="reqt.rng"/>
|
23
23
|
<include href="basicdoc.rng">
|
@@ -192,9 +192,11 @@
|
|
192
192
|
</attribute>
|
193
193
|
</optional>
|
194
194
|
<attribute name="citeas"/>
|
195
|
-
<
|
196
|
-
<
|
197
|
-
|
195
|
+
<optional>
|
196
|
+
<attribute name="type">
|
197
|
+
<ref name="ReferenceFormat"/>
|
198
|
+
</attribute>
|
199
|
+
</optional>
|
198
200
|
<optional>
|
199
201
|
<attribute name="alt"/>
|
200
202
|
</optional>
|
@@ -836,6 +838,26 @@
|
|
836
838
|
<ref name="paragraph"/>
|
837
839
|
</element>
|
838
840
|
</define>
|
841
|
+
<define name="stem">
|
842
|
+
<element name="stem">
|
843
|
+
<attribute name="type">
|
844
|
+
<choice>
|
845
|
+
<value>MathML</value>
|
846
|
+
<value>AsciiMath</value>
|
847
|
+
<value>LatexMath</value>
|
848
|
+
</choice>
|
849
|
+
</attribute>
|
850
|
+
<attribute name="block">
|
851
|
+
<data type="boolean"/>
|
852
|
+
</attribute>
|
853
|
+
<oneOrMore>
|
854
|
+
<choice>
|
855
|
+
<text/>
|
856
|
+
<ref name="AnyElement"/>
|
857
|
+
</choice>
|
858
|
+
</oneOrMore>
|
859
|
+
</element>
|
860
|
+
</define>
|
839
861
|
<define name="em">
|
840
862
|
<element name="em">
|
841
863
|
<zeroOrMore>
|
@@ -2046,6 +2068,9 @@
|
|
2046
2068
|
</define>
|
2047
2069
|
<define name="termdefinition">
|
2048
2070
|
<element name="definition">
|
2071
|
+
<optional>
|
2072
|
+
<attribute name="type"/>
|
2073
|
+
</optional>
|
2049
2074
|
<choice>
|
2050
2075
|
<ref name="verbaldefinition"/>
|
2051
2076
|
<ref name="nonverbalrep"/>
|
data/metanorma-bipm.gemspec
CHANGED
@@ -27,8 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
29
29
|
|
30
|
-
spec.add_dependency "metanorma-generic", "~> 2.
|
31
|
-
spec.add_dependency "metanorma-iso", "~> 2.
|
30
|
+
spec.add_dependency "metanorma-generic", "~> 2.5.1"
|
31
|
+
spec.add_dependency "metanorma-iso", "~> 2.5.1"
|
32
32
|
|
33
33
|
spec.add_development_dependency "debug"
|
34
34
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-bipm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-generic
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.5.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.5.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: metanorma-iso
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: 2.5.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: 2.5.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: debug
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -258,6 +258,7 @@ files:
|
|
258
258
|
- lib/isodoc/bipm/jcgm.standard.xsl
|
259
259
|
- lib/isodoc/bipm/metadata.rb
|
260
260
|
- lib/isodoc/bipm/pdf_convert.rb
|
261
|
+
- lib/isodoc/bipm/presentation_blocks.rb
|
261
262
|
- lib/isodoc/bipm/presentation_xml_convert.rb
|
262
263
|
- lib/isodoc/bipm/xref.rb
|
263
264
|
- lib/metanorma-bipm.rb
|