metanorma-iec 2.5.6 → 2.5.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|