isodoc 2.10.3 → 2.10.4
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/class_utils.rb +1 -1
- data/lib/isodoc/presentation_function/math.rb +13 -62
- data/lib/isodoc/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df0cc3b9722ac37d5d0853fe0b483fedc476ad51655488a893dcb7c58f08b5a3
|
4
|
+
data.tar.gz: 8f5fe80aa471b64d274e3c8b44b87cc6c9fd5ff20bf52b9a61ee3d8ede5421e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f8da1dc68e54da5f58af3ad2ca370e175cc914216ecd2148068ec745975c8229371fa87b586ab60c4701b0b21d9b676893e15d97cabc1e513cba20c5ed2ad80
|
7
|
+
data.tar.gz: b20e85c69fe1f89c327b22c2f0232ab751c577028de077bb6b890ae337d24c98de939a8ecb1ff8607a6d2dd9e577abec8404372572033361c4939578be4e0c99
|
data/lib/isodoc/class_utils.rb
CHANGED
@@ -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 =
|
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
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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{(?<grp>[^#])?(?<grpdig>#+0)(?<decpt>.)(?<frdig>#+)(?<frgrp>[^#])?}
|
83
|
-
.match(@localizenumber) or return {}
|
84
|
-
ret = { decimal: m[:decpt], group_digits: m[:grpdig].size,
|
85
|
-
fraction_group_digits: m[:frdig].size,
|
86
|
-
group: m[:grp] || "",
|
87
|
-
fraction_group: m[:frgrp] || "" }.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=["'][^"']+["']/, "")
|
data/lib/isodoc/version.rb
CHANGED
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.
|
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-06-
|
11
|
+
date: 2024-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: html2doc
|