metanorma-iec 2.5.6 → 2.5.8
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/isodoc/iec/base_convert.rb +11 -16
- data/lib/isodoc/iec/iec.international-standard.xsl +691 -175
- data/lib/isodoc/iec/init.rb +2 -3
- data/lib/isodoc/iec/metadata.rb +12 -12
- data/lib/isodoc/iec/presentation_terms.rb +33 -13
- data/lib/isodoc/iec/presentation_xml_convert.rb +14 -11
- data/lib/isodoc/iec/word_convert.rb +3 -4
- data/lib/isodoc/iec/xref.rb +19 -6
- data/lib/metanorma/iec/biblio.rng +13 -1
- data/lib/metanorma/iec/front.rb +0 -1
- data/lib/metanorma/iec/isodoc.rng +6 -6
- data/lib/metanorma/iec/relaton-iec.rng +15 -32
- data/lib/metanorma/iec/version.rb +1 -1
- data/metanorma-iec.gemspec +1 -1
- metadata +4 -4
data/lib/isodoc/iec/init.rb
CHANGED
@@ -11,9 +11,8 @@ module IsoDoc
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def xref_init(lang, script, _klass, labels, options)
|
14
|
-
|
15
|
-
|
16
|
-
labels, options)
|
14
|
+
p = HtmlConvert.new(language: lang, script: script)
|
15
|
+
@xrefs = Xref.new(lang, script, p, labels, options)
|
17
16
|
end
|
18
17
|
|
19
18
|
def i18n_init(lang, script, locale, i18nyaml = nil)
|
data/lib/isodoc/iec/metadata.rb
CHANGED
@@ -20,25 +20,25 @@ module IsoDoc
|
|
20
20
|
set(:revdate, revdate&.text)
|
21
21
|
end
|
22
22
|
|
23
|
-
def doctype(
|
23
|
+
def doctype(xml, _out)
|
24
24
|
super
|
25
|
-
b =
|
26
|
-
b1 =
|
25
|
+
b = xml.at(ns("//bibdata/ext/doctype#{NOLANG}"))&.text
|
26
|
+
b1 = xml.at(ns("//bibdata/ext/doctype[@language = 'en']"))&.text || b
|
27
27
|
b1 and set(:doctype_en, status_print(b1))
|
28
|
-
b1 =
|
28
|
+
b1 = xml.at(ns("//bibdata/ext/doctype[@language = 'fr']"))&.text || b
|
29
29
|
b1 and set(:doctype_fr, status_print(b1))
|
30
|
-
docfunction(
|
31
|
-
dochorizontal(
|
30
|
+
docfunction(xml)
|
31
|
+
dochorizontal(xml)
|
32
32
|
end
|
33
33
|
|
34
|
-
def docfunction(
|
35
|
-
b =
|
34
|
+
def docfunction(xml)
|
35
|
+
b = xml.at(ns("//bibdata/ext/function#{NOLANG}"))&.text || return
|
36
36
|
b and set(:function, status_print(b))
|
37
|
-
b1 =
|
37
|
+
b1 = xml.at(ns("//bibdata/ext/function#{currlang}"))&.text || b
|
38
38
|
b1 and set(:function_display, status_print(b1))
|
39
|
-
b1 =
|
39
|
+
b1 = xml.at(ns("//bibdata/ext/function[@language = 'en']"))&.text || b
|
40
40
|
b1 and set(:function_en, status_print(b1))
|
41
|
-
b1 =
|
41
|
+
b1 = xml.at(ns("//bibdata/ext/function[@language = 'fr']"))&.text || b
|
42
42
|
b1 and set(:function_fr, status_print(b1))
|
43
43
|
end
|
44
44
|
|
@@ -54,7 +54,7 @@ module IsoDoc
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def unpublished(status)
|
57
|
-
status.to_i
|
57
|
+
status.to_i.positive? && status.to_i < 60
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -3,9 +3,13 @@ module IsoDoc
|
|
3
3
|
class PresentationXMLConvert < IsoDoc::Iso::PresentationXMLConvert
|
4
4
|
def termclause1(elem)
|
5
5
|
@is_iev or return clause1(elem)
|
6
|
-
@suppressheadingnumbers || elem["unnumbered"]
|
7
|
-
lbl = @xrefs.anchor(elem["id"], :label, true)
|
8
|
-
|
6
|
+
@suppressheadingnumbers || elem["unnumbered"] or
|
7
|
+
lbl = @xrefs.anchor(elem["id"], :label, true)
|
8
|
+
if lbl
|
9
|
+
prefix_name(elem, { caption: " " }, "#{lbl}#{clausedelim}", "title")
|
10
|
+
else
|
11
|
+
prefix_name(elem, {}, nil, "title")
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
def concept(docxml)
|
@@ -15,9 +19,9 @@ module IsoDoc
|
|
15
19
|
|
16
20
|
def concept_iev(docxml)
|
17
21
|
labels = @xrefs.get_anchors.each_with_object({}) do |(k, v), m|
|
18
|
-
m[v[:label]] = k
|
22
|
+
v[:label] and m[v[:label].gsub(%r{</?[^>]+>}, "")] = k
|
19
23
|
end
|
20
|
-
docpart = docxml
|
24
|
+
docpart = docxml.at(ns("//bibdata/ext/structuredidentifier/" \
|
21
25
|
"project-number/@part"))&.text or return
|
22
26
|
docxml.xpath(ns("//termref[@base = 'IEV']")).each do |t|
|
23
27
|
concept_iev1(t, docpart, labels)
|
@@ -38,15 +42,25 @@ module IsoDoc
|
|
38
42
|
merge_fr_into_en_term(docxml)
|
39
43
|
end
|
40
44
|
|
45
|
+
def termdomain(elem)
|
46
|
+
if @is_iev
|
47
|
+
d = elem.at(ns("./domain")) or return
|
48
|
+
d["hidden"] = true
|
49
|
+
else super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
41
53
|
def merge_fr_into_en_term(docxml)
|
42
54
|
@is_iev or return
|
43
55
|
docxml.xpath(ns("//term[@language = 'en'][@tag]")).each do |en|
|
44
56
|
fr = docxml.at(ns("//term[@language = 'fr'][@tag = '#{en['tag']}']"))
|
45
57
|
merge_fr_into_en_term1(en, fr) if fr
|
58
|
+
en.xpath(ns("./fmt-name | ./fmt-xref-label")).each(&:remove)
|
59
|
+
term1(en)
|
46
60
|
end
|
47
61
|
@xrefs.parse_inclusions(clauses: true).parse docxml
|
48
|
-
docxml.xpath(ns("//term/name")).each(&:remove)
|
49
|
-
term(docxml)
|
62
|
+
#docxml.xpath(ns("//term/fmt-name | //term/fmt-xref")).each(&:remove)
|
63
|
+
#term(docxml)
|
50
64
|
end
|
51
65
|
|
52
66
|
def merge_fr_into_en_term1(en_term, fr_term)
|
@@ -69,8 +83,7 @@ module IsoDoc
|
|
69
83
|
.each_with_object([]) do |d, m|
|
70
84
|
lg = d["language"]
|
71
85
|
d.delete("language")
|
72
|
-
|
73
|
-
|
86
|
+
lgs.include?(lg) and next
|
74
87
|
p = d.parent
|
75
88
|
designation_annotate(p, d.at(ns("./name")))
|
76
89
|
m << { lang: lg, script: Metanorma::Utils.default_script(lg),
|
@@ -119,13 +132,13 @@ module IsoDoc
|
|
119
132
|
|
120
133
|
def move_related(term)
|
121
134
|
defn = term.at(ns("./definition")) or return
|
122
|
-
term.xpath(ns("./related")).
|
135
|
+
term.xpath(ns("./related")).reverse_each do |r|
|
123
136
|
defn.next = r.remove
|
124
137
|
end
|
125
138
|
end
|
126
139
|
|
127
140
|
def related1(node)
|
128
|
-
lg = node
|
141
|
+
lg = node.at("./ancestor::xmlns:term/@language")&.text
|
129
142
|
@i18n = @i18n_lg[lg] if lg && @i18n_lg[lg]
|
130
143
|
p = node.at(ns("./preferred"))
|
131
144
|
ref = node.at(ns("./xref | ./eref | ./termref"))
|
@@ -166,19 +179,26 @@ module IsoDoc
|
|
166
179
|
|
167
180
|
def termexample1(elem)
|
168
181
|
lg = elem&.at("./ancestor::xmlns:term/@language")&.text
|
182
|
+
#require "debug"; binding.b
|
169
183
|
@i18n = @i18n_lg[lg] if lg && @i18n_lg[lg]
|
170
184
|
example1(elem)
|
171
185
|
@i18n = @i18n_lg["default"]
|
172
186
|
end
|
173
187
|
|
174
|
-
def
|
188
|
+
def termnote_label(elem)
|
175
189
|
lg = elem&.at("./ancestor::xmlns:term/@language")&.text
|
176
190
|
@i18n = @i18n_lg[lg] if lg && @i18n_lg[lg]
|
177
191
|
|
178
192
|
val = @xrefs.anchor(elem["id"], :value) || "???"
|
179
193
|
lbl = @i18n.termnote.gsub("%", val)
|
180
|
-
|
194
|
+
ret = @i18n.l10n lbl
|
181
195
|
@i18n = @i18n_lg["default"]
|
196
|
+
ret
|
197
|
+
end
|
198
|
+
|
199
|
+
def term1(elem)
|
200
|
+
#require 'debug'; binding.b
|
201
|
+
super
|
182
202
|
end
|
183
203
|
end
|
184
204
|
end
|
@@ -15,17 +15,15 @@ module IsoDoc
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def clause(docxml)
|
18
|
-
docxml.xpath(ns("//clause
|
19
|
-
"//
|
20
|
-
|
18
|
+
docxml.xpath(ns("//clause | //definitions | //references | //appendix | " \
|
19
|
+
"//introduction | //foreword | //preface/abstract | " \
|
20
|
+
"//acknowledgements | //colophon | //indexsect "))
|
21
21
|
.each do |f|
|
22
22
|
f.parent.name == "annex" &&
|
23
23
|
@xrefs.klass.single_term_clause?(f.parent) and next
|
24
24
|
clause1(f)
|
25
25
|
end
|
26
|
-
docxml.xpath(ns("//terms")).each
|
27
|
-
termclause1(f)
|
28
|
-
end
|
26
|
+
docxml.xpath(ns("//terms")).each { |f| termclause1(f) }
|
29
27
|
end
|
30
28
|
|
31
29
|
def clause1(elem)
|
@@ -65,10 +63,15 @@ module IsoDoc
|
|
65
63
|
<foreword id='_#{UUIDTools::UUID.random_create}'> </foreword>
|
66
64
|
CLAUSE
|
67
65
|
end
|
68
|
-
f
|
69
|
-
|
70
|
-
|
71
|
-
|
66
|
+
insert_foreword_boilerplate(f, b)
|
67
|
+
end
|
68
|
+
|
69
|
+
def insert_foreword_boilerplate(elem, boilerplate)
|
70
|
+
elem.children.empty? and elem.children = " "
|
71
|
+
ins = elem.at(ns("./title")) || elem.children.first.before(" ").previous
|
72
|
+
ins.next = <<~CLAUSE
|
73
|
+
<clause type='boilerplate_legal'>#{to_xml(boilerplate.children)}</clause>
|
74
|
+
CLAUSE
|
72
75
|
end
|
73
76
|
|
74
77
|
def insert_middle_title(docxml)
|
@@ -118,7 +121,7 @@ module IsoDoc
|
|
118
121
|
<p class='zzSTDTitle2'><strong>#{title2}</strong><p>
|
119
122
|
TITLE
|
120
123
|
ret += "<p class='zzSTDTitle1'> </p>"
|
121
|
-
s.
|
124
|
+
s.add_first_child ret
|
122
125
|
end
|
123
126
|
|
124
127
|
include Init
|
@@ -203,8 +203,7 @@ module IsoDoc
|
|
203
203
|
end
|
204
204
|
|
205
205
|
def annex_name(_annex, name, div)
|
206
|
-
|
207
|
-
|
206
|
+
name.nil? and return
|
208
207
|
div.h1 class: "Annex" do |t|
|
209
208
|
name.children.each { |c2| parse(c2, t) }
|
210
209
|
clause_parse_subtitle(name, t)
|
@@ -216,9 +215,9 @@ module IsoDoc
|
|
216
215
|
div.p **attr_code(class: "formula") do |_p|
|
217
216
|
insert_tab(div, 1)
|
218
217
|
parse(node.at(ns("./stem")), div)
|
219
|
-
if lbl = node&.at(ns("./name"))&.text
|
218
|
+
if lbl = node&.at(ns("./fmt-name"))&.text
|
220
219
|
insert_tab(div, 1)
|
221
|
-
div <<
|
220
|
+
div << lbl
|
222
221
|
end
|
223
222
|
end
|
224
223
|
end
|
data/lib/isodoc/iec/xref.rb
CHANGED
@@ -10,7 +10,7 @@ module IsoDoc
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def introduction_names(clause)
|
13
|
-
|
13
|
+
super unless @is_iev
|
14
14
|
end
|
15
15
|
|
16
16
|
def initial_anchor_names(docxml)
|
@@ -18,28 +18,41 @@ module IsoDoc
|
|
18
18
|
return unless @is_iev
|
19
19
|
|
20
20
|
if @parse_settings.empty? || @parse_settings[:clauses]
|
21
|
+
@terms_iev_names = true
|
21
22
|
terms_iev_names(docxml)
|
23
|
+
@terms_iev_names = false
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
27
|
def terms_iev_names(docxml)
|
26
28
|
docxml.xpath(ns("//sections/clause/terms")).each_with_index do |t, i|
|
27
|
-
num = "#{@iev_part}-%02d" % [i + 1]
|
29
|
+
num = semx(t, "#{@iev_part}-%02d" % [i + 1])
|
28
30
|
@anchors[t["id"]] =
|
29
|
-
{ label: num,
|
31
|
+
{ label: num,
|
32
|
+
#xref: l10n("#{@labels['section_iev']} #{num}"),
|
33
|
+
xref: labelled_autonum(@labels['section_iev'], num),
|
30
34
|
level: 2, type: "clause", elem: @labels["section_iev"] }
|
31
35
|
t.xpath(ns("./term")).each_with_index do |c, j|
|
32
|
-
num2 = "%02d" % [j + 1]
|
33
|
-
section_names1(c, "#{num}
|
36
|
+
num2 = semx(c, "%02d" % [j + 1])
|
37
|
+
#section_names1(c, "#{num}#{delim_wrap("-")}#{num2}", 3)
|
38
|
+
section_names1(c, num, num2, 3)
|
34
39
|
end
|
35
40
|
end
|
36
41
|
end
|
37
42
|
|
43
|
+
def clausesep
|
44
|
+
if @terms_iev_names then "-"
|
45
|
+
else super
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
38
49
|
def annex_name_lbl(clause, num)
|
39
50
|
obl = l10n("(#{@labels['inform_annex']})")
|
40
51
|
clause["obligation"] == "normative" and
|
41
52
|
obl = l10n("(#{@labels['norm_annex']})")
|
42
|
-
|
53
|
+
obl = "<span class='fmt-obligation'>#{l10n obl}</fmt>"
|
54
|
+
s = labelled_autonum(@labels['annex'], num)
|
55
|
+
l10n("<strong><span class='fmt-caption-label'>#{s}</span></strong><br/>#{obl}")
|
43
56
|
end
|
44
57
|
end
|
45
58
|
end
|
@@ -1783,9 +1783,21 @@ that the `number` given for the series applies to the second iteration of number
|
|
1783
1783
|
May be used to differentiate rendering of notes in bibliographies</a:documentation>
|
1784
1784
|
</attribute>
|
1785
1785
|
</optional>
|
1786
|
-
<ref name="
|
1786
|
+
<ref name="LocalizedStringAttributes">
|
1787
1787
|
<a:documentation>The content of the note</a:documentation>
|
1788
1788
|
</ref>
|
1789
|
+
<choice>
|
1790
|
+
<oneOrMore>
|
1791
|
+
<ref name="BasicBlockNoId">
|
1792
|
+
<a:documentation>Multiple blocks of content</a:documentation>
|
1793
|
+
</ref>
|
1794
|
+
</oneOrMore>
|
1795
|
+
<oneOrMore>
|
1796
|
+
<ref name="TextElement">
|
1797
|
+
<a:documentation>Single block of content</a:documentation>
|
1798
|
+
</ref>
|
1799
|
+
</oneOrMore>
|
1800
|
+
</choice>
|
1789
1801
|
</element>
|
1790
1802
|
</define>
|
1791
1803
|
<define name="bibabstract">
|
data/lib/metanorma/iec/front.rb
CHANGED
@@ -166,7 +166,6 @@ module Metanorma
|
|
166
166
|
super
|
167
167
|
a = node.attr("accessibility-color-inside") and
|
168
168
|
xml.accessibility_color_inside a
|
169
|
-
a = node.attr("price-code") and xml.price_code a
|
170
169
|
a = node.attr("cen-processing") and xml.cen_processing a
|
171
170
|
a = node.attr("secretary") and xml.secretary a
|
172
171
|
a = node.attr("interest-to-committees") and xml.interest_to_committees a
|
@@ -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.
|
20
|
+
<!-- VERSION v1.4.1 -->
|
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">
|
@@ -326,7 +326,7 @@ normative or informative references, some split references into sections organiz
|
|
326
326
|
<a:documentation>Content of note</a:documentation>
|
327
327
|
<oneOrMore>
|
328
328
|
<choice>
|
329
|
-
<ref name="paragraph"/>
|
329
|
+
<ref name="paragraph-with-footnote"/>
|
330
330
|
<ref name="ul"/>
|
331
331
|
<ref name="ol"/>
|
332
332
|
<ref name="dl"/>
|
@@ -412,7 +412,7 @@ normative or informative references, some split references into sections organiz
|
|
412
412
|
<element name="note">
|
413
413
|
<ref name="OptionalId"/>
|
414
414
|
<oneOrMore>
|
415
|
-
<ref name="paragraph"/>
|
415
|
+
<ref name="paragraph-with-footnote"/>
|
416
416
|
</oneOrMore>
|
417
417
|
</element>
|
418
418
|
</define>
|
@@ -1977,7 +1977,7 @@ used in document amendments</a:documentation>
|
|
1977
1977
|
<oneOrMore>
|
1978
1978
|
<choice>
|
1979
1979
|
<a:documentation>Content of the verbal representation of the term</a:documentation>
|
1980
|
-
<ref name="paragraph"/>
|
1980
|
+
<ref name="paragraph-with-footnote"/>
|
1981
1981
|
<ref name="dl"/>
|
1982
1982
|
<ref name="ol"/>
|
1983
1983
|
<ref name="ul"/>
|
@@ -2015,7 +2015,7 @@ used in document amendments</a:documentation>
|
|
2015
2015
|
<oneOrMore>
|
2016
2016
|
<choice>
|
2017
2017
|
<a:documentation>Content of the term note</a:documentation>
|
2018
|
-
<ref name="paragraph"/>
|
2018
|
+
<ref name="paragraph-with-footnote"/>
|
2019
2019
|
<ref name="ul"/>
|
2020
2020
|
<ref name="ol"/>
|
2021
2021
|
<ref name="dl"/>
|
@@ -2037,7 +2037,7 @@ used in document amendments</a:documentation>
|
|
2037
2037
|
<ref name="dl"/>
|
2038
2038
|
<ref name="quote"/>
|
2039
2039
|
<ref name="sourcecode"/>
|
2040
|
-
<ref name="paragraph"/>
|
2040
|
+
<ref name="paragraph-with-footnote"/>
|
2041
2041
|
<ref name="figure"/>
|
2042
2042
|
</choice>
|
2043
2043
|
</oneOrMore>
|
@@ -28,10 +28,10 @@
|
|
28
28
|
<ref name="updates_document_type"/>
|
29
29
|
</optional>
|
30
30
|
<optional>
|
31
|
-
<ref name="
|
31
|
+
<ref name="price-code"/>
|
32
32
|
</optional>
|
33
33
|
<optional>
|
34
|
-
<ref name="
|
34
|
+
<ref name="accessibility-color-inside"/>
|
35
35
|
</optional>
|
36
36
|
<optional>
|
37
37
|
<ref name="cen-processing"/>
|
@@ -75,36 +75,19 @@
|
|
75
75
|
</choice>
|
76
76
|
</element>
|
77
77
|
</define>
|
78
|
-
<define name="
|
79
|
-
<
|
80
|
-
<
|
81
|
-
|
82
|
-
|
83
|
-
<
|
84
|
-
|
85
|
-
|
86
|
-
<
|
87
|
-
|
88
|
-
|
89
|
-
<
|
90
|
-
|
91
|
-
</zeroOrMore>
|
92
|
-
<zeroOrMore>
|
93
|
-
<ref name="contact"/>
|
94
|
-
</zeroOrMore>
|
95
|
-
<optional>
|
96
|
-
<ref name="technical-committee"/>
|
97
|
-
</optional>
|
98
|
-
<optional>
|
99
|
-
<ref name="subcommittee"/>
|
100
|
-
</optional>
|
101
|
-
<optional>
|
102
|
-
<ref name="workgroup"/>
|
103
|
-
</optional>
|
104
|
-
<optional>
|
105
|
-
<ref name="secretariat"/>
|
106
|
-
</optional>
|
107
|
-
</element>
|
78
|
+
<define name="OrganizationType" combine="interleave">
|
79
|
+
<optional>
|
80
|
+
<ref name="technical-committee"/>
|
81
|
+
</optional>
|
82
|
+
<optional>
|
83
|
+
<ref name="subcommittee"/>
|
84
|
+
</optional>
|
85
|
+
<optional>
|
86
|
+
<ref name="workgroup"/>
|
87
|
+
</optional>
|
88
|
+
<optional>
|
89
|
+
<ref name="secretariat"/>
|
90
|
+
</optional>
|
108
91
|
</define>
|
109
92
|
<define name="DocumentType">
|
110
93
|
<choice>
|
data/metanorma-iec.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
31
31
|
spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
|
32
32
|
|
33
|
-
spec.add_dependency "metanorma-iso", "~> 2.
|
33
|
+
spec.add_dependency "metanorma-iso", "~> 2.9.1"
|
34
34
|
spec.add_dependency "pubid"
|
35
35
|
|
36
36
|
spec.add_development_dependency "debug"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-iso
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.9.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.9.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pubid
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|