isodoc 2.11.4 → 2.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isodoc/metadata.rb +1 -1
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/xref/xref_anchor.rb +1 -1
- data/lib/isodoc/xref/xref_counter.rb +18 -3
- data/lib/isodoc/xref/xref_counter_types.rb +13 -0
- data/lib/isodoc/xref/xref_gen.rb +6 -7
- data/lib/isodoc/xref/xref_sect_gen.rb +9 -9
- data/lib/isodoc/xref.rb +26 -10
- data/lib/isodoc-yaml/i18n-ja.yaml +13 -13
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7b57ce9e119a72a5611931503d20a6a6eb525b9f07cbc06b0e8794a80db8da2
|
4
|
+
data.tar.gz: 51a4d399f9ab8b7730a08d15deaa52b0526efbbe27cea41e355fca92ce0768ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 280cf748d5411c671d3e9f7d6e4b949611f1567766bddcdea160b5eff1bf49d6b61df5b706092f0775812515fb78ccf4812edfb79a98f47d0bcfef9e6215fe70
|
7
|
+
data.tar.gz: 3af9ba5dec2db7b37542f8dab65bc90cdf19f1298110fc230aac03187814c88bffeed194d3d9de7a2e1892f82767d24cab970f780a3655985dfa7f0482d851d1
|
data/lib/isodoc/metadata.rb
CHANGED
@@ -15,7 +15,7 @@ module IsoDoc
|
|
15
15
|
|
16
16
|
def initialize(lang, script, locale, i18n, fonts_options = {})
|
17
17
|
@metadata = { lang:, script: }
|
18
|
-
DATETYPES.each { |w| @metadata["#{w.
|
18
|
+
DATETYPES.each { |w| @metadata["#{w.tr('-', '_')}date".to_sym] = "XXX" }
|
19
19
|
@lang = lang
|
20
20
|
@script = script
|
21
21
|
@locale = locale
|
data/lib/isodoc/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "roman-numerals"
|
2
|
+
require "twitter_cldr"
|
2
3
|
|
3
4
|
module IsoDoc
|
4
5
|
module XrefGen
|
@@ -26,6 +27,7 @@ module IsoDoc
|
|
26
27
|
@style = opts[:numerals]
|
27
28
|
@skip_i = opts[:skip_i]
|
28
29
|
@prefix = opts[:prefix]
|
30
|
+
@separator = opts[:separator] || "."
|
29
31
|
@base = ""
|
30
32
|
if num.is_a? String
|
31
33
|
if /^\d+$/.match?(num)
|
@@ -139,7 +141,8 @@ module IsoDoc
|
|
139
141
|
end
|
140
142
|
|
141
143
|
def increment(node)
|
142
|
-
@unnumbered = node["unnumbered"] == "true" ||
|
144
|
+
@unnumbered = node["unnumbered"] == "true" ||
|
145
|
+
node["hidden"] == "true" and return self
|
143
146
|
reset_overrides
|
144
147
|
if node["subsequence"] != @subseq &&
|
145
148
|
!(blank?(node["subsequence"]) && blank?(@subseq))
|
@@ -150,12 +153,23 @@ module IsoDoc
|
|
150
153
|
self
|
151
154
|
end
|
152
155
|
|
156
|
+
def style_number(num)
|
157
|
+
num.nil? and return num
|
158
|
+
case @style
|
159
|
+
when :roman then RomanNumerals.to_roman(num)
|
160
|
+
when :japanese then num.localize(:ja).spellout
|
161
|
+
else num
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
153
165
|
def print
|
154
166
|
@unnumbered and return nil
|
155
167
|
@prefix_override and return @prefix_override
|
156
168
|
num = @number_override || @num
|
157
|
-
out =
|
158
|
-
|
169
|
+
out = style_number(num)
|
170
|
+
prefix = @prefix
|
171
|
+
prefix &&= "#{prefix}#{@separator}"
|
172
|
+
"#{prefix}#{@base}#{out}#{@letter_override || @letter}"
|
159
173
|
end
|
160
174
|
|
161
175
|
def ol_type(list, depth)
|
@@ -176,6 +190,7 @@ module IsoDoc
|
|
176
190
|
when :alphabet_upper then (64 + @num).chr.to_s
|
177
191
|
when :roman then RomanNumerals.to_roman(@num).downcase
|
178
192
|
when :roman_upper then RomanNumerals.to_roman(@num).upcase
|
193
|
+
when :japanese then num.localize(:ja).spellout
|
179
194
|
end
|
180
195
|
end
|
181
196
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "xref_counter"
|
2
|
+
|
3
|
+
module IsoDoc
|
4
|
+
class Xref
|
5
|
+
def clause_counter(num = 0, opts = { numerals: :arabic })
|
6
|
+
::IsoDoc::XrefGen::Counter.new(num, opts)
|
7
|
+
end
|
8
|
+
|
9
|
+
def list_counter(num = 0, opts = { numerals: :arabic })
|
10
|
+
::IsoDoc::XrefGen::Counter.new(num, opts)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/isodoc/xref/xref_gen.rb
CHANGED
@@ -33,8 +33,7 @@ module IsoDoc
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def increment_label(elems, node, counter, increment: true)
|
36
|
-
|
37
|
-
|
36
|
+
elems.size == 1 && !node["number"] and return ""
|
38
37
|
counter.increment(node) if increment
|
39
38
|
" #{counter.print}"
|
40
39
|
end
|
@@ -48,7 +47,7 @@ module IsoDoc
|
|
48
47
|
{ label: termnote_label(c.print), type: "termnote",
|
49
48
|
value: c.print, elem: @labels["termnote"],
|
50
49
|
container: t["id"],
|
51
|
-
xref:
|
50
|
+
xref: "#{@labels['note_xref']} #{c.print}" }
|
52
51
|
end
|
53
52
|
end
|
54
53
|
end
|
@@ -64,7 +63,7 @@ module IsoDoc
|
|
64
63
|
{ label: idx, type: "termexample",
|
65
64
|
value: idx, elem: @labels["example_xref"],
|
66
65
|
container: t["id"],
|
67
|
-
xref:
|
66
|
+
xref: "#{@labels['example_xref']} #{idx}" }
|
68
67
|
end
|
69
68
|
end
|
70
69
|
end
|
@@ -123,7 +122,7 @@ module IsoDoc
|
|
123
122
|
sections.each do |s|
|
124
123
|
notes = s.xpath(ns(".//ol")) - s.xpath(ns(".//clause//ol")) -
|
125
124
|
s.xpath(ns(".//appendix//ol")) - s.xpath(ns(".//ol//ol"))
|
126
|
-
c =
|
125
|
+
c = list_counter
|
127
126
|
notes.noblank.each do |n|
|
128
127
|
@anchors[n["id"]] = anchor_struct(increment_label(notes, n, c), n,
|
129
128
|
@labels["list"], "list", false)
|
@@ -134,7 +133,7 @@ module IsoDoc
|
|
134
133
|
end
|
135
134
|
|
136
135
|
def list_item_anchor_names(list, list_anchor, depth, prev_label, refer_list)
|
137
|
-
c =
|
136
|
+
c = list_counter(list["start"] ? list["start"].to_i - 1 : 0)
|
138
137
|
list.xpath(ns("./li")).each do |li|
|
139
138
|
bare_label, label =
|
140
139
|
list_item_value(li, c, depth, { list_anchor:, prev_label:,
|
@@ -188,7 +187,7 @@ module IsoDoc
|
|
188
187
|
|
189
188
|
def deflist_term_anchor_names(list, list_anchor)
|
190
189
|
list.xpath(ns("./dt")).each do |li|
|
191
|
-
label =
|
190
|
+
label = "#{list_anchor[:xref]}: #{dt2xreflabel(li)}"
|
192
191
|
li["id"] and @anchors[li["id"]] =
|
193
192
|
{ xref: label, type: "deflistitem",
|
194
193
|
container: list_anchor[:container] }
|
@@ -56,7 +56,7 @@ module IsoDoc
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def main_anchor_names(xml)
|
59
|
-
n =
|
59
|
+
n = clause_counter
|
60
60
|
clause_order_main(xml).each do |a|
|
61
61
|
xml.xpath(ns(a[:path])).each do |c|
|
62
62
|
section_names(c, n, 1)
|
@@ -144,7 +144,7 @@ module IsoDoc
|
|
144
144
|
num.increment(clause)
|
145
145
|
section_name_anchors(clause, num.print, lvl)
|
146
146
|
clause.xpath(ns(SUBCLAUSES))
|
147
|
-
.each_with_object(
|
147
|
+
.each_with_object(clause_counter(0, prefix: num.print)) do |c, i|
|
148
148
|
section_names1(c, i.increment(c).print, lvl + 1)
|
149
149
|
end
|
150
150
|
num
|
@@ -153,7 +153,7 @@ module IsoDoc
|
|
153
153
|
def section_names1(clause, num, level)
|
154
154
|
unnumbered_section_name?(clause) and return num
|
155
155
|
section_name_anchors(clause, num, level)
|
156
|
-
i =
|
156
|
+
i = clause_counter(0, prefix: num)
|
157
157
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
158
158
|
section_names1(c, i.increment(c).print, level + 1)
|
159
159
|
end
|
@@ -170,18 +170,18 @@ module IsoDoc
|
|
170
170
|
|
171
171
|
def section_name_anchors(clause, num, level)
|
172
172
|
@anchors[clause["id"]] =
|
173
|
-
{ label: num, xref:
|
173
|
+
{ label: num, xref: "#{@labels['clause']} #{num}",
|
174
174
|
title: clause_title(clause), level:, type: "clause",
|
175
175
|
elem: @labels["clause"] }
|
176
176
|
end
|
177
177
|
|
178
178
|
def annex_name_lbl(clause, num)
|
179
|
-
obl =
|
179
|
+
obl = "(#{@labels['inform_annex']})"
|
180
180
|
clause["obligation"] == "normative" and
|
181
|
-
obl =
|
181
|
+
obl = "(#{@labels['norm_annex']})"
|
182
182
|
title = Common::case_with_markup(@labels["annex"], "capital",
|
183
183
|
@script)
|
184
|
-
|
184
|
+
"<strong>#{title} #{num}</strong><br/>#{obl}"
|
185
185
|
end
|
186
186
|
|
187
187
|
def annex_name_anchors(clause, num, level)
|
@@ -203,7 +203,7 @@ module IsoDoc
|
|
203
203
|
num.to_s, 1)
|
204
204
|
else
|
205
205
|
clause.xpath(ns(SUBCLAUSES))
|
206
|
-
.each_with_object(
|
206
|
+
.each_with_object(clause_counter(0, prefix: num)) do |c, i|
|
207
207
|
annex_names1(c, i.increment(c).print, 2)
|
208
208
|
end
|
209
209
|
end
|
@@ -212,7 +212,7 @@ module IsoDoc
|
|
212
212
|
|
213
213
|
def annex_names1(clause, num, level)
|
214
214
|
annex_name_anchors(clause, num, level)
|
215
|
-
i =
|
215
|
+
i = clause_counter(0, prefix: num)
|
216
216
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
217
217
|
annex_names1(c, i.increment(c).print, level + 1)
|
218
218
|
end
|
data/lib/isodoc/xref.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative "xref/xref_anchor"
|
2
2
|
require_relative "xref/xref_counter"
|
3
|
+
require_relative "xref/xref_counter_types"
|
3
4
|
require_relative "xref/xref_gen_seq"
|
4
5
|
require_relative "xref/xref_gen"
|
5
6
|
require_relative "xref/xref_sect_gen"
|
@@ -17,25 +18,31 @@ module IsoDoc
|
|
17
18
|
|
18
19
|
# Note: if bibrender is no passed in, do not parse references
|
19
20
|
def initialize(lang, script, klass, i18n, options = {})
|
20
|
-
|
21
|
+
initialize_empty
|
21
22
|
@lang = lang
|
22
23
|
@script = script
|
23
24
|
@klass = klass
|
24
25
|
@options = options
|
25
|
-
|
26
|
-
@labels = @i18n.get
|
27
|
-
@klass.i18n = @i18n
|
26
|
+
initialize_i18n(i18n)
|
28
27
|
@klass.bibrender ||= options[:bibrender]
|
29
|
-
@locale = options[:locale]
|
30
28
|
@reqt_models = @klass.requirements_processor
|
31
|
-
.new({
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
.new({ default: "default", lang:, script:,
|
30
|
+
labels: @i18n.get })
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize_empty
|
34
|
+
@c = HTMLEntities.new
|
35
|
+
@anchors = {}
|
36
36
|
@parse_settings = {}
|
37
37
|
end
|
38
38
|
|
39
|
+
def initialize_i18n(i18n)
|
40
|
+
@i18n = i18n
|
41
|
+
@labels = @i18n.get
|
42
|
+
@klass.i18n = @i18n
|
43
|
+
@locale = @options[:locale]
|
44
|
+
end
|
45
|
+
|
39
46
|
def get
|
40
47
|
@anchors
|
41
48
|
end
|
@@ -66,9 +73,18 @@ module IsoDoc
|
|
66
73
|
initial_anchor_names(docxml)
|
67
74
|
back_anchor_names(docxml)
|
68
75
|
asset_anchor_names(docxml)
|
76
|
+
localise_anchors
|
69
77
|
@parse_settings = {}
|
70
78
|
end
|
71
79
|
|
80
|
+
def localise_anchors
|
81
|
+
@anchors.each_value do |v|
|
82
|
+
v[:label] &&= l10n(v[:label])
|
83
|
+
v[:value] &&= l10n(v[:value])
|
84
|
+
v[:xref] &&= l10n(v[:xref])
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
72
88
|
def ns(xpath)
|
73
89
|
Common::ns(xpath)
|
74
90
|
end
|
@@ -96,18 +96,18 @@ version: version
|
|
96
96
|
toc_figures: List of figures
|
97
97
|
toc_tables: List of tables
|
98
98
|
toc_recommendations: List of recommendations
|
99
|
-
month_january:
|
100
|
-
month_february:
|
101
|
-
month_march:
|
102
|
-
month_april:
|
103
|
-
month_may:
|
104
|
-
month_june:
|
105
|
-
month_july:
|
106
|
-
month_august:
|
107
|
-
month_september:
|
108
|
-
month_october:
|
109
|
-
month_november:
|
110
|
-
month_december:
|
99
|
+
month_january: 1月
|
100
|
+
month_february: 2月
|
101
|
+
month_march: 3月
|
102
|
+
month_april: 4月
|
103
|
+
month_may: 5月
|
104
|
+
month_june: 6月
|
105
|
+
month_july: 7月
|
106
|
+
month_august: 8月
|
107
|
+
month_september: 9月
|
108
|
+
month_october: 10月
|
109
|
+
month_november: 11月
|
110
|
+
month_december: 12月
|
111
111
|
obligation: Obligation
|
112
112
|
admonition: {
|
113
113
|
danger: 危険です,
|
@@ -118,7 +118,7 @@ admonition: {
|
|
118
118
|
editorial: 編集者注
|
119
119
|
}
|
120
120
|
locality: {
|
121
|
-
section:
|
121
|
+
section: セクション,
|
122
122
|
clause: 箇条,
|
123
123
|
subclause: 細分箇条,
|
124
124
|
part: 部,
|
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: 2.
|
4
|
+
version: 2.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base64
|
@@ -451,6 +451,7 @@ files:
|
|
451
451
|
- lib/isodoc/xref/clause_order.rb
|
452
452
|
- lib/isodoc/xref/xref_anchor.rb
|
453
453
|
- lib/isodoc/xref/xref_counter.rb
|
454
|
+
- lib/isodoc/xref/xref_counter_types.rb
|
454
455
|
- lib/isodoc/xref/xref_gen.rb
|
455
456
|
- lib/isodoc/xref/xref_gen_seq.rb
|
456
457
|
- lib/isodoc/xref/xref_sect_gen.rb
|