isodoc 3.1.0 → 3.1.2

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/isodoc.gemspec +3 -12
  3. data/lib/isodoc/common.rb +2 -0
  4. data/lib/isodoc/css.rb +36 -23
  5. data/lib/isodoc/function/blocks.rb +12 -0
  6. data/lib/isodoc/function/cleanup.rb +4 -12
  7. data/lib/isodoc/function/footnotes.rb +57 -0
  8. data/lib/isodoc/function/inline.rb +10 -6
  9. data/lib/isodoc/function/section.rb +7 -0
  10. data/lib/isodoc/function/setup.rb +64 -0
  11. data/lib/isodoc/function/table.rb +2 -0
  12. data/lib/isodoc/function/to_word_html.rb +5 -57
  13. data/lib/isodoc/function/utils.rb +4 -7
  14. data/lib/isodoc/gem_tasks.rb +16 -16
  15. data/lib/isodoc/headlesshtml_convert.rb +0 -2
  16. data/lib/isodoc/html_convert.rb +0 -2
  17. data/lib/isodoc/html_function/postprocess.rb +2 -1
  18. data/lib/isodoc/html_function/postprocess_footnotes.rb +2 -1
  19. data/lib/isodoc/pdf_convert.rb +0 -2
  20. data/lib/isodoc/presentation_function/block.rb +21 -25
  21. data/lib/isodoc/presentation_function/concepts.rb +7 -8
  22. data/lib/isodoc/presentation_function/erefs.rb +2 -3
  23. data/lib/isodoc/presentation_function/footnotes.rb +140 -0
  24. data/lib/isodoc/presentation_function/image.rb +0 -18
  25. data/lib/isodoc/presentation_function/inline.rb +11 -13
  26. data/lib/isodoc/presentation_function/refs.rb +9 -4
  27. data/lib/isodoc/presentation_function/sourcecode.rb +2 -19
  28. data/lib/isodoc/presentation_xml_convert.rb +3 -1
  29. data/lib/isodoc/version.rb +1 -1
  30. data/lib/isodoc/word_function/body.rb +5 -3
  31. data/lib/isodoc/word_function/footnotes.rb +57 -68
  32. data/lib/isodoc/word_function/postprocess.rb +6 -2
  33. data/lib/isodoc/xref/xref_gen.rb +1 -9
  34. data/lib/isodoc/xref/xref_gen_seq.rb +47 -92
  35. data/lib/isodoc/xref/xref_util.rb +49 -0
  36. metadata +36 -6
  37. data/lib/isodoc/html_function/footnotes.rb +0 -92
@@ -10,75 +10,67 @@ module IsoDoc
10
10
  sprintf "%09d", ret
11
11
  end
12
12
 
13
- def footnotes(div)
14
- return if @footnotes.empty?
15
-
16
- @footnotes.each { |fn| div.parent << fn }
17
- end
18
-
19
- def make_table_footnote_link(out, fnid, fnref)
13
+ def make_table_footnote_link(out, fnid, node)
20
14
  attrs = { href: "##{fnid}", class: "TableFootnoteRef" }
15
+ sup = node.at(ns("./sup")) and sup.replace(sup.children)
21
16
  out.a **attrs do |a|
22
- a << fnref
17
+ children_parse(node, a)
23
18
  end
24
19
  end
25
20
 
26
- def make_table_footnote_target(out, fnid, fnref)
27
- attrs = { id: fnid, class: "TableFootnoteRef" }
28
- out.span do |s|
29
- out.span **attrs do |a|
30
- a << fnref
31
- end
32
- insert_tab(s, 1)
21
+ def fmt_fn_body_parse(node, out)
22
+ node.at(ns(".//fmt-fn-label"))&.remove
23
+ aside = node.parent.name == "fmt-footnote-container"
24
+ tag = aside ? "aside" : "div"
25
+ out.send tag, id: "ftn#{node['reference']}" do |div|
26
+ node.children.each { |n| parse(n, div) }
33
27
  end
34
28
  end
35
29
 
36
- def make_table_footnote_text(node, fnid, fnref)
37
- attrs = { id: "ftn#{fnid}" }
38
- noko do |xml|
39
- xml.div **attr_code(attrs) do |div|
40
- make_table_footnote_target(div, fnid, fnref)
41
- node.children.each { |n| parse(n, div) }
42
- end
43
- end.join("\n")
44
- end
45
-
46
- def make_generic_footnote_text(node, fnid)
47
- noko do |xml|
48
- xml.aside id: "ftn#{fnid}" do |div|
49
- node.children.each { |n| parse(n, div) }
50
- end
51
- end.join("\n")
52
- end
53
-
54
- def get_table_ancestor_id(node)
55
- table = node.ancestors("table") || node.ancestors("figure")
56
- return UUIDTools::UUID.random_create.to_s if table.empty?
57
-
58
- table.last["id"]
30
+ # dupe to HTML
31
+ def get_table_ancestor_id(node)
32
+ table = node.ancestors("table")
33
+ table.empty? and table = node.ancestors("figure")
34
+ table.empty? and return [nil, UUIDTools::UUID.random_create.to_s]
35
+ [table.last, table.last["id"]]
59
36
  end
60
37
 
38
+ # dupe to HTML
61
39
  def table_footnote_parse(node, out)
62
40
  fn = node["reference"] || UUIDTools::UUID.random_create.to_s
63
- tid = get_table_ancestor_id(node)
64
- make_table_footnote_link(out, tid + fn, fn)
41
+ table, tid = get_table_ancestor_id(node)
42
+ make_table_footnote_link(out, tid + fn, node.at(ns("./fmt-fn-label")))
65
43
  # do not output footnote text if we have already seen it for this table
66
44
  return if @seen_footnote.include?(tid + fn)
67
-
68
- @in_footnote = true
69
- out.aside { |a| a << make_table_footnote_text(node, tid + fn, fn) }
70
- @in_footnote = false
45
+ update_table_fn_body_ref(node, table, tid + fn)
71
46
  @seen_footnote << (tid + fn)
72
47
  end
73
48
 
74
- def seen_footnote_parse(_node, out, footnote)
75
- out.span style: "mso-element:field-begin"
76
- out << " NOTEREF _Ref#{@fn_bookmarks[footnote]} \\f \\h"
77
- out.span style: "mso-element:field-separator"
78
- out.span class: "MsoFootnoteReference" do |s|
79
- s << footnote
49
+ # TODO merge with HTML
50
+ def update_table_fn_body_ref(fnote, table, reference)
51
+ fnbody = table.at(ns(".//fmt-fn-body[@id = '#{fnote['target']}']")) or return
52
+ fnbody["reference"] = reference
53
+ sup = fnbody.at(ns(".//fmt-fn-label/sup")) and sup.replace(sup.children)
54
+ fnbody.xpath(ns(".//fmt-fn-label")).each do |s|
55
+ s["class"] = "TableFootnoteRef"
56
+ s.name = "span"
57
+ d = s.at(ns("./span[@class = 'fmt-caption-delim']")) and
58
+ s.next = d
59
+ end
60
+ end
61
+
62
+ def seen_footnote_parse(node, out, footnote)
63
+ f = node.at(ns("./fmt-fn-label"))
64
+ sup = f.at(ns(".//sup")) and sup.replace(sup.children)
65
+ s = f.at(ns(".//semx[@source = '#{node['id']}']"))
66
+
67
+ semx = <<~SPAN.strip
68
+ <span style="mso-element:field-begin"/> NOTEREF _Ref#{@fn_bookmarks[footnote]} \\f \\h<span style="mso-element:field-separator"/>#{footnote}<span style="mso-element:field-end"/>
69
+ SPAN
70
+ s.replace(semx)
71
+ out.span class: "MsoFootnoteReference" do |fn|
72
+ children_parse(f, fn)
80
73
  end
81
- out.span style: "mso-element:field-end"
82
74
  end
83
75
 
84
76
  def footnote_parse(node, out)
@@ -89,26 +81,23 @@ module IsoDoc
89
81
  return seen_footnote_parse(node, out, fn) if @seen_footnote.include?(fn)
90
82
 
91
83
  @fn_bookmarks[fn] = bookmarkid
92
- out.span style: "mso-bookmark:_Ref#{@fn_bookmarks[fn]}" do |s|
93
- s.a class: "FootnoteRef", "epub:type": "footnote",
94
- href: "#ftn#{fn}" do |a|
95
- a.sup { |sup| sup << fn }
96
- end
84
+ f = node.at(ns("./fmt-fn-label"))
85
+ sup = f.at(ns(".//sup")) and sup.replace(sup.children)
86
+ if semx = f.at(ns(".//semx[@element = 'autonum']"))
87
+ semx.name = "span"
88
+ semx["class"] = "FMT-PLACEHOLDER"
89
+ end
90
+ out.span style: "mso-bookmark:_Ref#{@fn_bookmarks[fn]}", class: "MsoFootnoteReference" do |s|
91
+ children_parse(f, out)
92
+ end
93
+ if semx = out.parent.at(".//span[@class = 'FMT-PLACEHOLDER']")
94
+ semx.name = "a"
95
+ semx["class"] = "FootnoteRef"
96
+ semx["epub:type"] = "footnote"
97
+ semx["href"] = "#ftn#{fn}"
97
98
  end
98
- @in_footnote = true
99
- @footnotes << make_generic_footnote_text(node, fn)
100
- @in_footnote = false
101
99
  @seen_footnote << fn
102
100
  end
103
-
104
- def make_footnote(node, footnote)
105
- return if @seen_footnote.include?(footnote)
106
-
107
- @in_footnote = true
108
- @footnotes << make_generic_footnote_text(node, footnote)
109
- @in_footnote = false
110
- @seen_footnote << footnote
111
- end
112
101
  end
113
102
  end
114
103
  end
@@ -63,7 +63,7 @@ module IsoDoc
63
63
  word_section_breaks(docxml)
64
64
  word_tab_clean(docxml)
65
65
  authority_cleanup(docxml)
66
- word_footnote_format(docxml)
66
+ #word_footnote_format(docxml)
67
67
  word_remove_empty_toc(docxml)
68
68
  word_remove_empty_sections(docxml)
69
69
  docxml
@@ -172,12 +172,16 @@ module IsoDoc
172
172
  end
173
173
  end
174
174
 
175
- def word_footnote_format(docxml)
175
+ # KILL
176
+ def word_footnote_formatx(docxml)
176
177
  # the content is in a[@epub:type = 'footnote']//sup, but in Word,
177
178
  # we need to inject content around the autonumbered footnote reference
178
179
  docxml.xpath("//a[@epub:type = 'footnote']").each do |x|
179
180
  footnote_reference_format(x)
180
181
  end
182
+ docxml.xpath("//span[@class = 'MsoFootnoteReference']").each do |x|
183
+ footnote_reference_format(x)
184
+ end
181
185
  docxml.xpath("//a[@class = 'TableFootnoteRef'] | " \
182
186
  "//span[@class = 'TableFootnoteRef']").each do |x|
183
187
  table_footnote_reference_format(x)
@@ -36,12 +36,6 @@ module IsoDoc
36
36
  end
37
37
  end
38
38
 
39
- def increment_label(elems, node, counter, increment: true)
40
- elems.size == 1 && !node["number"] and return ""
41
- counter.increment(node) if increment
42
- counter.print
43
- end
44
-
45
39
  def termnote_anchor_names(docxml)
46
40
  docxml.xpath(ns("//*[termnote]")).each do |t|
47
41
  c = Counter.new
@@ -240,8 +234,7 @@ refer_list)
240
234
  def bookmark_container(parent)
241
235
  if parent
242
236
  clause = parent.xpath(CLAUSE_ANCESTOR)&.last
243
- if clause["id"] == id
244
- nil
237
+ if clause["id"] == id then nil
245
238
  else
246
239
  @anchors.dig(clause["id"], :xref)
247
240
  end
@@ -251,7 +244,6 @@ refer_list)
251
244
  def bookmark_anchor_names(xml)
252
245
  xml.xpath(ns(".//bookmark")).noblank.each do |n|
253
246
  _parent, id = id_ancestor(n)
254
- # container = bookmark_container(parent)
255
247
  @anchors[n["id"]] = { type: "bookmark", label: nil, value: nil,
256
248
  xref: @anchors.dig(id, :xref) || "???",
257
249
  container: @anchors.dig(id, :container) }
@@ -1,20 +1,9 @@
1
1
  require_relative "../function/utils"
2
+ require_relative "xref_util"
2
3
 
3
4
  module IsoDoc
4
5
  module XrefGen
5
6
  module Blocks
6
- def hiersep
7
- "."
8
- end
9
-
10
- def hierfigsep
11
- "-"
12
- end
13
-
14
- def hierreqtsep
15
- "-"
16
- end
17
-
18
7
  def subfigure_increment(idx, counter, elem)
19
8
  if elem.parent.name == "figure" then idx += 1
20
9
  else
@@ -54,33 +43,11 @@ module IsoDoc
54
43
  end
55
44
  end
56
45
 
57
- def hier_separator(markup: false)
58
- h = hiersep
59
- h.blank? || !markup or h = delim_wrap(h)
60
- h
61
- end
62
-
63
46
  def subfigure_label(subfignum)
64
47
  subfignum.zero? and return
65
48
  subfignum.to_s
66
49
  end
67
50
 
68
- def subfigure_separator(markup: false)
69
- h = hierfigsep
70
- h.blank? || !markup or h = delim_wrap(h)
71
- h
72
- end
73
-
74
- def subreqt_separator(markup: false)
75
- h = hierreqtsep
76
- h.blank? || !markup or h = delim_wrap(h)
77
- h
78
- end
79
-
80
- def subfigure_delim
81
- ""
82
- end
83
-
84
51
  def figure_anchor(elem, sublabel, label, klass, container: false)
85
52
  if sublabel
86
53
  /<semx/.match?(label) or label = semx(elem.parent, label)
@@ -106,11 +73,11 @@ module IsoDoc
106
73
  )
107
74
  if elem["unnumbered"] != "true"
108
75
  x = "#{subfigure_separator(markup: true)}#{semx(elem, sublabel)}"
109
- @anchors[elem["id"]][:label] = "#{label}#{x}" # "#{semx(elem.parent, label)}#{x}"
76
+ @anchors[elem["id"]][:label] = "#{label}#{x}"
110
77
  @anchors[elem["id"]][:xref] = @anchors[elem.parent["id"]][:xref] + x +
111
78
  delim_wrap(subfigure_delim)
112
79
  x = @anchors[elem.parent["id"]][:container] and
113
- @anchors[elem["id"]][:container] = x
80
+ @anchors[elem["id"]][:container] = x
114
81
  end
115
82
  end
116
83
 
@@ -119,8 +86,8 @@ module IsoDoc
119
86
  clause.xpath(ns(".//table")).noblank.each do |t|
120
87
  # labelled_ancestor(t) and next
121
88
  @anchors[t["id"]] = anchor_struct(
122
- c.increment(t).print, t,
123
- @labels["table"], "table", { unnumb: t["unnumbered"], container: container }
89
+ c.increment(t).print, t, @labels["table"], "table",
90
+ { unnumb: t["unnumbered"], container: container }
124
91
  )
125
92
  end
126
93
  end
@@ -183,8 +150,9 @@ container: false)
183
150
  x = "#{subreqt_separator(markup: true)}#{semx(elem, id)}"
184
151
  @anchors[elem["id"]][:semx] = @anchors[elem.parent["id"]][:semx] + x
185
152
  @anchors[elem["id"]][:label] =
186
- "<span class='fmt-element-name'>#{label}</span> #{@anchors[elem["id"]][:semx]}"
187
- @anchors[elem["id"]][:xref] = "<span class='fmt-element-name'>#{label}</span> #{@anchors[elem["id"]][:semx]}"
153
+ "<span class='fmt-element-name'>#{label}</span> #{@anchors[elem['id']][:semx]}"
154
+ @anchors[elem["id"]][:xref] =
155
+ "<span class='fmt-element-name'>#{label}</span> #{@anchors[elem['id']][:semx]}"
188
156
  end
189
157
  model.permission_parts(elem, id, label, klass).each do |n|
190
158
  @anchors[n[:id]] = anchor_struct(n[:number], n[:elem], n[:label],
@@ -217,31 +185,19 @@ container: false)
217
185
  sequential_permission_names(clause, container:)
218
186
  end
219
187
 
220
- def nodeSet(clauses)
221
- case clauses
222
- when Nokogiri::XML::Node
223
- [clauses]
224
- when Nokogiri::XML::NodeSet
225
- clauses
226
- end
227
- end
228
-
229
188
  # these can take a NodeSet as argument; semx will point to members of the NodeSet,
230
189
  # but numbering will be consecutive
231
190
  def hierarchical_figure_names(clauses, num)
232
191
  c = Counter.new
233
192
  j = 0
234
193
  nodeSet(clauses).each do |clause|
235
- clause.xpath(ns(self.class::FIGURE_NO_CLASS)).noblank.each do |t|
236
- # labelled_ancestor(t, %w(figure)) and next
237
- j = subfigure_increment(j, c, t)
238
- sublabel = subfigure_label(j)
239
- # hierarchical_figure_body(num, j, c, t, "figure")
240
- #figure_anchor(t, sublabel, "#{num}#{hier_separator}#{c.print}", "figure")
241
- #require "debug"; binding.b
242
- figure_anchor(t, sublabel, hiersemx(clause, num, c, t), "figure")
243
- end
244
- hierarchical_figure_class_names(clause, num)
194
+ clause.xpath(ns(self.class::FIGURE_NO_CLASS)).noblank.each do |t|
195
+ # labelled_ancestor(t, %w(figure)) and next
196
+ j = subfigure_increment(j, c, t)
197
+ sublabel = subfigure_label(j)
198
+ figure_anchor(t, sublabel, hiersemx(clause, num, c, t), "figure")
199
+ end
200
+ hierarchical_figure_class_names(clause, num)
245
201
  end
246
202
  end
247
203
 
@@ -249,29 +205,27 @@ container: false)
249
205
  c = {}
250
206
  j = 0
251
207
  nodeSet(clauses).each do |clause|
252
- clause.xpath(ns(".//figure[@class][not(@class = 'pseudocode')]"))
253
- .noblank.each do |t|
254
- # labelled_ancestor(t, %w(figure)) and next
255
- c[t["class"]] ||= Counter.new
256
- j = subfigure_increment(j, c[t["class"]], t)
257
- sublabel = subfigure_label(j)
258
- # hierarchical_figure_body(num, j, c[t["class"]], t, t["class"])
259
- #figure_anchor(t, sublabel, "#{num}#{hier_separator}#{c[t['class']].print}", t["class"])
260
- figure_anchor(t, sublabel, hiersemx(clause, num, c[t["class"]], t), t["class"])
261
- end
208
+ clause.xpath(ns(".//figure[@class][not(@class = 'pseudocode')]"))
209
+ .noblank.each do |t|
210
+ # labelled_ancestor(t, %w(figure)) and next
211
+ c[t["class"]] ||= Counter.new
212
+ j = subfigure_increment(j, c[t["class"]], t)
213
+ sublabel = subfigure_label(j)
214
+ figure_anchor(t, sublabel, hiersemx(clause, num, c[t["class"]], t),
215
+ t["class"])
216
+ end
262
217
  end
263
218
  end
264
219
 
265
220
  def hierarchical_table_names(clauses, num)
266
221
  c = Counter.new
267
222
  nodeSet(clauses).each do |clause|
268
- clause.xpath(ns(".//table")).noblank.each do |t|
269
- # labelled_ancestor(t) and next
270
- @anchors[t["id"]] =
271
- #anchor_struct("#{num}#{hier_separator}#{c.increment(t).print}",
272
- anchor_struct(hiersemx(clause, num, c.increment(t), t),
273
- t, @labels["table"], "table", { unnumb: t["unnumbered"], container: false })
274
- end
223
+ clause.xpath(ns(".//table")).noblank.each do |t|
224
+ # labelled_ancestor(t) and next
225
+ @anchors[t["id"]] =
226
+ anchor_struct(hiersemx(clause, num, c.increment(t), t),
227
+ t, @labels["table"], "table", { unnumb: t["unnumbered"], container: false })
228
+ end
275
229
  end
276
230
  end
277
231
 
@@ -285,29 +239,30 @@ container: false)
285
239
  def hierarchical_formula_names(clauses, num)
286
240
  c = Counter.new
287
241
  nodeSet(clauses).each do |clause|
288
- clause.xpath(ns(".//formula")).noblank.each do |t|
289
- @anchors[t["id"]] = anchor_struct(
290
- #"#{num}#{hier_separator}#{c.increment(t).print}", t,
291
- hiersemx(clause, num, c.increment(t), t), t,
292
- t["inequality"] ? @labels["inequality"] : @labels["formula"],
293
- "formula", { unnumb: t["unnumbered"], container: false }
294
- )
295
- end
242
+ clause.xpath(ns(".//formula")).noblank.each do |t|
243
+ @anchors[t["id"]] = anchor_struct(
244
+ # "#{num}#{hier_separator}#{c.increment(t).print}", t,
245
+ hiersemx(clause, num, c.increment(t), t), t,
246
+ t["inequality"] ? @labels["inequality"] : @labels["formula"],
247
+ "formula", { unnumb: t["unnumbered"], container: false }
248
+ )
249
+ end
296
250
  end
297
251
  end
298
252
 
299
253
  def hierarchical_permission_names(clauses, num)
300
254
  c = ReqCounter.new
301
255
  nodeSet(clauses).each do |clause|
302
- clause.xpath(ns(FIRST_LVL_REQ)).noblank.each do |t|
303
- m = @reqt_models.model(t["model"])
304
- klass, label = reqt2class_label(t, m)
305
- #id = "#{num}#{hier_separator}#{c.increment(label, t).print}"
306
- id = hiersemx(clause, num, c.increment(label, t), t)
307
- sequential_permission_body(id, nil, t, label, klass, m, container: false)
308
- sequential_permission_children(t, id, klass, container: false)
256
+ clause.xpath(ns(FIRST_LVL_REQ)).noblank.each do |t|
257
+ m = @reqt_models.model(t["model"])
258
+ klass, label = reqt2class_label(t, m)
259
+ # id = "#{num}#{hier_separator}#{c.increment(label, t).print}"
260
+ id = hiersemx(clause, num, c.increment(label, t), t)
261
+ sequential_permission_body(id, nil, t, label, klass, m,
262
+ container: false)
263
+ sequential_permission_children(t, id, klass, container: false)
264
+ end
309
265
  end
310
- end
311
266
  end
312
267
  end
313
268
  end
@@ -23,6 +23,49 @@ module IsoDoc
23
23
  xpath.reject { |n| blank?(n["id"]) }
24
24
  end
25
25
 
26
+ def hiersep
27
+ "."
28
+ end
29
+
30
+ def hierfigsep
31
+ "-"
32
+ end
33
+
34
+ def hierreqtsep
35
+ "-"
36
+ end
37
+
38
+ def hier_separator(markup: false)
39
+ h = hiersep
40
+ h.blank? || !markup or h = delim_wrap(h)
41
+ h
42
+ end
43
+
44
+ def subfigure_separator(markup: false)
45
+ h = hierfigsep
46
+ h.blank? || !markup or h = delim_wrap(h)
47
+ h
48
+ end
49
+
50
+ def subreqt_separator(markup: false)
51
+ h = hierreqtsep
52
+ h.blank? || !markup or h = delim_wrap(h)
53
+ h
54
+ end
55
+
56
+ def subfigure_delim
57
+ ""
58
+ end
59
+
60
+ def nodeSet(clauses)
61
+ case clauses
62
+ when Nokogiri::XML::Node
63
+ [clauses]
64
+ when Nokogiri::XML::NodeSet
65
+ clauses
66
+ end
67
+ end
68
+
26
69
  SECTIONS_XPATH =
27
70
  "//foreword | //introduction | //acknowledgements | " \
28
71
  "//preface/abstract | " \
@@ -85,6 +128,12 @@ module IsoDoc
85
128
  label.blank? and return autonum
86
129
  l10n("<span class='fmt-element-name'>#{label}</span> #{autonum}")
87
130
  end
131
+
132
+ def increment_label(elems, node, counter, increment: true)
133
+ elems.size == 1 && !node["number"] and return ""
134
+ counter.increment(node) if increment
135
+ counter.print
136
+ end
88
137
  end
89
138
  end
90
139
  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: 3.1.0
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-04 00:00:00.000000000 Z
11
+ date: 2025-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: lutaml-model
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.6.0
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.6.0
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: bigdecimal
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -282,14 +296,28 @@ dependencies:
282
296
  requirements:
283
297
  - - "~>"
284
298
  - !ruby/object:Gem::Version
285
- version: 1.5.2
299
+ version: '1'
286
300
  type: :development
287
301
  prerelease: false
288
302
  version_requirements: !ruby/object:Gem::Requirement
289
303
  requirements:
290
304
  - - "~>"
291
305
  - !ruby/object:Gem::Version
292
- version: 1.5.2
306
+ version: '1'
307
+ - !ruby/object:Gem::Dependency
308
+ name: rubocop-performance
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
293
321
  - !ruby/object:Gem::Dependency
294
322
  name: sassc-embedded
295
323
  requirement: !ruby/object:Gem::Requirement
@@ -403,6 +431,7 @@ files:
403
431
  - lib/isodoc/function/blocks.rb
404
432
  - lib/isodoc/function/blocks_example_note.rb
405
433
  - lib/isodoc/function/cleanup.rb
434
+ - lib/isodoc/function/footnotes.rb
406
435
  - lib/isodoc/function/form.rb
407
436
  - lib/isodoc/function/inline.rb
408
437
  - lib/isodoc/function/inline_simple.rb
@@ -411,6 +440,7 @@ files:
411
440
  - lib/isodoc/function/reqt.rb
412
441
  - lib/isodoc/function/section.rb
413
442
  - lib/isodoc/function/section_titles.rb
443
+ - lib/isodoc/function/setup.rb
414
444
  - lib/isodoc/function/table.rb
415
445
  - lib/isodoc/function/terms.rb
416
446
  - lib/isodoc/function/to_word_html.rb
@@ -420,7 +450,6 @@ files:
420
450
  - lib/isodoc/html_convert.rb
421
451
  - lib/isodoc/html_function.rb
422
452
  - lib/isodoc/html_function/comments.rb
423
- - lib/isodoc/html_function/footnotes.rb
424
453
  - lib/isodoc/html_function/form.rb
425
454
  - lib/isodoc/html_function/html.rb
426
455
  - lib/isodoc/html_function/mathvariant_to_plain.rb
@@ -439,6 +468,7 @@ files:
439
468
  - lib/isodoc/presentation_function/concepts.rb
440
469
  - lib/isodoc/presentation_function/docid.rb
441
470
  - lib/isodoc/presentation_function/erefs.rb
471
+ - lib/isodoc/presentation_function/footnotes.rb
442
472
  - lib/isodoc/presentation_function/image.rb
443
473
  - lib/isodoc/presentation_function/index.rb
444
474
  - lib/isodoc/presentation_function/inline.rb
@@ -502,7 +532,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
502
532
  - !ruby/object:Gem::Version
503
533
  version: '0'
504
534
  requirements: []
505
- rubygems_version: 3.3.27
535
+ rubygems_version: 3.5.22
506
536
  signing_key:
507
537
  specification_version: 4
508
538
  summary: Convert documents in IsoDoc into Word and HTML in AsciiDoc.