isodoc 0.9.23 → 0.10.0
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/.travis.yml +4 -2
- data/Gemfile.lock +17 -22
- data/appveyor.yml +7 -2
- data/isodoc.gemspec +3 -3
- data/lib/isodoc/function/blocks.rb +22 -9
- data/lib/isodoc/function/inline.rb +13 -8
- data/lib/isodoc/function/references.rb +1 -1
- data/lib/isodoc/function/section.rb +13 -7
- data/lib/isodoc/function/table.rb +9 -4
- data/lib/isodoc/function/terms.rb +3 -2
- data/lib/isodoc/function/xref_gen.rb +75 -39
- data/lib/isodoc/html_function/html.rb +2 -2
- data/lib/isodoc/metadata.rb +9 -57
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +13 -0
- data/spec/isodoc/blocks_spec.rb +27 -7
- data/spec/isodoc/footnotes_spec.rb +6 -3
- data/spec/isodoc/metadata_spec.rb +16 -19
- data/spec/isodoc/ref_spec.rb +4 -1
- data/spec/isodoc/table_spec.rb +12 -0
- data/spec/isodoc/xref_spec.rb +146 -134
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01ea09cdb8f862493ac3faba65edeed830efbea957055ca689fc61e2d878e20f
|
4
|
+
data.tar.gz: b523e1a7821627a7ad098a1b777dfec1c63c5c46b3d263d05a9f1c67bfdf1405
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de9f3a9943ae506820164db1d009fa6541320879a8e9921c4509a94789a64b0568ce5211a1e6e9e02a861024a2bd733b34fca2fc1acca0c7ae4af34618d6878f
|
7
|
+
data.tar.gz: a698d0d759b6dd3b26ed9d325fdd894a244dd1130cd54a5dac1b216ff1bb0bb4f9719af8c0135f2d93f1e932eca5248a7adbad5ddb305109ed52297b0b450c47
|
data/.travis.yml
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# Auto-generated !!! Do not edit it manually
|
2
|
+
# use ci-master https://github.com/metanorma/metanorma-build-scripts
|
1
3
|
language: ruby
|
2
4
|
cache: bundler
|
3
5
|
os:
|
@@ -6,11 +8,11 @@ os:
|
|
6
8
|
rvm:
|
7
9
|
- 2.5
|
8
10
|
- 2.4
|
9
|
-
- 2.3
|
10
11
|
- ruby-head
|
11
|
-
before_install:
|
12
|
+
before_install:
|
12
13
|
- nvm install 8
|
13
14
|
- npm install -g puppeteer
|
15
|
+
- npm install
|
14
16
|
- gem install bundler -v 2.0.1
|
15
17
|
- bundle update
|
16
18
|
matrix:
|
data/Gemfile.lock
CHANGED
@@ -1,32 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
isodoc (0.
|
4
|
+
isodoc (0.10.0)
|
5
5
|
asciimath
|
6
|
-
html2doc (~> 0.8.
|
6
|
+
html2doc (~> 0.8.11)
|
7
7
|
htmlentities (~> 4.3.4)
|
8
8
|
liquid
|
9
9
|
metanorma (~> 0.3.0)
|
10
10
|
nokogiri (>= 1)
|
11
11
|
rake (~> 12.0)
|
12
12
|
roman-numerals
|
13
|
-
sassc (~>
|
13
|
+
sassc (~> 2)
|
14
14
|
thread_safe
|
15
15
|
uuidtools
|
16
16
|
|
17
17
|
GEM
|
18
18
|
remote: https://rubygems.org/
|
19
19
|
specs:
|
20
|
-
asciidoctor (2.0.
|
20
|
+
asciidoctor (2.0.10)
|
21
21
|
asciimath (1.0.8)
|
22
22
|
ast (2.4.0)
|
23
23
|
byebug (9.1.0)
|
24
24
|
coderay (1.1.2)
|
25
25
|
diff-lcs (1.3)
|
26
|
-
docile (1.3.
|
26
|
+
docile (1.3.2)
|
27
27
|
equivalent-xml (0.6.0)
|
28
28
|
nokogiri (>= 1.4.3)
|
29
|
-
ffi (1.
|
29
|
+
ffi (1.11.1)
|
30
30
|
formatador (0.2.5)
|
31
31
|
guard (2.15.0)
|
32
32
|
formatador (>= 0.2.4)
|
@@ -42,7 +42,7 @@ GEM
|
|
42
42
|
guard (~> 2.1)
|
43
43
|
guard-compat (~> 1.1)
|
44
44
|
rspec (>= 2.99.0, < 4.0)
|
45
|
-
html2doc (0.8.
|
45
|
+
html2doc (0.8.11)
|
46
46
|
asciimath (~> 1.0.7)
|
47
47
|
htmlentities (~> 4.3.4)
|
48
48
|
image_size
|
@@ -51,7 +51,7 @@ GEM
|
|
51
51
|
thread_safe
|
52
52
|
uuidtools
|
53
53
|
htmlentities (4.3.4)
|
54
|
-
image_size (2.0.
|
54
|
+
image_size (2.0.1)
|
55
55
|
json (2.2.0)
|
56
56
|
liquid (4.0.3)
|
57
57
|
listen (3.1.5)
|
@@ -90,15 +90,15 @@ GEM
|
|
90
90
|
rspec-core (~> 3.8.0)
|
91
91
|
rspec-expectations (~> 3.8.0)
|
92
92
|
rspec-mocks (~> 3.8.0)
|
93
|
-
rspec-core (3.8.
|
93
|
+
rspec-core (3.8.1)
|
94
94
|
rspec-support (~> 3.8.0)
|
95
|
-
rspec-expectations (3.8.
|
95
|
+
rspec-expectations (3.8.4)
|
96
96
|
diff-lcs (>= 1.2.0, < 2.0)
|
97
97
|
rspec-support (~> 3.8.0)
|
98
|
-
rspec-mocks (3.8.
|
98
|
+
rspec-mocks (3.8.1)
|
99
99
|
diff-lcs (>= 1.2.0, < 2.0)
|
100
100
|
rspec-support (~> 3.8.0)
|
101
|
-
rspec-support (3.8.
|
101
|
+
rspec-support (3.8.2)
|
102
102
|
rubocop (0.54.0)
|
103
103
|
parallel (~> 1.10)
|
104
104
|
parser (>= 2.5)
|
@@ -106,16 +106,11 @@ GEM
|
|
106
106
|
rainbow (>= 2.2.2, < 4.0)
|
107
107
|
ruby-progressbar (~> 1.7)
|
108
108
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
109
|
-
ruby-progressbar (1.10.
|
109
|
+
ruby-progressbar (1.10.1)
|
110
110
|
ruby_dep (1.5.0)
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
rb-fsevent (~> 0.9, >= 0.9.4)
|
115
|
-
rb-inotify (~> 0.9, >= 0.9.7)
|
116
|
-
sassc (1.12.1)
|
117
|
-
ffi (~> 1.9.6)
|
118
|
-
sass (>= 3.3.0)
|
111
|
+
sassc (2.0.1)
|
112
|
+
ffi (~> 1.9)
|
113
|
+
rake
|
119
114
|
shellany (0.0.1)
|
120
115
|
simplecov (0.16.1)
|
121
116
|
docile (~> 1.1)
|
@@ -125,7 +120,7 @@ GEM
|
|
125
120
|
thor (0.20.3)
|
126
121
|
thread_safe (0.3.6)
|
127
122
|
timecop (0.9.1)
|
128
|
-
unicode-display_width (1.
|
123
|
+
unicode-display_width (1.6.0)
|
129
124
|
uuidtools (2.1.5)
|
130
125
|
|
131
126
|
PLATFORMS
|
data/appveyor.yml
CHANGED
@@ -1,10 +1,14 @@
|
|
1
|
+
# Auto-generated !!! Do not edit it manually
|
2
|
+
# use ci-master https://github.com/metanorma/metanorma-build-scripts
|
1
3
|
version: '{build}'
|
2
4
|
|
5
|
+
cache:
|
6
|
+
- vendor/bundle
|
7
|
+
|
3
8
|
environment:
|
4
9
|
matrix:
|
5
10
|
- RUBY_VERSION: 25
|
6
11
|
- RUBY_VERSION: 24
|
7
|
-
- RUBY_VERSION: 23
|
8
12
|
- RUBY_VERSION: _trunk
|
9
13
|
|
10
14
|
matrix:
|
@@ -17,6 +21,8 @@ install:
|
|
17
21
|
|
18
22
|
build_script:
|
19
23
|
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
24
|
+
- set GIT_TERMINAL_PROMPT=0
|
25
|
+
- bundle config --local path vendor/bundle
|
20
26
|
- bundle update
|
21
27
|
- bundle install
|
22
28
|
|
@@ -27,4 +33,3 @@ before_test:
|
|
27
33
|
|
28
34
|
test_script:
|
29
35
|
- bundle exec rake
|
30
|
-
|
data/isodoc.gemspec
CHANGED
@@ -26,17 +26,17 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
spec.files = `git ls-files`.split("\n")
|
28
28
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
29
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
29
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
30
30
|
|
31
31
|
spec.add_dependency "asciimath"
|
32
32
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
33
33
|
spec.add_dependency "nokogiri", ">= 1"
|
34
34
|
spec.add_dependency "thread_safe"
|
35
35
|
spec.add_dependency "uuidtools"
|
36
|
-
spec.add_dependency "html2doc", "~> 0.8.
|
36
|
+
spec.add_dependency "html2doc", "~> 0.8.11"
|
37
37
|
spec.add_dependency "liquid"
|
38
38
|
spec.add_dependency "roman-numerals"
|
39
|
-
spec.add_dependency "sassc", "~>
|
39
|
+
spec.add_dependency "sassc", "~> 2"
|
40
40
|
spec.add_dependency "metanorma", "~> 0.3.0"
|
41
41
|
spec.add_dependency "rake", "~> 12.0"
|
42
42
|
|
@@ -44,11 +44,16 @@ module IsoDoc::Function
|
|
44
44
|
def figure_name_parse(node, div, name)
|
45
45
|
return if name.nil? && node.at(ns("./figure"))
|
46
46
|
div.p **{ class: "FigureTitle", align: "center" } do |p|
|
47
|
-
|
48
|
-
|
47
|
+
lbl = anchor(node['id'], :label, false)
|
48
|
+
lbl.nil? or p << l10n("#{@figure_lbl} #{lbl}")
|
49
|
+
name and !lbl.nil? and p << " — "
|
50
|
+
=begin
|
51
|
+
get_anchors[node['id']][:label].nil? or
|
52
|
+
p << l10n("#{@figure_lbl} #{get_anchors[node['id']][:label]}")
|
53
|
+
name and !get_anchors[node['id']][:label].nil? and
|
49
54
|
p << " — "
|
50
|
-
|
51
|
-
|
55
|
+
=end
|
56
|
+
name and name.children.each { |n| parse(n, div) }
|
52
57
|
end
|
53
58
|
end
|
54
59
|
|
@@ -73,7 +78,7 @@ module IsoDoc::Function
|
|
73
78
|
|
74
79
|
def example_label(node)
|
75
80
|
n = get_anchors[node["id"]]
|
76
|
-
return @example_lbl if n.nil? || n[:label].empty?
|
81
|
+
return @example_lbl if n.nil? || n[:label].nil? || n[:label].empty?
|
77
82
|
l10n("#{@example_lbl} #{n[:label]}")
|
78
83
|
end
|
79
84
|
|
@@ -118,7 +123,7 @@ module IsoDoc::Function
|
|
118
123
|
|
119
124
|
def sourcecode_name_parse(_node, div, name)
|
120
125
|
div.p **{ class: "SourceTitle", align: "center" } do |p|
|
121
|
-
|
126
|
+
name.children.each { |n| parse(n, p) }
|
122
127
|
end
|
123
128
|
end
|
124
129
|
|
@@ -187,8 +192,13 @@ module IsoDoc::Function
|
|
187
192
|
out.div **attr_code(id: node["id"], class: "formula") do |div|
|
188
193
|
div.p do |p|
|
189
194
|
parse(node.at(ns("./stem")), div)
|
190
|
-
|
191
|
-
|
195
|
+
lbl = anchor(node['id'], :label, false)
|
196
|
+
#unless get_anchors[node['id']][:label].nil?
|
197
|
+
unless lbl.nil?
|
198
|
+
insert_tab(div, 1)
|
199
|
+
#div << "(#{get_anchors[node['id']][:label]})"
|
200
|
+
div << "(#{lbl})"
|
201
|
+
end
|
192
202
|
end
|
193
203
|
end
|
194
204
|
end
|
@@ -266,7 +276,10 @@ module IsoDoc::Function
|
|
266
276
|
label = node.at(ns("./label"))
|
267
277
|
title = node.at(ns("./title"))
|
268
278
|
out.p **{ class: "AdmonitionTitle" } do |b|
|
269
|
-
|
279
|
+
lbl = anchor(node['id'], :label, false)
|
280
|
+
lbl.nil? or b << l10n("#{type} #{lbl}:")
|
281
|
+
#get_anchors[node['id']][:label].nil? or
|
282
|
+
#b << l10n("#{type} #{get_anchors[node['id']][:label]}:")
|
270
283
|
if label || title
|
271
284
|
b.br
|
272
285
|
label and label.children.each { |n| parse(n,b) }
|
@@ -23,20 +23,25 @@ module IsoDoc::Function
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def prefix_container(container, linkend, _target)
|
26
|
-
l10n(get_anchors[container][:xref] + ", " + linkend)
|
26
|
+
#l10n(get_anchors[container][:xref] + ", " + linkend)
|
27
|
+
l10n(anchor(container, :xref) + ", " + linkend)
|
27
28
|
end
|
28
29
|
|
29
30
|
def anchor_linkend(node, linkend)
|
30
|
-
if node["citeas"].nil? && node["bibitemid"]
|
31
|
-
get_anchors.has_key?(node["bibitemid"])
|
32
|
-
return get_anchors.dig(node["bibitemid"] ,:xref)
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
if node["citeas"].nil? && node["bibitemid"] #&&
|
32
|
+
#get_anchors.has_key?(node["bibitemid"])
|
33
|
+
#return get_anchors.dig(node["bibitemid"] ,:xref)
|
34
|
+
return anchor(node["bibitemid"] ,:xref) || "???"
|
35
|
+
#elsif node["target"] && get_anchors.has_key?(node["target"])
|
36
|
+
elsif node["target"] && !/.#./.match(node["target"])
|
37
|
+
#linkend = get_anchors[node["target"]][:xref]
|
38
|
+
linkend = anchor(node["target"], :xref)
|
39
|
+
#container = get_anchors[node["target"]][:container]
|
40
|
+
container = anchor(node["target"], :container, false)
|
36
41
|
(container && get_note_container_id(node) != container) &&
|
37
42
|
linkend = prefix_container(container, linkend, node["target"])
|
38
43
|
end
|
39
|
-
linkend
|
44
|
+
linkend || "???"
|
40
45
|
end
|
41
46
|
|
42
47
|
def get_linkend(node)
|
@@ -200,7 +200,7 @@ module IsoDoc::Function
|
|
200
200
|
prefix = ref.at(ns("./docidentifier/@type"))
|
201
201
|
# return ref_names(ref) unless docid
|
202
202
|
date = ref.at(ns("./date[@type = 'published']"))
|
203
|
-
allparts = ref.at(ns("./
|
203
|
+
allparts = ref.at(ns("./extent[@type='part'][referenceFrom='all']"))
|
204
204
|
reference = format_ref(docid_l10n(docid.text), prefix&.text, isopub, date, allparts)
|
205
205
|
@anchors[ref["id"]] = { xref: reference }
|
206
206
|
end
|
@@ -8,8 +8,10 @@ module IsoDoc::Function
|
|
8
8
|
title = c1&.content || ""
|
9
9
|
out.span **{ class: "zzMoveToFollowing" } do |s|
|
10
10
|
s.b do |b|
|
11
|
-
if get_anchors[node['id']][:label] && !@suppressheadingnumbers
|
12
|
-
|
11
|
+
#if get_anchors[node['id']][:label] && !@suppressheadingnumbers
|
12
|
+
if anchor(node['id'], :label, false) && !@suppressheadingnumbers
|
13
|
+
#b << "#{get_anchors[node['id']][:label]}#{clausedelim} "
|
14
|
+
b << "#{anchor(node['id'], :label)}#{clausedelim} "
|
13
15
|
end
|
14
16
|
b << "#{title} "
|
15
17
|
end
|
@@ -20,8 +22,10 @@ module IsoDoc::Function
|
|
20
22
|
if node["inline-header"] == "true"
|
21
23
|
inline_header_title(out, node, c1)
|
22
24
|
else
|
23
|
-
div.send "h#{get_anchors[node['id']][:level]}" do |h|
|
24
|
-
|
25
|
+
#div.send "h#{get_anchors[node['id']][:level]}" do |h|
|
26
|
+
div.send "h#{anchor(node['id'], :level) || '1'}" do |h|
|
27
|
+
#lbl = get_anchors[node['id']][:label]
|
28
|
+
lbl = anchor(node['id'], :label, false)
|
25
29
|
h << "#{lbl}#{clausedelim} " if lbl && !@suppressheadingnumbers
|
26
30
|
c1&.children&.each { |c2| parse(c2, h) }
|
27
31
|
end
|
@@ -56,7 +60,8 @@ module IsoDoc::Function
|
|
56
60
|
def clause(isoxml, out)
|
57
61
|
isoxml.xpath(ns(self.class::MIDDLE_CLAUSE)).each do |c|
|
58
62
|
out.div **attr_code(id: c["id"]) do |s|
|
59
|
-
clause_name(get_anchors[c['id']][:label],
|
63
|
+
#clause_name(get_anchors[c['id']][:label],
|
64
|
+
clause_name(anchor(c['id'], :label),
|
60
65
|
c&.at(ns("./title"))&.content, s, nil)
|
61
66
|
c.elements.reject { |c1| c1.name == "title" }.each do |c1|
|
62
67
|
parse(c1, s)
|
@@ -67,7 +72,8 @@ module IsoDoc::Function
|
|
67
72
|
|
68
73
|
def annex_name(annex, name, div)
|
69
74
|
div.h1 **{ class: "Annex" } do |t|
|
70
|
-
t << "#{get_anchors[annex['id']][:label]}<br/><br/>"
|
75
|
+
#t << "#{get_anchors[annex['id']][:label]}<br/><br/>"
|
76
|
+
t << "#{anchor(annex['id'], :label)}<br/><br/>"
|
71
77
|
t.b do |b|
|
72
78
|
name&.children&.each { |c2| parse(c2, b) }
|
73
79
|
end
|
@@ -121,7 +127,7 @@ module IsoDoc::Function
|
|
121
127
|
|
122
128
|
def term_defs_boilerplate_cont(src, term)
|
123
129
|
sources = sentence_join(src.map do |s|
|
124
|
-
"<a href=##{s["bibitemid"]}>#{
|
130
|
+
"<a href=##{s["bibitemid"]}>#{anchor(s["bibitemid"], :xref)}</a>"
|
125
131
|
end)
|
126
132
|
if src.empty? then @internal_terms_boilerplate
|
127
133
|
elsif term.nil? then external_terms_boilerplate(sources)
|
@@ -4,11 +4,16 @@ module IsoDoc::Function
|
|
4
4
|
def table_title_parse(node, out)
|
5
5
|
name = node.at(ns("./name"))
|
6
6
|
out.p **{ class: "TableTitle", align: "center" } do |p|
|
7
|
-
|
8
|
-
|
7
|
+
lbl = anchor(node['id'], :label, false)
|
8
|
+
lbl.nil? or p << l10n("#{@table_lbl} #{lbl}")
|
9
|
+
name and !lbl.nil? and p << l10n(" — ")
|
10
|
+
=begin
|
11
|
+
get_anchors[node['id']][:label].nil? or
|
12
|
+
p << l10n("#{@table_lbl} #{get_anchors[node['id']][:label]}")
|
13
|
+
name and !get_anchors[node['id']][:label].nil? and
|
9
14
|
p << l10n(" — ")
|
10
|
-
|
11
|
-
|
15
|
+
=end
|
16
|
+
name and name.children.each { |n| parse(n, p) }
|
12
17
|
end
|
13
18
|
end
|
14
19
|
|
@@ -43,8 +43,9 @@ module IsoDoc::Function
|
|
43
43
|
out.div **{ class: "Note" } do |div|
|
44
44
|
first = node.first_element_child
|
45
45
|
div.p do |p|
|
46
|
-
anchor = get_anchors[node['id']]
|
47
|
-
p << "#{anchor&.dig(:label) || '???'}: "
|
46
|
+
#anchor = get_anchors[node['id']]
|
47
|
+
#p << "#{anchor&.dig(:label) || '???'}: "
|
48
|
+
p << "#{anchor(node['id'], :label) || '???'}: "
|
48
49
|
para_then_remainder(first, node, p, div)
|
49
50
|
end
|
50
51
|
end
|
@@ -9,6 +9,14 @@ module IsoDoc::Function
|
|
9
9
|
@anchors
|
10
10
|
end
|
11
11
|
|
12
|
+
def anchor(id, lbl, warning = true)
|
13
|
+
unless @anchors[id]
|
14
|
+
warning and warn "No label has been processed for ID #{id}"
|
15
|
+
return nil
|
16
|
+
end
|
17
|
+
@anchors.dig(id, lbl)
|
18
|
+
end
|
19
|
+
|
12
20
|
def termnote_label(n)
|
13
21
|
@termnote_lbl.gsub(/%/, n.to_s)
|
14
22
|
end
|
@@ -20,7 +28,7 @@ module IsoDoc::Function
|
|
20
28
|
@anchors[n["id"]] =
|
21
29
|
{ label: termnote_label(i + 1),
|
22
30
|
type: "termnote",
|
23
|
-
xref: l10n("#{
|
31
|
+
xref: l10n("#{anchor(t['id'], :xref)}, "\
|
24
32
|
"#{@note_xref_lbl} #{i + 1}") }
|
25
33
|
end
|
26
34
|
end
|
@@ -34,7 +42,7 @@ module IsoDoc::Function
|
|
34
42
|
idx = examples.size == 1 ? "" : (i + 1).to_s
|
35
43
|
@anchors[n["id"]] = {
|
36
44
|
type: "termexample",
|
37
|
-
label: idx, xref: l10n("#{
|
45
|
+
label: idx, xref: l10n("#{anchor(t['id'], :xref)}, "\
|
38
46
|
"#{@note_xref_lbl} #{i + 1}") }
|
39
47
|
end
|
40
48
|
end
|
@@ -57,7 +65,7 @@ module IsoDoc::Function
|
|
57
65
|
next if @anchors[n["id"]]
|
58
66
|
next if n["id"].nil? || n["id"].empty?
|
59
67
|
idx = notes.size == 1 ? "" : " #{i + 1}"
|
60
|
-
@anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl, "note")
|
68
|
+
@anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl, "note", false)
|
61
69
|
end
|
62
70
|
note_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
|
63
71
|
end
|
@@ -73,12 +81,14 @@ module IsoDoc::Function
|
|
73
81
|
def example_anchor_names(sections)
|
74
82
|
sections.each do |s|
|
75
83
|
notes = s.xpath(CHILD_EXAMPLES_XPATH)
|
76
|
-
|
84
|
+
i = 0
|
85
|
+
notes.each do |n|
|
77
86
|
next if @anchors[n["id"]]
|
78
87
|
next if n["id"].nil? || n["id"].empty?
|
79
88
|
idx = notes.size == 1 ? "" : " #{i + 1}"
|
80
89
|
@anchors[n["id"]] = anchor_struct(idx, n, @example_xref_lbl,
|
81
|
-
"example")
|
90
|
+
"example", n["unnumbered"])
|
91
|
+
i += 1 unless n["unnumbered"]
|
82
92
|
end
|
83
93
|
example_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
|
84
94
|
end
|
@@ -91,7 +101,7 @@ module IsoDoc::Function
|
|
91
101
|
notes.each_with_index do |n, i|
|
92
102
|
next if n["id"].nil? || n["id"].empty?
|
93
103
|
idx = notes.size == 1 ? "" : " #{i + 1}"
|
94
|
-
@anchors[n["id"]] = anchor_struct(idx, n, @list_lbl, "list")
|
104
|
+
@anchors[n["id"]] = anchor_struct(idx, n, @list_lbl, "list", false)
|
95
105
|
list_item_anchor_names(n, @anchors[n["id"]], 1, "", notes.size != 1)
|
96
106
|
end
|
97
107
|
list_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
|
@@ -139,11 +149,11 @@ module IsoDoc::Function
|
|
139
149
|
if t.parent.name == "figure" then j += 1
|
140
150
|
else
|
141
151
|
j = 0
|
142
|
-
i += 1
|
152
|
+
i += 1 unless t["unnumbered"]
|
143
153
|
end
|
144
154
|
label = i.to_s + (j.zero? ? "" : "-#{j}")
|
145
155
|
next if t["id"].nil? || t["id"].empty?
|
146
|
-
@anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure")
|
156
|
+
@anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
|
147
157
|
end
|
148
158
|
end
|
149
159
|
|
@@ -163,10 +173,10 @@ module IsoDoc::Function
|
|
163
173
|
end
|
164
174
|
end
|
165
175
|
|
166
|
-
def anchor_struct(lbl, container, elem, type)
|
176
|
+
def anchor_struct(lbl, container, elem, type, unnumbered = false)
|
167
177
|
ret = {}
|
168
|
-
ret[:label] = anchor_struct_label(lbl, elem)
|
169
|
-
ret[:xref] = anchor_struct_xref(lbl, elem)
|
178
|
+
ret[:label] = unnumbered == "true" ? nil : anchor_struct_label(lbl, elem)
|
179
|
+
ret[:xref] = anchor_struct_xref(unnumbered == "true" ? "(??)" : lbl, elem)
|
170
180
|
ret[:xref].gsub!(/ $/, "")
|
171
181
|
ret[:container] = get_clause_id(container) unless container.nil?
|
172
182
|
ret[:type] = type
|
@@ -174,81 +184,97 @@ module IsoDoc::Function
|
|
174
184
|
end
|
175
185
|
|
176
186
|
def sequential_table_names(clause)
|
177
|
-
|
187
|
+
i = 0
|
188
|
+
clause.xpath(ns(".//table")).each do |t|
|
178
189
|
next if t["id"].nil? || t["id"].empty?
|
179
|
-
@anchors[t["id"]] = anchor_struct(i + 1, nil, @table_lbl, "table")
|
190
|
+
@anchors[t["id"]] = anchor_struct(i + 1, nil, @table_lbl, "table", t["unnumbered"])
|
191
|
+
i += 1 unless t["unnumbered"]
|
180
192
|
end
|
181
193
|
end
|
182
194
|
|
183
195
|
def sequential_formula_names(clause)
|
184
|
-
|
196
|
+
i = 0
|
197
|
+
clause.xpath(ns(".//formula")).each do |t|
|
185
198
|
next if t["id"].nil? || t["id"].empty?
|
186
|
-
@anchors[t["id"]] = anchor_struct(i + 1, t, @formula_lbl, "formula")
|
199
|
+
@anchors[t["id"]] = anchor_struct(i + 1, t, @formula_lbl, "formula", t["unnumbered"])
|
200
|
+
i += 1 unless t["unnumbered"]
|
187
201
|
end
|
188
202
|
end
|
189
203
|
|
190
204
|
FIRST_LVL_REQ = "[not(ancestor::permission or ancestor::requirement or ancestor::recommendation)]".freeze
|
191
205
|
|
192
206
|
def sequential_permission_names(clause)
|
193
|
-
|
207
|
+
i = 0
|
208
|
+
clause.xpath(ns(".//permission#{FIRST_LVL_REQ}")).each do |t|
|
194
209
|
next if t["id"].nil? || t["id"].empty?
|
195
|
-
@anchors[t["id"]] = anchor_struct(i + 1, t, @permission_lbl, "permission")
|
210
|
+
@anchors[t["id"]] = anchor_struct(i + 1, t, @permission_lbl, "permission", t["unnumbered"])
|
196
211
|
sequential_permission_names1(t, i + 1)
|
197
212
|
sequential_requirement_names1(t, i + 1)
|
198
213
|
sequential_recommendation_names1(t, i + 1)
|
214
|
+
i += 1 unless t["unnumbered"]
|
199
215
|
end
|
200
216
|
end
|
201
217
|
|
202
218
|
def sequential_permission_names1(block, lbl)
|
203
|
-
|
219
|
+
i = 0
|
220
|
+
block.xpath(ns("./permission")).each do |t|
|
204
221
|
next if t["id"].nil? || t["id"].empty?
|
205
222
|
newlbl = "#{lbl}#{hierfigsep}#{i + 1}"
|
206
|
-
@anchors[t["id"]] = anchor_struct(newlbl, t, @permission_lbl, "permission")
|
223
|
+
@anchors[t["id"]] = anchor_struct(newlbl, t, @permission_lbl, "permission", t["unnumbered"])
|
207
224
|
sequential_permission_names1(t, newlbl)
|
208
225
|
sequential_requirement_names1(t, newlbl)
|
209
226
|
sequential_recommendation_names1(t, newlbl)
|
227
|
+
i += 1 unless t["unnumbered"]
|
210
228
|
end
|
211
229
|
end
|
212
230
|
|
213
231
|
def sequential_requirement_names(clause)
|
214
|
-
|
232
|
+
i = 0
|
233
|
+
clause.xpath(ns(".//requirement#{FIRST_LVL_REQ}")).each do |t|
|
215
234
|
next if t["id"].nil? || t["id"].empty?
|
216
|
-
@anchors[t["id"]] = anchor_struct(i + 1, t, @requirement_lbl, "requirement")
|
235
|
+
@anchors[t["id"]] = anchor_struct(i + 1, t, @requirement_lbl, "requirement", t["unnumbered"])
|
217
236
|
sequential_permission_names1(t, i + 1)
|
218
237
|
sequential_requirement_names1(t, i + 1)
|
219
238
|
sequential_recommendation_names1(t, i + 1)
|
239
|
+
i += 1 unless t["unnumbered"]
|
220
240
|
end
|
221
241
|
end
|
222
242
|
|
223
243
|
def sequential_requirement_names1(block, lbl)
|
224
|
-
|
244
|
+
i = 0
|
245
|
+
block.xpath(ns("./requirement")).each do |t|
|
225
246
|
next if t["id"].nil? || t["id"].empty?
|
226
247
|
newlbl = "#{lbl}#{hierfigsep}#{i + 1}"
|
227
|
-
@anchors[t["id"]] = anchor_struct(newlbl, t, @requirement_lbl, "requirement")
|
248
|
+
@anchors[t["id"]] = anchor_struct(newlbl, t, @requirement_lbl, "requirement", t["unnumbered"])
|
228
249
|
sequential_permission_names1(t, newlbl)
|
229
250
|
sequential_requirement_names1(t, newlbl)
|
230
251
|
sequential_recommendation_names1(t, newlbl)
|
252
|
+
i += 1 unless t["unnumbered"]
|
231
253
|
end
|
232
254
|
end
|
233
255
|
|
234
256
|
def sequential_recommendation_names(clause)
|
235
|
-
|
257
|
+
i = 0
|
258
|
+
clause.xpath(ns(".//recommendation#{FIRST_LVL_REQ}")).each do |t|
|
236
259
|
next if t["id"].nil? || t["id"].empty?
|
237
|
-
@anchors[t["id"]] = anchor_struct(i + 1, t, @recommendation_lbl, "recommendation")
|
260
|
+
@anchors[t["id"]] = anchor_struct(i + 1, t, @recommendation_lbl, "recommendation", t["unnumbered"])
|
238
261
|
sequential_permission_names1(t, i + 1)
|
239
262
|
sequential_requirement_names1(t, i + 1)
|
240
263
|
sequential_recommendation_names1(t, i + 1)
|
264
|
+
i += 1 unless t["unnumbered"]
|
241
265
|
end
|
242
266
|
end
|
243
267
|
|
244
268
|
def sequential_recommendation_names1(block, lbl)
|
245
|
-
|
269
|
+
i = 0
|
270
|
+
block.xpath(ns("./recommendation")).each do |t|
|
246
271
|
next if t["id"].nil? || t["id"].empty?
|
247
272
|
newlbl = "#{lbl}#{hierfigsep}#{i + 1}"
|
248
|
-
@anchors[t["id"]] = anchor_struct(newlbl, t, @recommendation_lbl, "recommendation")
|
273
|
+
@anchors[t["id"]] = anchor_struct(newlbl, t, @recommendation_lbl, "recommendation", t["unnumbered"])
|
249
274
|
sequential_permission_names1(t, newlbl)
|
250
275
|
sequential_requirement_names1(t, newlbl)
|
251
276
|
sequential_recommendation_names1(t, newlbl)
|
277
|
+
i += 1 unless t["unnumbered"]
|
252
278
|
end
|
253
279
|
end
|
254
280
|
|
@@ -275,19 +301,21 @@ module IsoDoc::Function
|
|
275
301
|
if t.parent.name == "figure" then j += 1
|
276
302
|
else
|
277
303
|
j = 0
|
278
|
-
i += 1
|
304
|
+
i += 1 unless t["unnumbered"]
|
279
305
|
end
|
280
306
|
label = "#{num}#{hiersep}#{i}" + (j.zero? ? "" : "#{hierfigsep}#{j}")
|
281
307
|
next if t["id"].nil? || t["id"].empty?
|
282
|
-
@anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure")
|
308
|
+
@anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
|
283
309
|
end
|
284
310
|
end
|
285
311
|
|
286
312
|
def hierarchical_table_names(clause, num)
|
287
|
-
|
313
|
+
i = 0
|
314
|
+
clause.xpath(ns(".//table")).each do |t|
|
288
315
|
next if t["id"].nil? || t["id"].empty?
|
289
316
|
@anchors[t["id"]] = anchor_struct("#{num}#{hiersep}#{i + 1}",
|
290
|
-
nil, @table_lbl, "table")
|
317
|
+
nil, @table_lbl, "table", t["unnumbered"])
|
318
|
+
i += 1 unless t["unnumbered"]
|
291
319
|
end
|
292
320
|
end
|
293
321
|
|
@@ -301,43 +329,51 @@ module IsoDoc::Function
|
|
301
329
|
end
|
302
330
|
|
303
331
|
def hierarchical_formula_names(clause, num)
|
304
|
-
|
332
|
+
i = 0
|
333
|
+
clause.xpath(ns(".//formula")).each do |t|
|
305
334
|
next if t["id"].nil? || t["id"].empty?
|
306
335
|
@anchors[t["id"]] = anchor_struct("#{num}#{hiersep}#{i + 1}",
|
307
|
-
t, @formula_lbl, "formula")
|
336
|
+
t, @formula_lbl, "formula", t["unnumbered"])
|
337
|
+
i += 1 unless t["unnumbered"]
|
308
338
|
end
|
309
339
|
end
|
310
340
|
|
311
341
|
def hierarchical_permission_names(clause, num)
|
312
|
-
|
342
|
+
i = 0
|
343
|
+
clause.xpath(ns(".//permission#{FIRST_LVL_REQ}")).each do |t|
|
313
344
|
next if t["id"].nil? || t["id"].empty?
|
314
345
|
lbl = "#{num}#{hiersep}#{i + 1}"
|
315
|
-
@anchors[t["id"]] = anchor_struct(lbl, t, @permission_lbl, "permission")
|
346
|
+
@anchors[t["id"]] = anchor_struct(lbl, t, @permission_lbl, "permission", t["unnumbered"])
|
316
347
|
sequential_permission_names1(t, lbl)
|
317
348
|
sequential_requirement_names1(t, lbl)
|
318
349
|
sequential_recommendation_names1(t, lbl)
|
350
|
+
i += 1 unless t["unnumbered"]
|
319
351
|
end
|
320
352
|
end
|
321
353
|
|
322
354
|
def hierarchical_requirement_names(clause, num)
|
323
|
-
|
355
|
+
i = 0
|
356
|
+
clause.xpath(ns(".//requirement#{FIRST_LVL_REQ}")).each do |t|
|
324
357
|
next if t["id"].nil? || t["id"].empty?
|
325
358
|
lbl = "#{num}#{hiersep}#{i + 1}"
|
326
|
-
@anchors[t["id"]] = anchor_struct(lbl, t, @requirement_lbl, "requirement")
|
359
|
+
@anchors[t["id"]] = anchor_struct(lbl, t, @requirement_lbl, "requirement", t["unnumbered"])
|
327
360
|
sequential_permission_names1(t, lbl)
|
328
361
|
sequential_requirement_names1(t, lbl)
|
329
362
|
sequential_recommendation_names1(t, lbl)
|
363
|
+
i += 1 unless t["unnumbered"]
|
330
364
|
end
|
331
365
|
end
|
332
366
|
|
333
367
|
def hierarchical_recommendation_names(clause, num)
|
334
|
-
|
368
|
+
i = 0
|
369
|
+
clause.xpath(ns(".//recommendation#{FIRST_LVL_REQ}")).each do |t|
|
335
370
|
next if t["id"].nil? || t["id"].empty?
|
336
371
|
lbl = "#{num}#{hiersep}#{i + 1}"
|
337
|
-
@anchors[t["id"]] = anchor_struct(lbl, t, @recommendation_lbl, "recommendation")
|
372
|
+
@anchors[t["id"]] = anchor_struct(lbl, t, @recommendation_lbl, "recommendation", t["unnumbered"])
|
338
373
|
sequential_permission_names1(t, lbl)
|
339
374
|
sequential_requirement_names1(t, lbl)
|
340
375
|
sequential_recommendation_names1(t, lbl)
|
376
|
+
i += 1 unless t["unnumbered"]
|
341
377
|
end
|
342
378
|
end
|
343
379
|
end
|