isodoc 0.9.23 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|