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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d897c4259e62a3870f5419a4bad6914633965a0b8cd6a741a9a42dac05f7d4ac
4
- data.tar.gz: 402f7feb2f29491c9a12ce0e461f3002089ab52fbdcbf1ed943a33ba69fab143
3
+ metadata.gz: 7e286f95c4967909d4db326ac5154172cedd2cce3f1ba88348dfd1fbd9380b05
4
+ data.tar.gz: 74c2ad9a574505937819db57c63aac57c07b33c62d8919189b086bb056dfa43f
5
5
  SHA512:
6
- metadata.gz: 28050e1bbf67294d39f944ea128d7ca0c3b6c844e66a084c1bb45b93761a2d0400a799b2ac0d8708b53586181c78dd062bed85609710d7eb8ecf4650df131f7c
7
- data.tar.gz: 36d61f9eb159631a25052f7572d0a8a5c2559f530251c410086324a1fc7bb8f9d2f70c0c4c5fdced20ad46a3f488b88edfe03fe14215d2dd46f49ed08b6a9ba4
6
+ metadata.gz: 400aca5fffdef80b9f9632a608c4e1fe77b083110d54338e210c9deb84654933cadbb444dddc5ecb6489aae255caf2a537a1b7aeb7987b6d912034665d37358a
7
+ data.tar.gz: 1fb8abfa5be0e2c246bbf5dcc43a7734a5c5073b29515082b0192a40d453bed0b2fbbc98b1d3ce98cdfe0ef9580774cf0d287543fbc035fbf66f094f95d728fb
@@ -1,3 +1,4 @@
1
1
  require 'sgtn-cldr/cldr/localized_datetime'
2
2
  require 'sgtn-cldr/cldr/localized_date'
3
- require 'sgtn-cldr/cldr/localized_time'
3
+ require 'sgtn-cldr/cldr/localized_time'
4
+ require 'sgtn-cldr/cldr/localized_str'
@@ -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
@@ -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'
@@ -1,2 +1,2 @@
1
- require "sgtn-client/sgtn-client"
1
+ require "sgtn-cldr/sgtn-cldr"
2
2
 
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- VERSION_INFO = [0, 0, 1].freeze
2
+ VERSION_INFO = [0, 0, 5].freeze
3
3
  VERSION = VERSION_INFO.map(&:to_s).join('.').freeze
@@ -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.1
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-07-08 00:00:00.000000000 Z
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.1.4
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