isodoc 2.0.6 → 2.0.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/isodoc.gemspec +2 -1
- data/lib/isodoc/function/to_word_html.rb +1 -1
- data/lib/isodoc/html_convert.rb +1 -1
- data/lib/isodoc/i18n.rb +1 -108
- data/lib/isodoc/presentation_function/image.rb +2 -3
- data/lib/isodoc/presentation_function/section.rb +15 -6
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +1 -1
- data/lib/isodoc/xref/xref_gen_seq.rb +2 -2
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +2 -2
- data/spec/isodoc/i18n_spec.rb +2 -2
- data/spec/isodoc/presentation_xml_spec.rb +67 -2
- data/spec/isodoc/ref_spec.rb +48 -0
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7850182b408d69f4ae9de09a385c8813c366a2ffd15122596ac3cd95e1b62f6
|
4
|
+
data.tar.gz: 2920db0b8a2d7887a326ad5f58f23550c0eb949e33fdbcf7dd7601d805b08e8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e80f26545cd13b3e3bab7624d140cf2844afdf3471a45a8b77102fdaf2ca633e4a80df7a315718f3b35a8e3b95b9706a1e03785a19afef1bb5cf47dcf22a9d0d
|
7
|
+
data.tar.gz: 4ccdbce4a6e6e854137a938ec3e26361952f355b0cffd3776e646109cff971e0514dd5e222add212be371771e85bd75df5c6a3852800d7b12a07c5a2112a45aa
|
data/isodoc.gemspec
CHANGED
@@ -31,9 +31,10 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "asciimath"
|
32
32
|
spec.add_dependency "html2doc", "~> 1.3.0"
|
33
33
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
34
|
+
spec.add_dependency "isodoc-i18n", "~> 1.0.0"
|
34
35
|
spec.add_dependency "liquid", "~> 4"
|
35
36
|
# spec.add_dependency "metanorma", ">= 1.2.0"
|
36
|
-
spec.add_dependency "emf2svg", "
|
37
|
+
spec.add_dependency "emf2svg", "<= 1.3"
|
37
38
|
spec.add_dependency "mathml2asciimath"
|
38
39
|
spec.add_dependency "metanorma-utils"
|
39
40
|
spec.add_dependency "nokogiri", "~> 1.12.0"
|
data/lib/isodoc/html_convert.rb
CHANGED
@@ -24,7 +24,7 @@ module IsoDoc
|
|
24
24
|
|
25
25
|
def convert(filename, file = nil, debug = false, output_filename = nil)
|
26
26
|
ret = super
|
27
|
-
Dir.
|
27
|
+
Dir.exist?(tmpimagedir) and Dir["#{tmpimagedir}/*"].empty? and
|
28
28
|
FileUtils.rm_r tmpimagedir
|
29
29
|
ret
|
30
30
|
end
|
data/lib/isodoc/i18n.rb
CHANGED
@@ -1,28 +1,9 @@
|
|
1
1
|
require "yaml"
|
2
|
+
require "isodoc-i18n"
|
2
3
|
require_relative "function/utils"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
class I18n
|
6
|
-
def load_yaml(lang, script, i18nyaml = nil)
|
7
|
-
ret = load_yaml1(lang, script)
|
8
|
-
return normalise_hash(ret.merge(YAML.load_file(i18nyaml))) if i18nyaml
|
9
|
-
|
10
|
-
normalise_hash(ret)
|
11
|
-
end
|
12
|
-
|
13
|
-
def normalise_hash(ret)
|
14
|
-
case ret
|
15
|
-
when Hash
|
16
|
-
ret.each do |k, v|
|
17
|
-
ret[k] = normalise_hash(v)
|
18
|
-
end
|
19
|
-
ret
|
20
|
-
when Array then ret.map { |n| normalise_hash(n) }
|
21
|
-
when String then cleanup_entities(ret.unicode_normalize(:nfc))
|
22
|
-
else ret
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
7
|
def load_yaml1(lang, script)
|
27
8
|
case lang
|
28
9
|
when "en", "fr", "ru", "de", "es", "ar"
|
@@ -40,93 +21,5 @@ module IsoDoc
|
|
40
21
|
YAML.load_file(File.join(File.dirname(__FILE__),
|
41
22
|
"../isodoc-yaml/i18n-#{str}.yaml"))
|
42
23
|
end
|
43
|
-
|
44
|
-
def get
|
45
|
-
@labels
|
46
|
-
end
|
47
|
-
|
48
|
-
def set(key, val)
|
49
|
-
@labels[key] = val
|
50
|
-
end
|
51
|
-
|
52
|
-
def initialize(lang, script, i18nyaml = nil)
|
53
|
-
@lang = lang
|
54
|
-
@script = script
|
55
|
-
y = load_yaml(lang, script, i18nyaml)
|
56
|
-
@labels = y
|
57
|
-
@labels["language"] = @lang
|
58
|
-
@labels["script"] = @script
|
59
|
-
@labels.each do |k, _v|
|
60
|
-
self.class.send(:define_method, k.downcase) { get[k] }
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def self.l10n(text, lang = @lang, script = @script)
|
65
|
-
l10n(text, lang, script)
|
66
|
-
end
|
67
|
-
|
68
|
-
# TODO: move to localization file
|
69
|
-
# function localising spaces and punctuation.
|
70
|
-
# Not clear if period needs to be localised for zh
|
71
|
-
def l10n(text, lang = @lang, script = @script)
|
72
|
-
if lang == "zh" && script == "Hans" then l10n_zh(text)
|
73
|
-
else bidiwrap(text, lang, script)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def bidiwrap(text, lang, script)
|
78
|
-
my_script, my_rtl, outer_rtl = bidiwrap_vars(lang, script)
|
79
|
-
if my_rtl && !outer_rtl
|
80
|
-
mark = %w(Arab Aran).include?(my_script) ? "؜" : "‏"
|
81
|
-
"#{mark}#{text}#{mark}"
|
82
|
-
elsif !my_rtl && outer_rtl then "‎#{text}‎"
|
83
|
-
else text
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def bidiwrap_vars(lang, script)
|
88
|
-
my_script = script || Metanorma::Utils.default_script(lang)
|
89
|
-
[my_script,
|
90
|
-
Metanorma::Utils.rtl_script?(my_script),
|
91
|
-
Metanorma::Utils.rtl_script?(@script || Metanorma::Utils
|
92
|
-
.default_script(@lang))]
|
93
|
-
end
|
94
|
-
|
95
|
-
def l10n_zh(text)
|
96
|
-
xml = Nokogiri::HTML::DocumentFragment.parse(text)
|
97
|
-
xml.traverse do |n|
|
98
|
-
next unless n.text?
|
99
|
-
|
100
|
-
n.replace(cleanup_entities(n.text.gsub(/ /, "").gsub(/:/, ":")
|
101
|
-
.gsub(/,/, "、").gsub(/\(/, "(").gsub(/\)/, ")")
|
102
|
-
.gsub(/\[/, "【").gsub(/\]/, "】"), is_xml: false))
|
103
|
-
end
|
104
|
-
xml.to_xml.gsub(/<b>/, "").gsub("</b>", "").gsub(/<\?[^>]+>/, "")
|
105
|
-
end
|
106
|
-
|
107
|
-
def boolean_conj(list, conn)
|
108
|
-
case list.size
|
109
|
-
when 0 then ""
|
110
|
-
when 1 then list.first
|
111
|
-
when 2 then @labels["binary_#{conn}"].sub(/%1/, list[0])
|
112
|
-
.sub(/%2/, list[1])
|
113
|
-
else
|
114
|
-
@labels["multiple_#{conn}"]
|
115
|
-
.sub(/%1/, l10n(list[0..-2].join(", "), @lang, @script))
|
116
|
-
.sub(/%2/, list[-1])
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# def multiple_and(names, andword)
|
121
|
-
# return "" if names.empty?
|
122
|
-
# return names[0] if names.length == 1
|
123
|
-
#
|
124
|
-
# (names.length == 2) &&
|
125
|
-
# (return l10n("#{names[0]} #{andword} #{names[1]}", @lang, @script))
|
126
|
-
# l10n(names[0..-2].join(", ") + " #{andword} #{names[-1]}", @lang, @script)
|
127
|
-
# end
|
128
|
-
|
129
|
-
include Function::Utils
|
130
|
-
# module_function :l10n
|
131
24
|
end
|
132
25
|
end
|
@@ -29,8 +29,7 @@ module IsoDoc
|
|
29
29
|
def figure1(elem)
|
30
30
|
return sourcecode1(elem) if elem["class"] == "pseudocode" ||
|
31
31
|
elem["type"] == "pseudocode"
|
32
|
-
return if (
|
33
|
-
(elem.at(ns("./figure")) && !elem.at(ns("./name")))
|
32
|
+
return if elem.at(ns("./figure")) && !elem.at(ns("./name"))
|
34
33
|
|
35
34
|
lbl = @xrefs.anchor(elem["id"], :label, false) or return
|
36
35
|
prefix_name(elem, " — ",
|
@@ -64,7 +63,7 @@ module IsoDoc
|
|
64
63
|
def svg_to_emf(node)
|
65
64
|
uri = svg_to_emf_uri(node)
|
66
65
|
ret = svg_to_emf_filename(uri)
|
67
|
-
File.
|
66
|
+
File.exist?(ret) and return ret
|
68
67
|
exe = inkscape_installed? or raise "Inkscape missing in PATH, unable" \
|
69
68
|
"to convert EMF to SVG. Aborting."
|
70
69
|
uri = Metanorma::Utils::external_path uri
|
@@ -76,16 +76,25 @@ module IsoDoc
|
|
76
76
|
def bibliography_bibitem_number(docxml)
|
77
77
|
i = 0
|
78
78
|
docxml.xpath(ns("//references[@normative = 'false']/bibitem")).each do |b|
|
79
|
-
|
80
|
-
|
81
|
-
i += 1
|
82
|
-
id = b.at(ns(".//docidentifier"))
|
83
|
-
id.previous =
|
84
|
-
"<docidentifier type='metanorma-ordinal'>[#{i}]</docidentifier>"
|
79
|
+
i = bibliography_bibitem_number1(b, i)
|
85
80
|
end
|
86
81
|
@xrefs.references docxml
|
87
82
|
end
|
88
83
|
|
84
|
+
def bibliography_bibitem_number1(bibitem, idx)
|
85
|
+
if mn = bibitem.at(ns(".//docidentifier[@type = 'metanorma']"))
|
86
|
+
/^\[?\d\]?$/.match?(mn&.text) and
|
87
|
+
idx = mn.text.sub(/^\[/, "").sub(/\]$/, "").to_i
|
88
|
+
end
|
89
|
+
unless bibliography_bibitem_number_skip(bibitem)
|
90
|
+
|
91
|
+
idx += 1
|
92
|
+
bibitem.at(ns(".//docidentifier")).previous =
|
93
|
+
"<docidentifier type='metanorma-ordinal'>[#{idx}]</docidentifier>"
|
94
|
+
end
|
95
|
+
idx
|
96
|
+
end
|
97
|
+
|
89
98
|
def docid_prefixes(docxml)
|
90
99
|
docxml.xpath(ns("//references/bibitem/docidentifier")).each do |i|
|
91
100
|
i.children = @xrefs.klass.docid_prefix(i["type"], i.text)
|
data/lib/isodoc/version.rb
CHANGED
@@ -25,7 +25,7 @@ module IsoDoc
|
|
25
25
|
j = 0
|
26
26
|
clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]"))
|
27
27
|
.each do |t|
|
28
|
-
next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
28
|
+
# next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
29
29
|
|
30
30
|
j = subfigure_increment(j, c, t)
|
31
31
|
label = c.print + (j.zero? ? "" : "-#{j}")
|
@@ -111,7 +111,7 @@ module IsoDoc
|
|
111
111
|
j = 0
|
112
112
|
clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]"))
|
113
113
|
.each do |t|
|
114
|
-
next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
114
|
+
# next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
115
115
|
|
116
116
|
j = subfigure_increment(j, c, t)
|
117
117
|
label = "#{num}#{hiersep}#{c.print}" +
|
@@ -34,9 +34,9 @@ internal_external_terms_boilerplate: |
|
|
34
34
|
<p>% 界定的以及下列术语和定义适用于本文件。</p>
|
35
35
|
term_defined_in: "〖术语于%中定义〗"
|
36
36
|
binary_and: "%1和%2"
|
37
|
-
multiple_and: "%1
|
37
|
+
multiple_and: "%1、和%2"
|
38
38
|
binary_or: "%1或%2"
|
39
|
-
multiple_or: "%1
|
39
|
+
multiple_or: "%1、或%2"
|
40
40
|
chain_and: "%1和%2"
|
41
41
|
chain_or: "%1或%2"
|
42
42
|
chain_from: "%1从%2"
|
data/spec/isodoc/i18n_spec.rb
CHANGED
@@ -644,7 +644,7 @@ RSpec.describe IsoDoc do
|
|
644
644
|
</introduction></preface><sections>
|
645
645
|
<clause id="D" obligation="normative" type="scope" displayorder="3">
|
646
646
|
<title depth="1">1.<tab/>Scope</title>
|
647
|
-
<p id="E"><eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712&#
|
647
|
+
<p id="E"><eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712, 第1–1 表</eref></p>
|
648
648
|
</clause>
|
649
649
|
<clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
|
650
650
|
<title depth="2">3.1.<tab/>Normal Terms</title>
|
@@ -722,7 +722,7 @@ RSpec.describe IsoDoc do
|
|
722
722
|
<div id="D">
|
723
723
|
<h1>1. Scope</h1>
|
724
724
|
<p id="E">
|
725
|
-
<a href='#ISO712'>ISO 712&#
|
725
|
+
<a href='#ISO712'>ISO 712, 第1–1 表</a>
|
726
726
|
</p>
|
727
727
|
</div>
|
728
728
|
<div>
|
@@ -1158,7 +1158,6 @@ RSpec.describe IsoDoc do
|
|
1158
1158
|
.to be_equivalent_to xmlpp(presxml)
|
1159
1159
|
end
|
1160
1160
|
|
1161
|
-
|
1162
1161
|
it "inserts toc metadata" do
|
1163
1162
|
input = <<~INPUT
|
1164
1163
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
@@ -1194,7 +1193,7 @@ RSpec.describe IsoDoc do
|
|
1194
1193
|
end
|
1195
1194
|
|
1196
1195
|
it "processes multiple-target xrefs" do
|
1197
|
-
|
1196
|
+
input = <<~INPUT
|
1198
1197
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1199
1198
|
<bibdata/>
|
1200
1199
|
<sections>
|
@@ -1295,6 +1294,72 @@ RSpec.describe IsoDoc do
|
|
1295
1294
|
.to be_equivalent_to xmlpp(presxml)
|
1296
1295
|
end
|
1297
1296
|
|
1297
|
+
it "captions embedded figures" do
|
1298
|
+
input = <<~INPUT
|
1299
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1300
|
+
<bibdata/>
|
1301
|
+
<sections>
|
1302
|
+
<clause id="A" inline-header="false" obligation="normative">
|
1303
|
+
<title>Section</title>
|
1304
|
+
<figure id="B1">
|
1305
|
+
<name>First</name>
|
1306
|
+
</figure>
|
1307
|
+
<example id="C1">
|
1308
|
+
<figure id="B2">
|
1309
|
+
<name>Second</name>
|
1310
|
+
</figure>
|
1311
|
+
</example>
|
1312
|
+
<example id="C2">
|
1313
|
+
<figure id="B4" unnumbered="true">
|
1314
|
+
<name>Unnamed</name>
|
1315
|
+
</figure>
|
1316
|
+
</example>
|
1317
|
+
<figure id="B3">
|
1318
|
+
<name>Third</name>
|
1319
|
+
</figure>
|
1320
|
+
</clause>
|
1321
|
+
</sections>
|
1322
|
+
</iso-standard>
|
1323
|
+
INPUT
|
1324
|
+
presxml = <<~OUTPUT
|
1325
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
|
1326
|
+
<bibdata/>
|
1327
|
+
|
1328
|
+
<sections>
|
1329
|
+
<clause id='A' inline-header='false' obligation='normative' displayorder='1'>
|
1330
|
+
<title depth='1'>
|
1331
|
+
1.
|
1332
|
+
<tab/>
|
1333
|
+
Section
|
1334
|
+
</title>
|
1335
|
+
<figure id='B1'>
|
1336
|
+
<name>Figure 1 — First</name>
|
1337
|
+
</figure>
|
1338
|
+
<example id='C1'>
|
1339
|
+
<name>EXAMPLE 1</name>
|
1340
|
+
<figure id='B2'>
|
1341
|
+
<name>Figure 2 — Second</name>
|
1342
|
+
</figure>
|
1343
|
+
</example>
|
1344
|
+
<example id='C2'>
|
1345
|
+
<name>EXAMPLE 2</name>
|
1346
|
+
<figure id='B4' unnumbered='true'>
|
1347
|
+
<name>Unnamed</name>
|
1348
|
+
</figure>
|
1349
|
+
</example>
|
1350
|
+
<figure id='B3'>
|
1351
|
+
<name>Figure 3 — Third</name>
|
1352
|
+
</figure>
|
1353
|
+
</clause>
|
1354
|
+
</sections>
|
1355
|
+
</iso-standard>
|
1356
|
+
OUTPUT
|
1357
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
1358
|
+
.convert("test", input, true))
|
1359
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, ""))
|
1360
|
+
.to be_equivalent_to xmlpp(presxml)
|
1361
|
+
end
|
1362
|
+
|
1298
1363
|
private
|
1299
1364
|
|
1300
1365
|
def mock_symbols
|
data/spec/isodoc/ref_spec.rb
CHANGED
@@ -854,4 +854,52 @@ RSpec.describe IsoDoc do
|
|
854
854
|
.to be_equivalent_to xmlpp(presxml)
|
855
855
|
end
|
856
856
|
|
857
|
+
it "enforces consistent metanorma-ordinal numbering" do
|
858
|
+
input = <<~INPUT
|
859
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
860
|
+
<bibdata>
|
861
|
+
<language>en</language>
|
862
|
+
</bibdata>
|
863
|
+
<bibliography><references id="_normative_references" obligation="informative" normative="false"><title>Bibliography</title>
|
864
|
+
<bibitem id="ref1" type="standard">
|
865
|
+
<title format="text/plain">Cereals or cereal products</title>
|
866
|
+
<docidentifier type="IEC">IEC 217</docidentifier>
|
867
|
+
</bibitem>
|
868
|
+
<bibitem id="ref2" type="standard">
|
869
|
+
<title format="text/plain">Cereals or cereal products</title>
|
870
|
+
<docidentifier type="metanorma">[3]</docidentifier>
|
871
|
+
</bibitem>
|
872
|
+
<bibitem id="ref3" type="standard">
|
873
|
+
<title format="text/plain">Cereals or cereal products</title>
|
874
|
+
<docidentifier>ABC</docidentifier>
|
875
|
+
</bibitem>
|
876
|
+
</references></bibliography></iso-standard>
|
877
|
+
INPUT
|
878
|
+
presxml = <<~PRESXML
|
879
|
+
<bibliography>
|
880
|
+
<references id='_normative_references' obligation='informative' normative='false' displayorder='1'>
|
881
|
+
<title depth='1'>Bibliography</title>
|
882
|
+
<bibitem id='ref1' type='standard'>
|
883
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
884
|
+
<docidentifier type='metanorma-ordinal'>[1]</docidentifier>
|
885
|
+
<docidentifier type='IEC'>IEC 217</docidentifier>
|
886
|
+
</bibitem>
|
887
|
+
<bibitem id='ref2' type='standard'>
|
888
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
889
|
+
<docidentifier type='metanorma'>[3]</docidentifier>
|
890
|
+
</bibitem>
|
891
|
+
<bibitem id='ref3' type='standard'>
|
892
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
893
|
+
<docidentifier type='metanorma-ordinal'>[4]</docidentifier>
|
894
|
+
<docidentifier>ABC</docidentifier>
|
895
|
+
</bibitem>
|
896
|
+
</references>
|
897
|
+
</bibliography>
|
898
|
+
PRESXML
|
899
|
+
expect(xmlpp(Nokogiri::XML(
|
900
|
+
IsoDoc::PresentationXMLConvert.new({})
|
901
|
+
.convert("test", input, true),
|
902
|
+
).at("//xmlns:bibliography").to_xml))
|
903
|
+
.to be_equivalent_to xmlpp(presxml)
|
904
|
+
end
|
857
905
|
end
|
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: 2.0.
|
4
|
+
version: 2.0.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: 2022-
|
11
|
+
date: 2022-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciimath
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 4.3.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: isodoc-i18n
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.0.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: liquid
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,16 +84,16 @@ dependencies:
|
|
70
84
|
name: emf2svg
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - "<="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1'
|
89
|
+
version: '1.3'
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - "<="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1'
|
96
|
+
version: '1.3'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: mathml2asciimath
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|