isodoc 2.10.2 → 2.10.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e19ba3a2fd2440b24be729cbba835907ac504ca7c762f673632de52881922f1
4
- data.tar.gz: 6b3fff1e5f4feebc785588093eee4fb81a1da3dc37ff1417b2e30445e353dbcc
3
+ metadata.gz: df0cc3b9722ac37d5d0853fe0b483fedc476ad51655488a893dcb7c58f08b5a3
4
+ data.tar.gz: 8f5fe80aa471b64d274e3c8b44b87cc6c9fd5ff20bf52b9a61ee3d8ede5421e0
5
5
  SHA512:
6
- metadata.gz: 8751365f532c1123f30df8480fca7021cb90122c419e963b4ba46fb6ece8bca0c4bd1593d4c3d3f987f5db5dde295012e01a59af5392929dc3db972db5bb50c9
7
- data.tar.gz: '006383549c57caf4cb72ef35b51aaad6ada733981858f2188eb7515f08d8d1e964b7a27e47d723199737c6dc70cd7c379775804ee28b55757fda18a1c77dcb63'
6
+ metadata.gz: 2f8da1dc68e54da5f58af3ad2ca370e175cc914216ecd2148068ec745975c8229371fa87b586ab60c4701b0b21d9b676893e15d97cabc1e513cba20c5ed2ad80
7
+ data.tar.gz: b20e85c69fe1f89c327b22c2f0232ab751c577028de077bb6b890ae337d24c98de939a8ecb1ff8607a6d2dd9e577abec8404372572033361c4939578be4e0c99
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  html, body, div, span, applet, object, iframe,
2
3
  h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3
4
  a, abbr, acronym, address, big, cite, code,
@@ -169,12 +170,15 @@ table.rouge-line-table pre {
169
170
  overflow-x: visible;
170
171
  font-size: 100%; }
171
172
 
173
+ /* header § links */
172
174
  a.header {
173
175
  color: inherit;
174
176
  text-decoration: none; }
175
177
 
176
178
  a.header:hover {
177
- color: #a53221; }
179
+ color: #a53221 !important;
180
+ background: inherit;
181
+ box-shadow: none; }
178
182
 
179
183
  a.header:visited {
180
184
  color: inherit;
@@ -197,6 +201,11 @@ a.anchor::before {
197
201
  display: block;
198
202
  padding-top: .1em; }
199
203
 
204
+ a.anchor:hover {
205
+ color: #a53221;
206
+ background: inherit;
207
+ box-shadow: none; }
208
+
200
209
  h1 > a.anchor:hover,
201
210
  h2 > a.anchor:hover,
202
211
  h3 > a.anchor:hover,
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  html, body, div, span, applet, object, iframe,
2
3
  h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3
4
  a, abbr, acronym, address, big, cite, code,
@@ -169,12 +170,15 @@ table.rouge-line-table pre {
169
170
  overflow-x: visible;
170
171
  font-size: 100%; }
171
172
 
173
+ /* header § links */
172
174
  a.header {
173
175
  color: inherit;
174
176
  text-decoration: none; }
175
177
 
176
178
  a.header:hover {
177
- color: #a53221; }
179
+ color: #a53221 !important;
180
+ background: inherit;
181
+ box-shadow: none; }
178
182
 
179
183
  a.header:visited {
180
184
  color: inherit;
@@ -197,6 +201,11 @@ a.anchor::before {
197
201
  display: block;
198
202
  padding-top: .1em; }
199
203
 
204
+ a.anchor:hover {
205
+ color: #a53221;
206
+ background: inherit;
207
+ box-shadow: none; }
208
+
200
209
  h1 > a.anchor:hover,
201
210
  h2 > a.anchor:hover,
202
211
  h3 > a.anchor:hover,
@@ -200,11 +200,13 @@ table.rouge-line-table pre {
200
200
  font-size: 100%;
201
201
  }
202
202
 
203
- a.header{color:inherit;text-decoration:none}
204
- a.header:hover{color:#a53221}
205
- a.header:visited{color:inherit;text-decoration:none}
203
+ /* header § links */
204
+ a.header{color:inherit;text-decoration:none;}
205
+ a.header:hover{color:#a53221 !important;background:inherit;box-shadow:none;}
206
+ a.header:visited{color:inherit;text-decoration:none;}
206
207
  a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
207
208
  a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
209
+ a.anchor:hover{color:#a53221;background:inherit;box-shadow:none;}
208
210
  h1>a.anchor:hover,
209
211
  h2>a.anchor:hover,
210
212
  h3>a.anchor:hover,
@@ -67,7 +67,7 @@ module IsoDoc
67
67
 
68
68
  def nearest_block_parent(node)
69
69
  until %w(p title td th name formula li dt dd sourcecode pre quote
70
- note example)
70
+ note example target clause annex term appendix bibdata)
71
71
  .include?(node.name)
72
72
  node = node.parent
73
73
  end
@@ -48,6 +48,8 @@ module IsoDoc
48
48
  set(:doctype, status_print(b))
49
49
  b1 = isoxml&.at(ns("//bibdata/ext/doctype#{currlang}"))&.text || b
50
50
  set(:doctype_display, status_print(b1))
51
+ b = isoxml&.at(ns("//bibdata/ext/subdoctype#{NOLANG}"))&.text || return
52
+ set(:subdoctype, status_print(b))
51
53
  end
52
54
 
53
55
  def docstatus(xml, _out)
@@ -8,7 +8,10 @@ module IsoDoc
8
8
 
9
9
  def mathml(docxml)
10
10
  docxml.xpath("//m:math", MATHML).each { |f| mathml_linebreak(f) }
11
- locale = twitter_cldr_localiser
11
+ locale = @lang.to_sym
12
+ @numfmt = Plurimath::NumberFormatter
13
+ .new(locale, localize_number: @localizenumber,
14
+ localizer_symbols: twitter_cldr_localiser_symbols)
12
15
  docxml.xpath("//m:math", MATHML).each do |f| # rubocop:disable Style/CombinableLoops
13
16
  mathml1(f, locale)
14
17
  end
@@ -18,77 +21,25 @@ module IsoDoc
18
21
  # TwitterCldr::DataReaders::NumberDataReader.new(locale).symbols
19
22
  def localize_maths(node, locale)
20
23
  node.xpath(".//m:mn", MATHML).each do |x|
21
- num = BigDecimal(x.text)
22
- precision = /\./.match?(x.text) ? x.text.sub(/^.*\./, "").size : 0
23
- x.children = localized_number(num, locale, precision)
24
+ x.children = @numfmt
25
+ .localized_number(x.text, locale: locale,
26
+ precision: num_precision(x.text))
24
27
  rescue ArgumentError
25
28
  end
26
29
  end
27
30
 
28
- # By itself twitter-cldr does not support fraction part digits grouping
29
- # and custom delimeter, will decorate fraction part manually
30
- def localized_number(num, locale, precision)
31
- localized = localized_number1(num, locale, precision)
32
- twitter_cldr_reader_symbols = twitter_cldr_reader(locale)
33
- return localized unless twitter_cldr_reader_symbols[:decimal]
34
-
35
- integer, fraction = localized.split(twitter_cldr_reader_symbols[:decimal])
36
- return localized if fraction.nil? || fraction.empty?
37
-
38
- [integer, decorate_fraction_part(fraction, locale)]
39
- .join(twitter_cldr_reader_symbols[:decimal])
40
- end
41
-
42
- def localized_number1(num, locale, precision)
43
- if precision.zero?
44
- num.localize(locale).to_s
45
- else
46
- num.localize(locale).to_decimal.to_s(precision: precision)
47
- end
48
- end
49
-
50
- def decorate_fraction_part(fract, locale)
51
- result = []
52
- twitter_cldr_reader_symbols = twitter_cldr_reader(locale)
53
- fract = fract.slice(0..(twitter_cldr_reader_symbols[:precision] || -1))
54
- fr_group_digits = twitter_cldr_reader_symbols[:fraction_group_digits] || 1
55
- until fract.empty?
56
- result.push(fract.slice!(0, fr_group_digits))
57
- end
58
- result.join(twitter_cldr_reader_symbols[:fraction_group].to_s)
31
+ def num_precision(num)
32
+ precision = 0
33
+ /\./.match?(num) and precision =
34
+ twitter_cldr_localiser_symbols[:precision] ||
35
+ num.sub(/^.*\./, "").size
36
+ precision
59
37
  end
60
38
 
61
39
  def twitter_cldr_localiser_symbols
62
40
  {}
63
41
  end
64
42
 
65
- def twitter_cldr_reader(locale)
66
- return @twitter_cldr_reader if @twitter_cldr_reader
67
-
68
- num = TwitterCldr::DataReaders::NumberDataReader.new(locale)
69
- @twitter_cldr_reader = num.symbols.merge!(twitter_cldr_localiser_symbols)
70
- .merge!(parse_localize_number)
71
- @twitter_cldr_reader
72
- end
73
-
74
- def twitter_cldr_localiser
75
- locale = TwitterCldr.supported_locale?(@lang.to_sym) ? @lang.to_sym : :en
76
- twitter_cldr_reader(locale)
77
- locale
78
- end
79
-
80
- def parse_localize_number
81
- @localizenumber or return {}
82
- m = %r{(?<group>[^#])?(?<groupdigits>#+0)(?<decimal>.)(?<fractdigits>#+)(?<fractgroup>[^#])?}
83
- .match(@localizenumber) or return {}
84
- ret = { decimal: m[:decimal], group_digits: m[:groupdigits].size,
85
- fraction_group_digits: m[:fractdigits].size,
86
- group: m[:group] || "",
87
- fraction_group: m[:fractgroup] || "" }.compact
88
- %i(group fraction_group).each { |x| ret[x] == " " and ret[x] = "\u00A0" }
89
- ret
90
- end
91
-
92
43
  def asciimath_dup(node)
93
44
  @suppressasciimathdup || node.parent.at(ns("./asciimath")) and return
94
45
  math = node.to_xml.gsub(/ xmlns=["'][^"']+["']/, "")
@@ -3,6 +3,7 @@ module IsoDoc
3
3
  def metadata(docxml)
4
4
  toc_metadata(docxml)
5
5
  fonts_metadata(docxml)
6
+ attachments_extract(docxml)
6
7
  preprocess_xslt_insert(docxml)
7
8
  a = docxml.at(ns("//bibdata")) or return
8
9
  a.next =
@@ -10,6 +11,22 @@ module IsoDoc
10
11
  "</localized-strings>"
11
12
  end
12
13
 
14
+ def attachments_extract(docxml)
15
+ docxml.at(ns("//metanorma-extension/attachment")) or return
16
+ dir = File.join(@localdir, "_#{@outputfile}_attachments")
17
+ FileUtils.rm_rf(dir)
18
+ FileUtils.mkdir_p(dir)
19
+ docxml.xpath(ns("//metanorma-extension/attachment")).each do |a|
20
+ save_attachment(a, dir)
21
+ end
22
+ end
23
+
24
+ def save_attachment(attachment, dir)
25
+ n = File.join(dir, attachment["name"])
26
+ c = attachment.text.sub(%r{^data:[^;]+;(?:charset=[^;]+;)?base64,}, "")
27
+ File.open(n, "wb") { |f| f.write(Base64.strict_decode64(c)) }
28
+ end
29
+
13
30
  def extension_insert(xml, path = [])
14
31
  ins = extension_insert_pt(xml)
15
32
  path.each do |n|
@@ -25,7 +25,9 @@ module IsoDoc
25
25
  def hidden_items(docxml)
26
26
  docxml.xpath(ns("//references[bibitem/@hidden = 'true']")).each do |x|
27
27
  x.at(ns("./bibitem[not(@hidden = 'true')]")) and next
28
- x.elements.map(&:name).any? { |n| n != "bibitem" } and next
28
+ x.elements.map(&:name).any? do |n|
29
+ !%w(title bibitem).include?(n)
30
+ end and next
29
31
  x["hidden"] = "true"
30
32
  end
31
33
  end
@@ -18,10 +18,13 @@ module IsoDoc
18
18
  super
19
19
  end
20
20
 
21
- def convert1(docxml, _filename, _dir)
21
+ def convert1(docxml, filename, dir)
22
+ @outputdir = dir
23
+ @outputfile = filename
22
24
  docid_prefixes(docxml) # feeds @xrefs.parse citation processing
23
25
  @xrefs.parse docxml
24
- info docxml, nil
26
+ @xrefs.klass.meta = @meta
27
+ @xrefs.klass.info docxml, nil
25
28
  conversions(docxml)
26
29
  docxml.root["type"] = "presentation"
27
30
  docxml.to_xml.gsub("&lt;", "&#x3c;").gsub("&gt;", "&#x3e;")
@@ -120,7 +123,7 @@ module IsoDoc
120
123
  def metanorma_extension_insert_pt(xml)
121
124
  xml.at(ns("//metanorma-extension")) ||
122
125
  xml.at(ns("//bibdata"))&.after("<metanorma-extension/>")
123
- &.next_element ||
126
+ &.next_element ||
124
127
  xml.root.elements.first.before("<metanorma-extension/>")
125
128
  .previous_element
126
129
  end
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "2.10.2".freeze
2
+ VERSION = "2.10.4".freeze
3
3
  end
@@ -89,7 +89,7 @@ deprecated: 推奨しない用語
89
89
  source: 出典
90
90
  and: and
91
91
  all_parts: 規格群
92
- edition_ordinal: "第3版{{ var1 }}版"
92
+ edition_ordinal: "第{{ var1 }}版"
93
93
  edition: 版
94
94
  version: version
95
95
  toc_figures: List of figures
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.10.2
4
+ version: 2.10.4
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-05-06 00:00:00.000000000 Z
11
+ date: 2024-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: html2doc