isodoc-i18n 1.0.3 → 1.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e51e4427e97bf2e0fde14e6f995a35f56771180c5480de0231484927442aa80b
4
- data.tar.gz: 7516734ee389ab585094598bab5b8ecc696cf488f91cedf1454f192809dcb075
3
+ metadata.gz: 40bf798e8180b8b3014f6822a1ac8e5336728231d1436dbfe74c49fd54326551
4
+ data.tar.gz: d41acbc509af8a536d02fc3e4fd0511972b61e8730eb47d43d1520b0efd9e000
5
5
  SHA512:
6
- metadata.gz: 876730b932cb38b6fcaa5af50e54b1a7f9b9be6c016ac0f82ad38fd00c0f510a15de812e09be5d733e81a6a16976cf547fc54a9cb113313c82e6762407a2e150
7
- data.tar.gz: cabf6cd3651fb0314a701d5bb08aafdd607eed4f90d2a2df74d7ea7895e4f90d6566abad20c56e816cdf9c247e865131a7d27cbd2ea258a4e9b171b6afbe9117
6
+ metadata.gz: 16aa8550bf43b723bd10576d86be8a371d7fe88cb4967ccd3a88f295f695a6fce19830b250ad587b6a968fee2f8bd4c11cfa37c34c6d49ff7a15ef4544426fe3
7
+ data.tar.gz: 6e0ddd03856d58eed0655f1c978adaec56442eca6c378da15b81c21fd4177be1daf573d157f63da82d21364b7b10c59df726a0cf10cbfe2c87104e25a0e88adb
data/isodoc-i18n.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
24
24
 
25
25
  spec.add_dependency "htmlentities", "~> 4.3.4"
26
- spec.add_dependency "metanorma-utils", "~> 1.2.8"
26
+ spec.add_dependency "metanorma-utils", "~> 1.3.0"
27
27
  spec.add_dependency "twitter_cldr"
28
28
 
29
29
  spec.add_development_dependency "debug"
data/lib/isodoc/i18n.rb CHANGED
@@ -5,9 +5,10 @@ require "twitter_cldr"
5
5
 
6
6
  module IsoDoc
7
7
  class I18n
8
- def load_yaml(lang, script, i18nyaml = nil)
8
+ def load_yaml(lang, script, i18nyaml = nil, i18nhash = nil)
9
9
  ret = load_yaml1(lang, script)
10
10
  return normalise_hash(ret.merge(YAML.load_file(i18nyaml))) if i18nyaml
11
+ return normalise_hash(ret.merge(i18nhash)) if i18nhash
11
12
 
12
13
  normalise_hash(ret)
13
14
  end
@@ -53,10 +54,10 @@ module IsoDoc
53
54
  @labels[key] = val
54
55
  end
55
56
 
56
- def initialize(lang, script, i18nyaml = nil)
57
+ def initialize(lang, script, i18nyaml: nil, i18nhash: nil)
57
58
  @lang = lang
58
59
  @script = script
59
- y = load_yaml(lang, script, i18nyaml)
60
+ y = load_yaml(lang, script, i18nyaml, i18nhash)
60
61
  @labels = y
61
62
  @labels["language"] = @lang
62
63
  @labels["script"] = @script
@@ -151,13 +152,19 @@ module IsoDoc
151
152
  # ord class is either SpelloutRules or OrdinalRules
152
153
  def inflect_ordinal(num, term, ord_class)
153
154
  if @labels["ordinal_keys"].nil? || @labels["ordinal_keys"].empty?
154
- num.localize(tw_cldr_lang).to_rbnf_s(ord_class, @labels[ord_class])
155
+ tw_cldr_localize(num).to_rbnf_s(ord_class, @labels[ord_class])
155
156
  else
156
- num.localize(tw_cldr_lang)
157
+ tw_cldr_localize(num)
157
158
  .to_rbnf_s(ord_class, @labels[ord_class][ordinal_key(term)])
158
159
  end
159
160
  end
160
161
 
162
+ def tw_cldr_localize(num)
163
+ num.localize(tw_cldr_lang)
164
+ rescue StandardError
165
+ num.localize(:en)
166
+ end
167
+
161
168
  def ordinal_key(term)
162
169
  @labels["ordinal_keys"].each_with_object([]) do |k, m|
163
170
  m << case k
@@ -1,5 +1,5 @@
1
1
  module IsoDoc
2
2
  class I18n
3
- VERSION = "1.0.3".freeze
3
+ VERSION = "1.0.6".freeze
4
4
  end
5
5
  end
@@ -30,7 +30,15 @@ RSpec.describe IsoDoc::I18n do
30
30
  end
31
31
 
32
32
  it "loads language file overrides" do
33
- c = IsoDoc::I18n.new("en", "Latn", "spec/assets/new.yaml")
33
+ c = IsoDoc::I18n.new("en", "Latn", i18nyaml: "spec/assets/new.yaml")
34
+ expect(c.text).to eq "text2"
35
+ expect(c.at).to eq "at"
36
+ expect(c.hash.to_s).to be_equivalent_to '{"key1"=>"val1", "key2"=>"val2"}'
37
+ expect(c.arr.to_s).to eq '["arr1", "arr2"]'
38
+ end
39
+
40
+ it "loads language hash overrides" do
41
+ c = IsoDoc::I18n.new("en", "Latn", i18nhash: YAML.load_file("spec/assets/new.yaml"))
34
42
  expect(c.text).to eq "text2"
35
43
  expect(c.at).to eq "at"
36
44
  expect(c.hash.to_s).to be_equivalent_to '{"key1"=>"val1", "key2"=>"val2"}'
@@ -87,16 +95,23 @@ RSpec.describe IsoDoc::I18n do
87
95
  end
88
96
 
89
97
  it "does German ordinals" do
90
- c = IsoDoc::I18n.new("de", "Latn", "spec/assets/de.yaml")
98
+ c = IsoDoc::I18n.new("de", "Latn", i18nyaml: "spec/assets/de.yaml")
91
99
  term = c.inflection[c.edition]
92
100
  expect(c.inflect_ordinal(5, term, "SpelloutRules"))
93
101
  .to eq "fünfte"
94
102
  end
95
103
 
96
104
  it "does Chinese ordinals" do
97
- c = IsoDoc::I18n.new("zh", "Hans", "spec/assets/zh-Hans.yaml")
105
+ c = IsoDoc::I18n.new("zh", "Hans", i18nyaml: "spec/assets/zh-Hans.yaml")
98
106
  term = c.inflection[c.edition]
99
107
  expect(c.inflect_ordinal(5, term, "SpelloutRules"))
100
108
  .to eq "第五"
101
109
  end
110
+
111
+ it "does Klingon ordinals" do
112
+ c = IsoDoc::I18n.new("tlh", "Hans", i18nyaml: "spec/assets/zh-Hans.yaml")
113
+ term = c.inflection[c.edition]
114
+ expect(c.inflect_ordinal(5, term, "SpelloutRules"))
115
+ .to eq "fifth"
116
+ end
102
117
  end
data/spec/spec_helper.rb CHANGED
@@ -30,7 +30,7 @@ def xmlpp(xml)
30
30
  end
31
31
 
32
32
  def metadata(hash)
33
- Hash[hash.sort].delete_if do |_k, v|
33
+ hash.sort.to_h.delete_if do |_k, v|
34
34
  v.nil? || (v.respond_to?(:empty?) && v.empty?)
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isodoc-i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-27 00:00:00.000000000 Z
11
+ date: 2022-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlentities
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2.8
33
+ version: 1.3.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.2.8
40
+ version: 1.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: twitter_cldr
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -239,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
239
  - !ruby/object:Gem::Version
240
240
  version: '0'
241
241
  requirements: []
242
- rubygems_version: 3.3.9
242
+ rubygems_version: 3.3.16
243
243
  signing_key:
244
244
  specification_version: 4
245
245
  summary: isodoc-i18n