isodoc 2.11.4 → 2.12.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/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
|