isodoc 1.2.5 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/isodoc.gemspec +1 -0
- data/lib/isodoc/base_style/all.css +1 -1
- data/lib/isodoc/base_style/reset.css +1 -1
- data/lib/isodoc/base_style/reset.scss +1 -1
- data/lib/isodoc/function/to_word_html.rb +1 -0
- data/lib/isodoc/i18n.rb +8 -49
- data/lib/isodoc/metadata.rb +45 -37
- data/lib/isodoc/metadata_date.rb +5 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/xslfo_convert.rb +6 -1
- data/spec/isodoc/metadata_spec.rb +21 -14
- data/spec/spec_helper.rb +4 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcbc3f4f71f739273b06483080ad077fcda05b20f8eca96858300543b0fb2784
|
4
|
+
data.tar.gz: f0c4a29519de6c22dbc47af2193d8f4ee0a2c925c5d0c9f58414813be28070ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5eb17f999c954a1185f60807f5c9b4dcdde33391fd95546d51dca4a00aee8d742736155313153a5007205d06d189c5ee69b39152db57478669e54e7622fde568
|
7
|
+
data.tar.gz: e0122186b16428b61c7009d7c8560ab12de531a8ec3bac56e58e89528f4a2a0acd2e1ab4ce4453919f7ed2707e7724037175852a3dc148a53bb0eef63aa5f695
|
data/isodoc.gemspec
CHANGED
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_dependency "liquid"
|
38
38
|
spec.add_dependency "roman-numerals"
|
39
39
|
spec.add_dependency "metanorma", "~> 1.1.0"
|
40
|
+
spec.add_dependency "relaton-cli"
|
40
41
|
|
41
42
|
spec.add_development_dependency "rake", "~> 13.0"
|
42
43
|
spec.add_development_dependency "byebug", "~> 9.1"
|
@@ -9,7 +9,7 @@ fieldset, form, label, legend,
|
|
9
9
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
10
|
article, aside, canvas, details, embed,
|
11
11
|
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu,
|
12
|
+
menu, output, ruby, section, summary,
|
13
13
|
time, mark, audio, video {
|
14
14
|
margin: 0;
|
15
15
|
padding: 0; }
|
@@ -9,7 +9,7 @@ fieldset, form, label, legend,
|
|
9
9
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
10
|
article, aside, canvas, details, embed,
|
11
11
|
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu,
|
12
|
+
menu, output, ruby, section, summary,
|
13
13
|
time, mark, audio, video {
|
14
14
|
margin: 0;
|
15
15
|
padding: 0; }
|
@@ -9,7 +9,7 @@ fieldset, form, label, legend,
|
|
9
9
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
10
|
article, aside, canvas, details, embed,
|
11
11
|
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu,
|
12
|
+
menu, output, ruby, section, summary,
|
13
13
|
time, mark, audio, video {
|
14
14
|
margin: 0;
|
15
15
|
padding: 0;
|
data/lib/isodoc/i18n.rb
CHANGED
@@ -42,55 +42,6 @@ module IsoDoc
|
|
42
42
|
@labels.each do |k, v|
|
43
43
|
self.class.send(:define_method, k.downcase) { v }
|
44
44
|
end
|
45
|
-
=begin
|
46
|
-
@term_def_boilerplate = y["term_def_boilerplate"]
|
47
|
-
@scope_lbl = y["scope"]
|
48
|
-
@symbols_lbl = y["symbols"]
|
49
|
-
@table_of_contents_lbl = y["table_of_contents"]
|
50
|
-
@introduction_lbl = y["introduction"]
|
51
|
-
@foreword_lbl = y["foreword"]
|
52
|
-
@abstract_lbl = y["abstract"]
|
53
|
-
@termsdef_lbl = y["termsdef"]
|
54
|
-
@termsdefsymbols_lbl = y["termsdefsymbols"]
|
55
|
-
@normref_lbl = y["normref"]
|
56
|
-
@bibliography_lbl = y["bibliography"]
|
57
|
-
@clause_lbl = y["clause"]
|
58
|
-
@annex_lbl = y["annex"]
|
59
|
-
@appendix_lbl = y["appendix"]
|
60
|
-
@no_terms_boilerplate = y["no_terms_boilerplate"]
|
61
|
-
@internal_terms_boilerplate = y["internal_terms_boilerplate"]
|
62
|
-
@norm_with_refs_pref = y["norm_with_refs_pref"]
|
63
|
-
@norm_empty_pref = y["norm_empty_pref"]
|
64
|
-
@external_terms_boilerplate = y["external_terms_boilerplate"]
|
65
|
-
@internal_external_terms_boilerplate =
|
66
|
-
y["internal_external_terms_boilerplate"]
|
67
|
-
@note_lbl = y["note"]
|
68
|
-
@note_xref_lbl = y["note_xref"]
|
69
|
-
@termnote_lbl = y["termnote"]
|
70
|
-
@figure_lbl = y["figure"]
|
71
|
-
@list_lbl = y["list"]
|
72
|
-
@formula_lbl = y["formula"]
|
73
|
-
@inequality_lbl = y["inequality"]
|
74
|
-
@table_lbl = y["table"]
|
75
|
-
@key_lbl = y["key"]
|
76
|
-
@example_lbl = y["example"]
|
77
|
-
@example_xref_lbl = y["example_xref"]
|
78
|
-
@where_lbl = y["where"]
|
79
|
-
@wholeoftext_lbl = y["wholeoftext"]
|
80
|
-
@draft_lbl = y["draft_label"]
|
81
|
-
@inform_annex_lbl = y["inform_annex"]
|
82
|
-
@norm_annex_lbl = y["norm_annex"]
|
83
|
-
@modified_lbl = y["modified"]
|
84
|
-
@deprecated_lbl = y["deprecated"]
|
85
|
-
@source_lbl = y["source"]
|
86
|
-
@and_lbl = y["and"]
|
87
|
-
@all_parts_lbl = y["all_parts"]
|
88
|
-
@permission_lbl = y["permission"]
|
89
|
-
@recommendation_lbl = y["recommendation"]
|
90
|
-
@requirement_lbl = y["requirement"]
|
91
|
-
@locality = y["locality"]
|
92
|
-
@admonition = y["admonition"]
|
93
|
-
=end
|
94
45
|
end
|
95
46
|
|
96
47
|
def self.l10n(x, lang = @lang, script = @script)
|
@@ -115,6 +66,14 @@ module IsoDoc
|
|
115
66
|
end
|
116
67
|
end
|
117
68
|
|
69
|
+
def multiple_and(names, andword)
|
70
|
+
return '' if names.empty?
|
71
|
+
return names[0] if names.length == 1
|
72
|
+
(names.length == 2) &&
|
73
|
+
(return l10n("#{names[0]} #{andword} #{names[1]}", @lang, @script))
|
74
|
+
l10n(names[0..-2].join(', ') + " #{andword} #{names[-1]}", @lang, @script)
|
75
|
+
end
|
76
|
+
|
118
77
|
#module_function :l10n
|
119
78
|
|
120
79
|
end
|
data/lib/isodoc/metadata.rb
CHANGED
@@ -4,11 +4,6 @@ require_relative './metadata_date'
|
|
4
4
|
|
5
5
|
module IsoDoc
|
6
6
|
class Metadata
|
7
|
-
DATETYPES = %w{published accessed created implemented obsoleted confirmed
|
8
|
-
updated issued received transmitted copied unchanged
|
9
|
-
circulated vote-started
|
10
|
-
vote-ended}.freeze
|
11
|
-
|
12
7
|
attr_accessor :fonts_options
|
13
8
|
|
14
9
|
def ns(xpath)
|
@@ -110,7 +105,7 @@ module IsoDoc
|
|
110
105
|
name == 'International Organization for Standardization')
|
111
106
|
end
|
112
107
|
|
113
|
-
def
|
108
|
+
def agency1(xml)
|
114
109
|
agency = ''
|
115
110
|
publisher = []
|
116
111
|
xml.xpath(ns("//bibdata/contributor[xmlns:role/@type = 'publisher']/"\
|
@@ -120,41 +115,48 @@ module IsoDoc
|
|
120
115
|
publisher << name if name
|
121
116
|
agency = iso?(org) ? "ISO/#{agency}" : "#{agency}#{agency1}/"
|
122
117
|
end
|
118
|
+
[agency, publisher]
|
119
|
+
end
|
120
|
+
|
121
|
+
def agency(xml)
|
122
|
+
agency, publisher = agency1(xml)
|
123
123
|
set(:agency, agency.sub(%r{/$}, ''))
|
124
|
-
set(:publisher, multiple_and(publisher, @labels['and']))
|
124
|
+
set(:publisher, @i18n.multiple_and(publisher, @labels['and']))
|
125
|
+
agency_addr(xml)
|
125
126
|
end
|
126
127
|
|
127
|
-
def
|
128
|
-
|
129
|
-
|
130
|
-
(
|
131
|
-
|
132
|
-
|
128
|
+
def agency_addr(xml)
|
129
|
+
a = xml.at(ns("//bibdata/contributor[xmlns:role/@type = 'publisher'][1]/"\
|
130
|
+
"organization")) or return
|
131
|
+
n = a.at(ns("./subdivision")) and set(:subdivision, n.text)
|
132
|
+
n = a.at(ns("./address/formattedAddress")) and
|
133
|
+
set(:pub_address, n.children.to_xml)
|
134
|
+
n = a.at(ns("./phone[not(@type = 'fax')]")) and set(:pub_phone, n.text)
|
135
|
+
n = a.at(ns("./phone[@type = 'fax']")) and set(:pub_fax, n.text)
|
136
|
+
n = a.at(ns("./email")) and set(:pub_email, n.text)
|
137
|
+
n = a.at(ns("./uri")) and set(:pub_uri, n.text)
|
133
138
|
end
|
134
139
|
|
135
140
|
def docstatus(isoxml, _out)
|
136
|
-
docstatus = isoxml.at(ns('//bibdata/status/stage'))
|
137
141
|
set(:unpublished, true)
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
end
|
142
|
+
return unless docstatus = isoxml.at(ns('//bibdata/status/stage'))
|
143
|
+
docstatus_local = isoxml.at(ns('//local_bibdata/status/stage'))
|
144
|
+
set(:stage, status_print(docstatus.text))
|
145
|
+
docstatus_local and
|
146
|
+
set(:stage_display, status_print(docstatus_local.text))
|
147
|
+
(i = isoxml&.at(ns('//bibdata/status/substage'))&.text) &&
|
148
|
+
set(:substage, i)
|
149
|
+
(i = isoxml&.at(ns('//local_bibdata/status/substage'))&.text) &&
|
150
|
+
set(:substage_display, i)
|
151
|
+
(i = isoxml&.at(ns('//bibdata/status/iteration'))&.text) &&
|
152
|
+
set(:iteration, i)
|
153
|
+
set(:unpublished, unpublished(docstatus.text))
|
154
|
+
unpublished(docstatus.text) &&
|
155
|
+
set(:stageabbr, stage_abbr(docstatus.text))
|
153
156
|
end
|
154
157
|
|
155
158
|
def stage_abbr(docstatus)
|
156
|
-
status_print(docstatus).split(/ /)
|
157
|
-
.map { |s| s[0].upcase }.join('')
|
159
|
+
status_print(docstatus).split(/ /).map { |s| s[0].upcase }.join('')
|
158
160
|
end
|
159
161
|
|
160
162
|
def unpublished(status)
|
@@ -176,12 +178,10 @@ module IsoDoc
|
|
176
178
|
end
|
177
179
|
|
178
180
|
def draftinfo(draft, revdate)
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
draftinfo += ')'
|
184
|
-
end
|
181
|
+
return "" unless draft
|
182
|
+
draftinfo = " (#{@labels['draft_label']} #{draft}"
|
183
|
+
draftinfo += ", #{revdate}" if revdate
|
184
|
+
draftinfo += ')'
|
185
185
|
l10n(draftinfo, @lang, @script)
|
186
186
|
end
|
187
187
|
|
@@ -237,5 +237,13 @@ module IsoDoc
|
|
237
237
|
isoxml.xpath(ns('//bibdata/keyword')).each { |kw| ret << kw.text }
|
238
238
|
set(:keywords, ret)
|
239
239
|
end
|
240
|
+
|
241
|
+
def note(isoxml, _out)
|
242
|
+
ret = []
|
243
|
+
isoxml.xpath(ns("//bibdata/note[@type = 'title-footnote']")).each do |n|
|
244
|
+
ret << n.text
|
245
|
+
end
|
246
|
+
set(:title_footnote, ret)
|
247
|
+
end
|
240
248
|
end
|
241
249
|
end
|
data/lib/isodoc/metadata_date.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
class Metadata
|
3
|
+
DATETYPES = %w{published accessed created implemented obsoleted confirmed
|
4
|
+
updated issued received transmitted copied unchanged
|
5
|
+
circulated vote-started
|
6
|
+
vote-ended}.freeze
|
7
|
+
|
3
8
|
def months
|
4
9
|
{
|
5
10
|
"01": @labels["month_january"],
|
data/lib/isodoc/version.rb
CHANGED
data/lib/isodoc/xslfo_convert.rb
CHANGED
@@ -23,6 +23,10 @@ module IsoDoc
|
|
23
23
|
nil
|
24
24
|
end
|
25
25
|
|
26
|
+
def pdf_options(docxml)
|
27
|
+
""
|
28
|
+
end
|
29
|
+
|
26
30
|
def convert(input_filename, file = nil, debug = false, output_filename = nil)
|
27
31
|
file = File.read(input_filename, encoding: "utf-8") if file.nil?
|
28
32
|
docxml, filename, dir = convert_init(file, input_filename, debug)
|
@@ -34,7 +38,8 @@ module IsoDoc
|
|
34
38
|
FileUtils.rm_rf dir
|
35
39
|
::Metanorma::Output::XslfoPdf.new.convert(input_filename,
|
36
40
|
output_filename || "#{filename}.#{@suffix}",
|
37
|
-
File.join(@libdir, pdf_stylesheet(docxml))
|
41
|
+
File.join(@libdir, pdf_stylesheet(docxml)),
|
42
|
+
pdf_options(docxml))
|
38
43
|
end
|
39
44
|
|
40
45
|
def xref_parse(node, out)
|
@@ -7,7 +7,7 @@ RSpec.describe IsoDoc do
|
|
7
7
|
arr = c.convert_init(<<~"INPUT", "test", false)
|
8
8
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
9
9
|
INPUT
|
10
|
-
expect(
|
10
|
+
expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
|
11
11
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
12
12
|
<bibdata type="standard">
|
13
13
|
<title>The Incredible Mr Ripley</title>
|
@@ -73,6 +73,9 @@ RSpec.describe IsoDoc do
|
|
73
73
|
</name>
|
74
74
|
</person>
|
75
75
|
</contributor>
|
76
|
+
<note type="title-footnote"><p>A footnote</p></note>
|
77
|
+
<note type="iso"><p>A note</p></note>
|
78
|
+
<note type="title-footnote"><p>Another footnote</p></note>
|
76
79
|
<language>en</language>
|
77
80
|
<script>Latn</script>
|
78
81
|
<status>
|
@@ -125,13 +128,13 @@ INPUT
|
|
125
128
|
:obsoleteddate=>"2014",
|
126
129
|
:pdf=>"URL D",
|
127
130
|
:publisheddate=>"2011",
|
128
|
-
:publisher=>"",
|
129
131
|
:receiveddate=>"XXX",
|
130
132
|
:revdate=>"2016-05-01",
|
131
133
|
:revdate_monthyear=>"May 2016",
|
132
134
|
:stage=>"Committee Draft",
|
133
135
|
:stageabbr=>"CD",
|
134
136
|
:substage=>"Withdrawn",
|
137
|
+
:title_footnote=>["A footnote", "Another footnote"],
|
135
138
|
:transmitteddate=>"2020",
|
136
139
|
:unchangeddate=>"2019",
|
137
140
|
:unpublished=>true,
|
@@ -148,7 +151,7 @@ OUTPUT
|
|
148
151
|
arr = c.convert_init(<<~"INPUT", "test", false)
|
149
152
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
150
153
|
INPUT
|
151
|
-
expect(
|
154
|
+
expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
|
152
155
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
153
156
|
<bibdata type="standard">
|
154
157
|
<title language="fr" format="text/plain">Céréales et légumineuses</ti>
|
@@ -169,7 +172,15 @@ OUTPUT
|
|
169
172
|
<role type="publisher"/>
|
170
173
|
<organization>
|
171
174
|
<name>International Organization for Standardization</name>
|
175
|
+
<subdivision>Subdivision</subdivision>
|
172
176
|
<abbreviation>ISO</abbreviation>
|
177
|
+
<address>
|
178
|
+
<formattedAddress>1 Infinity Loop + California</formattedAddress>
|
179
|
+
</address>
|
180
|
+
<phone>3333333</phone>
|
181
|
+
<phone type='fax'>4444444</phone>
|
182
|
+
<email>x@example.com</email>
|
183
|
+
<uri>http://www.example.com</uri>
|
173
184
|
</organization>
|
174
185
|
</contributor>
|
175
186
|
<contributor>
|
@@ -215,8 +226,6 @@ OUTPUT
|
|
215
226
|
INPUT
|
216
227
|
{:accesseddate=>"XXX",
|
217
228
|
:agency=>"ISO/IEC/IEEE",
|
218
|
-
:authors=>[],
|
219
|
-
:authors_affiliations=>{},
|
220
229
|
:circulateddate=>"XXX",
|
221
230
|
:confirmeddate=>"XXX",
|
222
231
|
:copieddate=>"XXX",
|
@@ -228,20 +237,24 @@ INPUT
|
|
228
237
|
:docyear=>"2016",
|
229
238
|
:draft=>"12",
|
230
239
|
:draftinfo=>" (draft 12, 2016-05)",
|
231
|
-
:edition=>nil,
|
232
240
|
:implementeddate=>"XXX",
|
233
241
|
:issueddate=>"XXX",
|
234
|
-
:keywords=>[],
|
235
242
|
:obsoleteddate=>"XXX",
|
236
243
|
:obsoletes=>"IEC 8121",
|
237
244
|
:obsoletes_part=>"3.1",
|
238
245
|
:partof=>"IEC 8122",
|
246
|
+
:pub_address=>"1 Infinity Loop + California",
|
247
|
+
:pub_email=>"x@example.com",
|
248
|
+
:pub_fax=>"4444444",
|
249
|
+
:pub_phone=>"3333333",
|
250
|
+
:pub_uri=>"http://www.example.com",
|
239
251
|
:publisheddate=>"2011-01",
|
240
252
|
:publisher=>"International Organization for Standardization, International Electrotechnical Commission and Institute of Electrical and Electronics Engineers",
|
241
253
|
:receiveddate=>"XXX",
|
242
254
|
:revdate=>"2016-05",
|
243
255
|
:revdate_monthyear=>"May 2016",
|
244
256
|
:stage=>"Published",
|
257
|
+
:subdivision=>"Subdivision",
|
245
258
|
:transmitteddate=>"XXX",
|
246
259
|
:unchangeddate=>"XXX",
|
247
260
|
:unpublished=>false,
|
@@ -261,7 +274,7 @@ OUTPUT
|
|
261
274
|
</bibdata>
|
262
275
|
</iso-standard>
|
263
276
|
INPUT
|
264
|
-
expect(
|
277
|
+
expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
|
265
278
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
266
279
|
<bibdata type="standard">
|
267
280
|
<title language="fr" format="text/plain">Céréales et légumineuses</ti>
|
@@ -308,8 +321,6 @@ OUTPUT
|
|
308
321
|
INPUT
|
309
322
|
{:accesseddate=>"XXX",
|
310
323
|
:agency=>"ISO/IEC",
|
311
|
-
:authors=>[],
|
312
|
-
:authors_affiliations=>{},
|
313
324
|
:circulateddate=>"XXX",
|
314
325
|
:confirmeddate=>"XXX",
|
315
326
|
:copieddate=>"XXX",
|
@@ -318,12 +329,8 @@ INPUT
|
|
318
329
|
:docnumeric=>"17301",
|
319
330
|
:doctitle=>"Cereals and pulses",
|
320
331
|
:docyear=>"2016",
|
321
|
-
:draft=>nil,
|
322
|
-
:draftinfo=>"",
|
323
|
-
:edition=>nil,
|
324
332
|
:implementeddate=>"XXX",
|
325
333
|
:issueddate=>"XXX",
|
326
|
-
:keywords=>[],
|
327
334
|
:obsoleteddate=>"XXX",
|
328
335
|
:publisheddate=>"2011-01",
|
329
336
|
:publisher=>"International Organization for Standardization et International Electrotechnical Commission",
|
data/spec/spec_helper.rb
CHANGED
@@ -29,6 +29,10 @@ def xmlpp(x)
|
|
29
29
|
s
|
30
30
|
end
|
31
31
|
|
32
|
+
def metadata(x)
|
33
|
+
Hash[x.sort].delete_if{ |k, v| v.nil? || v.respond_to?(:empty?) && v.empty? }
|
34
|
+
end
|
35
|
+
|
32
36
|
def strip_guid(x)
|
33
37
|
x.gsub(%r{ id="_[^"]+"}, ' id="_"').gsub(%r{ target="_[^"]+"}, ' target="_"').
|
34
38
|
gsub(%r( href="#[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{13}"), ' href="#_"').
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isodoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciimath
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.1.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: relaton-cli
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rake
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|