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.
- checksums.yaml +4 -4
- data/isodoc.gemspec +3 -12
- data/lib/isodoc/common.rb +2 -0
- data/lib/isodoc/css.rb +36 -23
- data/lib/isodoc/function/blocks.rb +12 -0
- data/lib/isodoc/function/cleanup.rb +4 -12
- data/lib/isodoc/function/footnotes.rb +57 -0
- data/lib/isodoc/function/inline.rb +10 -6
- data/lib/isodoc/function/section.rb +7 -0
- data/lib/isodoc/function/setup.rb +64 -0
- data/lib/isodoc/function/table.rb +2 -0
- data/lib/isodoc/function/to_word_html.rb +5 -57
- data/lib/isodoc/function/utils.rb +4 -7
- data/lib/isodoc/gem_tasks.rb +16 -16
- data/lib/isodoc/headlesshtml_convert.rb +0 -2
- data/lib/isodoc/html_convert.rb +0 -2
- data/lib/isodoc/html_function/postprocess.rb +2 -1
- data/lib/isodoc/html_function/postprocess_footnotes.rb +2 -1
- data/lib/isodoc/pdf_convert.rb +0 -2
- data/lib/isodoc/presentation_function/block.rb +21 -25
- data/lib/isodoc/presentation_function/concepts.rb +7 -8
- data/lib/isodoc/presentation_function/erefs.rb +2 -3
- data/lib/isodoc/presentation_function/footnotes.rb +140 -0
- data/lib/isodoc/presentation_function/image.rb +0 -18
- data/lib/isodoc/presentation_function/inline.rb +11 -13
- data/lib/isodoc/presentation_function/refs.rb +9 -4
- data/lib/isodoc/presentation_function/sourcecode.rb +2 -19
- data/lib/isodoc/presentation_xml_convert.rb +3 -1
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +5 -3
- data/lib/isodoc/word_function/footnotes.rb +57 -68
- data/lib/isodoc/word_function/postprocess.rb +6 -2
- data/lib/isodoc/xref/xref_gen.rb +1 -9
- data/lib/isodoc/xref/xref_gen_seq.rb +47 -92
- data/lib/isodoc/xref/xref_util.rb +49 -0
- metadata +36 -6
- 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
|
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
|
17
|
+
children_parse(node, a)
|
23
18
|
end
|
24
19
|
end
|
25
20
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
-
|
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)
|
data/lib/isodoc/xref/xref_gen.rb
CHANGED
@@ -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}"
|
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
|
-
|
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
|
-
|
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[
|
187
|
-
@anchors[elem["id"]][:xref] =
|
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
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
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
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
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
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
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
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
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
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
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.
|
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-
|
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
|
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
|
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.
|
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.
|