singleton-cldr-rb 0.0.1 → 0.0.5
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/sgtn-cldr/cldr/core_ext.rb +2 -1
- data/lib/sgtn-cldr/cldr/localized_str.rb +11 -0
- data/lib/sgtn-cldr/formatters/plurals/plural_formatter.rb +36 -0
- data/lib/sgtn-cldr/sgtn-cldr.rb +5 -2
- data/lib/singleton-cldr.rb +1 -1
- data/lib/version.rb +1 -1
- data/spec/unit/plural_spec.rb +22 -0
- metadata +7 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e286f95c4967909d4db326ac5154172cedd2cce3f1ba88348dfd1fbd9380b05
|
4
|
+
data.tar.gz: 74c2ad9a574505937819db57c63aac57c07b33c62d8919189b086bb056dfa43f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 400aca5fffdef80b9f9632a608c4e1fe77b083110d54338e210c9deb84654933cadbb444dddc5ecb6489aae255caf2a537a1b7aeb7987b6d912034665d37358a
|
7
|
+
data.tar.gz: 1fb8abfa5be0e2c246bbf5dcc43a7734a5c5073b29515082b0192a40d453bed0b2fbbc98b1d3ce98cdfe0ef9580774cf0d287543fbc035fbf66f094f95d728fb
|
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
String.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
|
3
|
+
def to_plural_s(locale, arg)
|
4
|
+
num_str = SgtnCldr::Formatters::PluralFormatter.new(locale).num_s(self, arg)
|
5
|
+
if num_str.nil? || num_str.empty?
|
6
|
+
self.localize(locale) % arg
|
7
|
+
else
|
8
|
+
num_str
|
9
|
+
end
|
10
|
+
end
|
11
|
+
LOCALIZE
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module SgtnCldr
|
2
|
+
module Formatters
|
3
|
+
class PluralFormatter
|
4
|
+
|
5
|
+
attr_reader :locale
|
6
|
+
|
7
|
+
def initialize(locale = TwitterCldr.locale)
|
8
|
+
@locale = TwitterCldr.convert_locale(locale)
|
9
|
+
end
|
10
|
+
|
11
|
+
def num_s(string, replacements)
|
12
|
+
reg = Regexp.union(
|
13
|
+
/%<(\{.*?\})>/
|
14
|
+
)
|
15
|
+
string.gsub(reg) do |match|
|
16
|
+
count_placeholder, patterns = if $1
|
17
|
+
pluralization_hash = JSON.parse($1)
|
18
|
+
if pluralization_hash.is_a?(Hash) && pluralization_hash.size == 1
|
19
|
+
pluralization_hash.first
|
20
|
+
else
|
21
|
+
raise ArgumentError.new('expected a Hash with a single key')
|
22
|
+
end
|
23
|
+
else
|
24
|
+
raise ArgumentError.new('invalide format')
|
25
|
+
end
|
26
|
+
count = replacements[count_placeholder.to_sym].to_s
|
27
|
+
if patterns.is_a?(Hash)
|
28
|
+
return TwitterCldr::Utils.deep_symbolize_keys(patterns)[count.to_sym]
|
29
|
+
else
|
30
|
+
raise ArgumentError.new('expected patterns to be a Hash')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/sgtn-cldr/sgtn-cldr.rb
CHANGED
@@ -3,12 +3,14 @@ module SgtnCldr
|
|
3
3
|
autoload :Cache, "sgtn-cldr/core/cache"
|
4
4
|
end
|
5
5
|
|
6
|
-
autoload :Translation, "sgtn-cldr/api/translation"
|
7
|
-
autoload :Source, "sgtn-cldr/api/source"
|
8
6
|
autoload :Config, "sgtn-cldr/core/config"
|
9
7
|
autoload :Logging, "sgtn-cldr/core/logging"
|
10
8
|
autoload :Exceptions, "sgtn-cldr/core/exceptions"
|
11
9
|
autoload :ValidateUtil, "sgtn-cldr/util/validate-util"
|
10
|
+
|
11
|
+
module Formatters
|
12
|
+
autoload :PluralFormatter, "sgtn-cldr/formatters/plurals/plural_formatter"
|
13
|
+
end
|
12
14
|
|
13
15
|
class << self
|
14
16
|
def configure(options = {}, &block)
|
@@ -67,4 +69,5 @@ module SgtnCldr
|
|
67
69
|
|
68
70
|
end
|
69
71
|
|
72
|
+
require 'twitter_cldr'
|
70
73
|
require 'sgtn-cldr/cldr/core_ext'
|
data/lib/singleton-cldr.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require "sgtn-
|
1
|
+
require "sgtn-cldr/sgtn-cldr"
|
2
2
|
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'twitter_cldr'
|
3
|
+
|
4
|
+
describe SgtnCldr do
|
5
|
+
describe "Plural" do
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
it "plural" do
|
12
|
+
str = 'there %<{ "cat_count": { "one": "is one cat", "zero":"is no cat", "two": "are two cats", "few": "are some cats", "many": "are many cats", "other": "are %{cat_count} cats" } }> in the room'
|
13
|
+
expect(str.to_plural_s(:cy, { :cat_count => 1 })).to eq 'there is one cat in the room'
|
14
|
+
expect(str.to_plural_s(:cy, { :cat_count => 0 })).to eq 'there is no cat in the room'
|
15
|
+
expect(str.to_plural_s(:cy, { :cat_count => 5 })).to eq 'there are 5 cats in the room'
|
16
|
+
expect(str.to_plural_s(:cy, { :cat_count => 3 })).to eq 'there are some cats in the room'
|
17
|
+
expect(str.to_plural_s(:cy, { :cat_count => 2 })).to eq 'there are two cats in the room'
|
18
|
+
s = '%<{"count": {"0": "no horse", "one": "one horse", "other": "%{count} horses"}}>'
|
19
|
+
expect(s.to_plural_s(:cy, { :count => 0 })).to eq 'no horse'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: singleton-cldr-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware G11n Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -216,34 +216,6 @@ dependencies:
|
|
216
216
|
- - "~>"
|
217
217
|
- !ruby/object:Gem::Version
|
218
218
|
version: '0.8'
|
219
|
-
- !ruby/object:Gem::Dependency
|
220
|
-
name: rest-client
|
221
|
-
requirement: !ruby/object:Gem::Requirement
|
222
|
-
requirements:
|
223
|
-
- - "~>"
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
version: '2.0'
|
226
|
-
type: :runtime
|
227
|
-
prerelease: false
|
228
|
-
version_requirements: !ruby/object:Gem::Requirement
|
229
|
-
requirements:
|
230
|
-
- - "~>"
|
231
|
-
- !ruby/object:Gem::Version
|
232
|
-
version: '2.0'
|
233
|
-
- !ruby/object:Gem::Dependency
|
234
|
-
name: multi_json
|
235
|
-
requirement: !ruby/object:Gem::Requirement
|
236
|
-
requirements:
|
237
|
-
- - "~>"
|
238
|
-
- !ruby/object:Gem::Version
|
239
|
-
version: '1.0'
|
240
|
-
type: :runtime
|
241
|
-
prerelease: false
|
242
|
-
version_requirements: !ruby/object:Gem::Requirement
|
243
|
-
requirements:
|
244
|
-
- - "~>"
|
245
|
-
- !ruby/object:Gem::Version
|
246
|
-
version: '1.0'
|
247
219
|
- !ruby/object:Gem::Dependency
|
248
220
|
name: twitter_cldr
|
249
221
|
requirement: !ruby/object:Gem::Requirement
|
@@ -271,12 +243,14 @@ files:
|
|
271
243
|
- lib/sgtn-cldr/cldr/core_ext.rb
|
272
244
|
- lib/sgtn-cldr/cldr/localized_date.rb
|
273
245
|
- lib/sgtn-cldr/cldr/localized_datetime.rb
|
246
|
+
- lib/sgtn-cldr/cldr/localized_str.rb
|
274
247
|
- lib/sgtn-cldr/cldr/localized_time.rb
|
275
248
|
- lib/sgtn-cldr/core/cache.rb
|
276
249
|
- lib/sgtn-cldr/core/config.rb
|
277
250
|
- lib/sgtn-cldr/core/exceptions.rb
|
278
251
|
- lib/sgtn-cldr/core/logging.rb
|
279
252
|
- lib/sgtn-cldr/core/request.rb
|
253
|
+
- lib/sgtn-cldr/formatters/plurals/plural_formatter.rb
|
280
254
|
- lib/sgtn-cldr/sgtn-cldr.rb
|
281
255
|
- lib/sgtn-cldr/util/cache-util.rb
|
282
256
|
- lib/sgtn-cldr/util/validate-util.rb
|
@@ -287,6 +261,7 @@ files:
|
|
287
261
|
- spec/spec_helper.rb
|
288
262
|
- spec/support/sample_data.rb
|
289
263
|
- spec/unit/datetime_spec.rb
|
264
|
+
- spec/unit/plural_spec.rb
|
290
265
|
homepage: https://github.com/vmware/singleton
|
291
266
|
licenses:
|
292
267
|
- MIT
|
@@ -306,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
281
|
- !ruby/object:Gem::Version
|
307
282
|
version: '0'
|
308
283
|
requirements: []
|
309
|
-
rubygems_version: 3.
|
284
|
+
rubygems_version: 3.0.9
|
310
285
|
signing_key:
|
311
286
|
specification_version: 4
|
312
287
|
summary: Singleton cldr for L2 support
|
@@ -316,3 +291,4 @@ test_files:
|
|
316
291
|
- spec/spec_helper.rb
|
317
292
|
- spec/support/sample_data.rb
|
318
293
|
- spec/unit/datetime_spec.rb
|
294
|
+
- spec/unit/plural_spec.rb
|