isodoc 2.10.4 → 2.10.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df0cc3b9722ac37d5d0853fe0b483fedc476ad51655488a893dcb7c58f08b5a3
4
- data.tar.gz: 8f5fe80aa471b64d274e3c8b44b87cc6c9fd5ff20bf52b9a61ee3d8ede5421e0
3
+ metadata.gz: c9d6fb9b45b43931c09ae2961532d650434c834c94adf40ae698afdab0098dfd
4
+ data.tar.gz: eebae6b266587daad1ed883ff44a69914dece3ccfbf34e5135b811536f8b276e
5
5
  SHA512:
6
- metadata.gz: 2f8da1dc68e54da5f58af3ad2ca370e175cc914216ecd2148068ec745975c8229371fa87b586ab60c4701b0b21d9b676893e15d97cabc1e513cba20c5ed2ad80
7
- data.tar.gz: b20e85c69fe1f89c327b22c2f0232ab751c577028de077bb6b890ae337d24c98de939a8ecb1ff8607a6d2dd9e577abec8404372572033361c4939578be4e0c99
6
+ metadata.gz: cb7fca64087faf90b1581e9bbeed9809f2ce4253b876eaf8374450cd4fc2c44a5dece2d91febdd0b70914a98ceefaa3f16887303167d378f6ef0d2a83c223041
7
+ data.tar.gz: f190c3e9d07ff55030a409a7455e79d7f5bcf6813e0c5b0034f632616e78460539c9472a1df9983a574537357c69df0007a0cd308f67f974ffa294602ca2345d
data/.rubocop.yml CHANGED
@@ -7,4 +7,4 @@ inherit_from:
7
7
  # ...
8
8
 
9
9
  AllCops:
10
- TargetRubyVersion: 2.5
10
+ TargetRubyVersion: 3.4
data/isodoc.gemspec CHANGED
@@ -26,8 +26,10 @@ Gem::Specification.new do |spec|
26
26
  f.match(%r{^(test|spec|features|bin|.github)/}) \
27
27
  || f.match(%r{Rakefile|bin/rspec})
28
28
  end
29
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
29
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
30
30
 
31
+ spec.add_dependency "base64"
32
+ spec.add_dependency "bigdecimal"
31
33
  spec.add_dependency "html2doc", "~> 1.8.1"
32
34
  # spec.add_dependency "isodoc-i18n", "~> 1.1.0" # already in relaton-render and mn-requirements
33
35
  # spec.add_dependency "relaton-cli"
@@ -42,6 +44,7 @@ Gem::Specification.new do |spec|
42
44
  spec.add_dependency "twitter_cldr", ">= 6.6.0"
43
45
  spec.add_dependency "uuidtools"
44
46
 
47
+ spec.add_development_dependency "bigdecimal"
45
48
  spec.add_development_dependency "debug"
46
49
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
47
50
  spec.add_development_dependency "guard", "~> 2.14"
@@ -12,12 +12,12 @@ $('#toggle').on('click', function(){
12
12
  $('nav').animate({ 'left': '-353px' }, 'slow', function(){
13
13
  $('nav').hide();
14
14
  });
15
- $('body').animate({ 'margin-left': '0' }, 'slow');
15
+ $('body').animate({ 'padding-left': '30px' }, 'slow');
16
16
  }
17
17
  else {
18
18
  $('nav').show();
19
19
  $('nav').animate({ 'left': '0px' }, 'slow');
20
- $('body').animate({ 'margin-left': '298px' }, 'slow');
20
+ $('body').animate({ 'padding-left': '360px' }, 'slow');
21
21
  }
22
22
  });
23
23
  </script>
data/lib/isodoc/css.rb CHANGED
@@ -90,16 +90,14 @@ module IsoDoc
90
90
 
91
91
  # stripwordcss if HTML stylesheet, !stripwordcss if DOC stylesheet
92
92
  def generate_css(filename, stripwordcss)
93
- return nil if filename.nil?
94
-
93
+ filename.nil? and return nil
95
94
  filename = precompiled_style_or_original(filename)
96
95
  stylesheet = File.read(filename, encoding: "UTF-8")
97
96
  stylesheet = populate_template(stylesheet, :word)
98
97
  stylesheet.gsub!(/(\s|\{)mso-[^:]+:[^;]+;/m, "\\1") if stripwordcss
99
98
  stylesheet.gsub!(/--/, "-DOUBLE_HYPHEN_ESCAPE-") unless stripwordcss
100
- if File.extname(filename) == ".scss"
99
+ File.extname(filename) == ".scss" and
101
100
  stylesheet = convert_scss(filename, stylesheet, stripwordcss)
102
- end
103
101
  Tempfile.open([File.basename(filename, ".*"), "css"],
104
102
  mode: File::BINARY | File::SHARE_DELETE,
105
103
  encoding: "utf-8") do |f|
@@ -161,8 +161,7 @@ module IsoDoc
161
161
  def quote_attribution(node, out)
162
162
  author = node.at(ns("./author"))
163
163
  source = node.at(ns("./source"))
164
- return if author.nil? && source.nil?
165
-
164
+ author.nil? && source.nil? and return
166
165
  out.p class: "QuoteAttribution" do |p|
167
166
  p << "&#x2014; #{author.text}" if author
168
167
  p << ", " if author && source
@@ -206,6 +205,18 @@ module IsoDoc
206
205
  end
207
206
  end
208
207
 
208
+ def cross_align_parse(node, out)
209
+ out.table do |t|
210
+ t.tbody do |b|
211
+ node.xpath(ns("./align-cell")).each do |c|
212
+ b.td do |td|
213
+ c.children.each { |n| parse(n, td) }
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end
219
+
209
220
  def columnbreak_parse(node, out); end
210
221
  end
211
222
  end
@@ -51,24 +51,31 @@ module IsoDoc
51
51
 
52
52
  # returns [metanorma, non-metanorma, DOI/ISSN/ISBN] identifiers
53
53
  def bibitem_ref_code(bib)
54
+ id, id1, id2, id3 = bibitem_ref_code_prep(bib)
55
+ id || id1 || id2 || id3 and return [id, id1, id2, id3]
56
+ bib["suppress_identifier"] == "true" and return [nil, nil, nil, nil]
57
+ [nil, no_identifier(bib), nil, nil]
58
+ end
59
+
60
+ def bibitem_ref_code_prep(bib)
54
61
  id = bib.at(ns("./docidentifier[@type = 'metanorma']"))
55
62
  id1 = pref_ref_code(bib)
56
63
  id2 = bib.at(ns("./docidentifier[#{SKIP_DOCID}]"))
57
64
  id3 = bib.at(ns("./docidentifier[@type = 'metanorma-ordinal']"))
58
- return [id, id1, id2, id3] if id || id1 || id2 || id3
59
- return [nil, nil, nil, nil] if bib["suppress_identifier"] == "true"
65
+ [id, id1, id2, id3]
66
+ end
60
67
 
68
+ def no_identifier(bib)
69
+ @i18n.no_identifier or return nil
61
70
  id = Nokogiri::XML::Node.new("docidentifier", bib.document)
62
- id << "(NO ID)"
63
- [nil, id, nil, nil]
71
+ id << @i18n.no_identifier
72
+ id
64
73
  end
65
74
 
66
75
  def bracket_if_num(num)
67
- return nil if num.nil?
68
-
76
+ num.nil? and return nil
69
77
  num = num.text.sub(/^\[/, "").sub(/\]$/, "")
70
- return "[#{num}]" if /^\d+$/.match?(num)
71
-
78
+ /^\d+$/.match?(num) and return "[#{num}]"
72
79
  num
73
80
  end
74
81
 
@@ -18,6 +18,14 @@ module IsoDoc
18
18
  end
19
19
  end
20
20
 
21
+ def freestanding_title(node, out)
22
+ parents = node.ancestors("clause, annex, terms, references, " \
23
+ "definitions, acknowledgements, introduction, " \
24
+ "foreword")
25
+ clause_parse_title(parents.empty? ? node : parents.first,
26
+ out, node, out)
27
+ end
28
+
21
29
  # used for subclauses
22
30
  def clause_parse_title(node, div, title, out, header_class = {})
23
31
  return if title.nil?
@@ -153,6 +153,12 @@ module IsoDoc
153
153
  @meta.get
154
154
  end
155
155
 
156
+ def cross_align(isoxml, out)
157
+ isoxml.xpath(ns("//cross-align")).each do |c|
158
+ parse(c, out)
159
+ end
160
+ end
161
+
156
162
  def boilerplate(node, out)
157
163
  @bare and return
158
164
  boilerplate = node.at(ns("//boilerplate")) or return
@@ -249,9 +255,11 @@ module IsoDoc
249
255
  when "option" then option_parse(node, out)
250
256
  when "textarea" then textarea_parse(node, out)
251
257
  when "toc" then toc_parse(node, out)
258
+ when "title" then freestanding_title(node, out) # not inside clause
252
259
  when "variant-title" then variant_title(node, out)
253
260
  when "span" then span_parse(node, out)
254
261
  when "location" then location_parse(node, out)
262
+ when "cross-align" then cross_align_parse(node, out)
255
263
  when "columnbreak" then columnbreak_parse(node, out)
256
264
  when "ruby" then ruby_parse(node, out)
257
265
  when "rt" then rt_parse(node, out)
@@ -21,21 +21,85 @@ module IsoDoc
21
21
  # TwitterCldr::DataReaders::NumberDataReader.new(locale).symbols
22
22
  def localize_maths(node, locale)
23
23
  node.xpath(".//m:mn", MATHML).each do |x|
24
- x.children = @numfmt
25
- .localized_number(x.text, locale: locale,
26
- precision: num_precision(x.text))
24
+ x.children =
25
+ if fmt = x["data-metanorma-numberformat"]
26
+ x.delete("data-metanorma-numberformat")
27
+ explicit_number_formatter(x, locale, fmt)
28
+ else implicit_number_formatter(x, locale)
29
+ end
27
30
  rescue ArgumentError
31
+ rescue StandardError, RuntimeError => e
32
+ warn "Failure to localise MathML/mn\n#{node.parent.to_xml}\n#{e}"
28
33
  end
29
34
  end
30
35
 
36
+ def normalise_number(num)
37
+ n = BigDecimal(num).to_s("F")
38
+ /\.\d/.match?(num) or n.sub!(/\.\d+$/, "")
39
+ n
40
+ end
41
+
42
+ def implicit_number_formatter(num, locale)
43
+ fmt = { significant: num_totaldigits(num.text) }.compact
44
+ n = normalise_number(num.text)
45
+ @numfmt.localized_number(n, locale:, format: fmt,
46
+ precision: num_precision(num.text))
47
+ end
48
+
49
+ def numberformat_extract(options)
50
+ options.gsub!(/([a-z_]+)='/, %('\\1=))
51
+ CSV.parse_line(options, quote_char: "'").each_with_object({}) do |x, acc|
52
+ m = /^(.+?)=(.+)?$/.match(x) or next
53
+ acc[m[1].to_sym] = m[2].sub(/^(["'])(.+)\1$/, "\\2")
54
+ end
55
+ end
56
+
57
+ def numberformat_type(ret)
58
+ %i(precision significant digit_count group_digits fraction_group_digits)
59
+ .each do |i|
60
+ ret[i] &&= ret[i].to_i
61
+ end
62
+ %i(notation exponent_sign locale).each do |i|
63
+ ret[i] &&= ret[i].to_sym
64
+ end
65
+ ret
66
+ end
67
+
68
+ def explicit_number_formatter(num, locale, options)
69
+ ret = numberformat_type(numberformat_extract(options))
70
+ l = ret[:locale] || locale
71
+ precision, symbols, significant = explicit_number_formatter_cfg(num, ret)
72
+ n = normalise_number(num.text)
73
+ Plurimath::NumberFormatter.new(l)
74
+ .localized_number(n, precision:,
75
+ format: symbols.merge(significant:))
76
+ end
77
+
78
+ def explicit_number_formatter_cfg(num, fmt)
79
+ symbols = twitter_cldr_localiser_symbols.dup.merge(fmt)
80
+ precision = symbols[:precision] || num_precision(num.text)
81
+ signif = symbols[:significant]
82
+ (symbols.keys & %i(precision digit_count)).empty? and
83
+ signif ||= num_totaldigits(num.text)
84
+ [precision, symbols, signif]
85
+ end
86
+
31
87
  def num_precision(num)
32
- precision = 0
33
- /\./.match?(num) and precision =
34
- twitter_cldr_localiser_symbols[:precision] ||
35
- num.sub(/^.*\./, "").size
88
+ precision = nil
89
+ /\.(?!\d+e)/.match?(num) and
90
+ precision = twitter_cldr_localiser_symbols[:precision] ||
91
+ num.sub(/^.*\./, "").size
36
92
  precision
37
93
  end
38
94
 
95
+ def num_totaldigits(num)
96
+ totaldigits = nil
97
+ /\.(?=\d+e)/.match?(num) and
98
+ totaldigits = twitter_cldr_localiser_symbols[:significant] ||
99
+ num.sub(/^0\./, ".").sub(/^.*\./, "").sub(/e.*$/, "").size
100
+ totaldigits
101
+ end
102
+
39
103
  def twitter_cldr_localiser_symbols
40
104
  {}
41
105
  end
@@ -44,6 +108,7 @@ module IsoDoc
44
108
  @suppressasciimathdup || node.parent.at(ns("./asciimath")) and return
45
109
  math = node.to_xml.gsub(/ xmlns=["'][^"']+["']/, "")
46
110
  .gsub(%r{<[^:/>]+:}, "<").gsub(%r{</[^:/>]+:}, "</")
111
+ .gsub(%r{ data-metanorma-numberformat="[^"]+"}, "")
47
112
  ret = Plurimath::Math.parse(math, "mathml").to_asciimath
48
113
  node.next = "<asciimath>#{@c.encode(ret, :basic)}</asciimath>"
49
114
  rescue StandardError => e
@@ -51,7 +116,8 @@ module IsoDoc
51
116
  end
52
117
 
53
118
  def maths_just_numeral(node)
54
- mn = node.at(".//m:mn", MATHML).children
119
+ mn = node.at(".//m:mn", MATHML).children.text
120
+ .sub(/\^([0-9+-]+)$/, "<sup>\\1</sup>")
55
121
  if node.parent.name == "stem"
56
122
  node.parent.replace(mn)
57
123
  else
@@ -77,11 +143,24 @@ module IsoDoc
77
143
  OUTPUT
78
144
  end
79
145
 
146
+ # convert any Ascii superscripts to correct(ish) MathML
147
+ # Not bothering to match times, base of 1.0 x 10^-20, just ^-20
148
+ def mn_to_msup(node)
149
+ node.xpath(".//m:mn", MATHML).each do |n|
150
+ m = %r{^(.+)\^([0-9+-]+)$}.match(n.text) or next
151
+ n.replace("<msup><mn>#{m[1]}</mn><mn>#{m[2]}</mn></msup>")
152
+ end
153
+ end
154
+
80
155
  def mathml_number(node, locale)
81
156
  justnumeral = numeric_mathml?(node)
82
157
  justnumeral or asciimath_dup(node)
83
158
  localize_maths(node, locale)
84
- justnumeral and maths_just_numeral(node)
159
+ if justnumeral
160
+ maths_just_numeral(node)
161
+ else
162
+ mn_to_msup(node)
163
+ end
85
164
  end
86
165
 
87
166
  def numeric_mathml?(node)
@@ -13,15 +13,21 @@ module IsoDoc
13
13
 
14
14
  def move_norm_ref_to_sections(docxml)
15
15
  docxml.at(ns(@xrefs.klass.norm_ref_xpath)) or return
16
- s = docxml.at(ns("//sections")) ||
17
- docxml.at(ns("//preface"))&.after("<sections/>")&.next_element ||
18
- docxml.at(ns("//annex | //bibliography"))&.before("<sections/>")
19
- &.previous_element or return
16
+ s = move_norm_ref_to_sections_insert_pt(docxml) or return
20
17
  docxml.xpath(ns(@xrefs.klass.norm_ref_xpath)).each do |r|
18
+ r.at("./ancestor::xmlns:bibliography") or next
21
19
  s << r.remove
22
20
  end
23
21
  end
24
22
 
23
+ def move_norm_ref_to_sections_insert_pt(docxml)
24
+ s = docxml.at(ns("//sections")) and return s
25
+ s = docxml.at(ns("//preface")) and
26
+ return s.after("<sections/>").next_element
27
+ docxml.at(ns("//annex | //bibliography"))&.before("<sections/>")
28
+ &.previous_element
29
+ end
30
+
25
31
  def hidden_items(docxml)
26
32
  docxml.xpath(ns("//references[bibitem/@hidden = 'true']")).each do |x|
27
33
  x.at(ns("./bibitem[not(@hidden = 'true')]")) and next
@@ -20,7 +20,7 @@ module IsoDoc
20
20
 
21
21
  def convert1(docxml, filename, dir)
22
22
  @outputdir = dir
23
- @outputfile = filename
23
+ @outputfile = Pathname.new(filename).basename.to_s
24
24
  docid_prefixes(docxml) # feeds @xrefs.parse citation processing
25
25
  @xrefs.parse docxml
26
26
  @xrefs.klass.meta = @meta
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "2.10.4".freeze
2
+ VERSION = "2.10.6".freeze
3
3
  end
@@ -29,9 +29,9 @@ module IsoDoc
29
29
  j = 0
30
30
  clause.xpath(ns(self.class::FIGURE_NO_CLASS)).noblank.each do |t|
31
31
  j = subfigure_increment(j, c, t)
32
- sequential_figure_body(j, c, t, "figure", container: container)
32
+ sequential_figure_body(j, c, t, "figure", container:)
33
33
  end
34
- sequential_figure_class_names(clause, container: container)
34
+ sequential_figure_class_names(clause, container:)
35
35
  end
36
36
 
37
37
  def sequential_figure_class_names(clause, container: false)
@@ -42,13 +42,13 @@ module IsoDoc
42
42
  c[t["class"]] ||= Counter.new
43
43
  j = subfigure_increment(j, c[t["class"]], t)
44
44
  sequential_figure_body(j, c[t["class"]], t, t["class"],
45
- container: container)
45
+ container:)
46
46
  end
47
47
  end
48
48
 
49
49
  def subfigure_label(subfignum)
50
50
  subfignum.zero? and return ""
51
- "-#{subfignum}"
51
+ "#{hierfigsep}#{subfignum}"
52
52
  end
53
53
 
54
54
  def sequential_figure_body(subfig, counter, elem, klass, container: false)
@@ -100,8 +100,8 @@ module IsoDoc
100
100
  klass, label = reqt2class_label(t, m)
101
101
  id = c.increment(label, t).print
102
102
  sequential_permission_body(id, t, label, klass, m,
103
- container: container)
104
- sequential_permission_children(t, id, container: container)
103
+ container:)
104
+ sequential_permission_children(t, id, container:)
105
105
  end
106
106
  end
107
107
 
@@ -112,12 +112,13 @@ module IsoDoc
112
112
  klass, label = reqt2class_nested_label(t, m)
113
113
  id = "#{lbl}#{hierfigsep}#{c.increment(label, t).print}"
114
114
  sequential_permission_body(id, t, label, klass, m,
115
- container: container)
116
- sequential_permission_children(t, id, container: container)
115
+ container:)
116
+ sequential_permission_children(t, id, container:)
117
117
  end
118
118
  end
119
119
 
120
- def sequential_permission_body(id, elem, label, klass, model, container: false)
120
+ def sequential_permission_body(id, elem, label, klass, model,
121
+ container: false)
121
122
  @anchors[elem["id"]] = model.postprocess_anchor_struct(
122
123
  elem, anchor_struct(id, elem,
123
124
  label, klass, elem["unnumbered"])
@@ -146,10 +147,10 @@ module IsoDoc
146
147
 
147
148
  # container makes numbering be prefixed with the parent clause reference
148
149
  def sequential_asset_names(clause, container: false)
149
- sequential_table_names(clause, container: container)
150
- sequential_figure_names(clause, container: container)
151
- sequential_formula_names(clause, container: container)
152
- sequential_permission_names(clause, container: container)
150
+ sequential_table_names(clause, container:)
151
+ sequential_figure_names(clause, container:)
152
+ sequential_formula_names(clause, container:)
153
+ sequential_permission_names(clause, container:)
153
154
  end
154
155
 
155
156
  def hierarchical_figure_names(clause, num)
@@ -19,7 +19,8 @@ module IsoDoc
19
19
 
20
20
  SECTIONS_XPATH =
21
21
  "//foreword | //introduction | //acknowledgements | " \
22
- "//preface/terms | preface/definitions | preface/references | " \
22
+ "//preface/abstract | " \
23
+ "//preface/terms | //preface/definitions | //preface/references | " \
23
24
  "//preface/clause | //sections/terms | //annex | " \
24
25
  "//sections/clause | //sections/definitions | " \
25
26
  "//bibliography/references | //bibliography/clause".freeze
@@ -34,8 +35,8 @@ module IsoDoc
34
35
  "./xmlns:X".gsub("X", asset)
35
36
  end
36
37
 
37
- CHILD_SECTIONS = "./clause | ./appendix | ./terms | ./definitions | " \
38
- "./references".freeze
38
+ CHILD_SECTIONS = "./clause | ./appendix | ./terms | ./definitions | " \
39
+ "./references".freeze
39
40
  end
40
41
  end
41
42
  end
@@ -75,6 +75,7 @@ modified: معدلة
75
75
  adapted: تكيف
76
76
  deprecated: مهمل
77
77
  source: مصدر
78
+ no_identifier: (لا يوجد معرف)
78
79
  and: و
79
80
  all_parts: كل الأجزاء
80
81
  edition_ordinal: "ﺎﻠﻄﺒﻋﺓ؜ {{ var1 | ordinal_word: 'edition', '' }}"
@@ -88,6 +88,7 @@ adapted: angepasst
88
88
  deprecated: VERALTET
89
89
  source: QUELLE
90
90
  and: und
91
+ no_identifier: (KEIN KENNUNG)
91
92
  all_parts: Alle Teile
92
93
  edition_ordinal: "{{ var1 | ordinal_word: 'edition', '' }} Auflage"
93
94
  edition: Auflage
@@ -68,6 +68,7 @@ requirement: Requirement
68
68
  recommendation: Recommendation
69
69
  permission: Permission
70
70
  box: Box
71
+ no_identifier: (NO ID)
71
72
  # Modspec
72
73
  recommendationtest: Recommendation test
73
74
  requirementtest: Requirement test
@@ -86,6 +86,7 @@ adapted: adaptado
86
86
  deprecated: OBSOLETO
87
87
  source: FUENTE
88
88
  and: y
89
+ no_identifier: (SIN IDENTIFICADOR)
89
90
  all_parts: Todas las partes
90
91
  edition_ordinal: "{{ var1 | ordinal_word: 'edition', '' }} edición"
91
92
  edition: edición
@@ -85,6 +85,7 @@ source: SOURCE
85
85
  edition: édition
86
86
  version: version
87
87
  and: et
88
+ no_identifier: (PAS D'IDENTIFIANT)
88
89
  all_parts: toutes les parties
89
90
  edition_ordinal: "{{ var1 | ordinal_word: 'edition', '' }} édition"
90
91
  edition: édition
@@ -88,6 +88,7 @@ adapted: 適合しました
88
88
  deprecated: 推奨しない用語
89
89
  source: 出典
90
90
  and: and
91
+ no_identifier: (識別子なし)
91
92
  all_parts: 規格群
92
93
  edition_ordinal: "第{{ var1 }}版"
93
94
  edition: 版
@@ -153,6 +153,7 @@ adapted: адаптированный
153
153
  deprecated: НЕ РЕКОМЕНДУЕТСЯ
154
154
  source: ИСТОЧНИК
155
155
  and: и
156
+ no_identifier: (БЕЗ ИДЕНТИФИКАТОРА)
156
157
  all_parts: Все части
157
158
  edition_ordinal: "{{ var1 | ordinal_word: 'edition', '' }} издание"
158
159
  edition: издание
@@ -77,6 +77,7 @@ adapted: 改编
77
77
  deprecated: 被取代
78
78
  source: 定义
79
79
  and: 和
80
+ no_identifier: (无标识符)
80
81
  all_parts: 所有部分
81
82
  edition_ordinal: "第{{ var1 | ordinal_word: '', '' }}版"
82
83
  edition: 版
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isodoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.4
4
+ version: 2.10.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: 2024-06-17 00:00:00.000000000 Z
11
+ date: 2024-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: base64
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bigdecimal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: html2doc
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +164,20 @@ dependencies:
136
164
  - - ">="
137
165
  - !ruby/object:Gem::Version
138
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: bigdecimal
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
139
181
  - !ruby/object:Gem::Dependency
140
182
  name: debug
141
183
  requirement: !ruby/object:Gem::Requirement
@@ -418,7 +460,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
418
460
  requirements:
419
461
  - - ">="
420
462
  - !ruby/object:Gem::Version
421
- version: 2.7.0
463
+ version: 3.1.0
422
464
  required_rubygems_version: !ruby/object:Gem::Requirement
423
465
  requirements:
424
466
  - - ">="