singleton-cldr-rb 0.0.3 → 0.0.7

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: f9e5a95bd8f2da82b53bba5cf8ea787617bcbfc70663ebb124cd5a16e50973f9
4
- data.tar.gz: 4d3180e5294edcb8c72fbe05a8630459a3442e36433e00a56952ef382d7f8319
3
+ metadata.gz: d25719965f417362efd0275285f560fa415a2a879c77d5304406a27d2e87d030
4
+ data.tar.gz: bc7983ea4c2f89241b5fac24a4aec217872d290cbba26a1e032a80ebd5e44105
5
5
  SHA512:
6
- metadata.gz: 66765a0919f7ef76981ca5928e0f924ba2028dbe78cfb7dae28eb5c3cd4a10db5ec0a2361cb09e2d25c15394a7847dd6f444ff30951d1eff0301bfbf8e9e488b
7
- data.tar.gz: edd68a4545d3cda9774b05eba0fa1d26151024d1304462bd9f22fc9cf884930d7474bf5c648bb4796cf1dc37b078f04340508417b63657ba56b21402bfef965d
6
+ metadata.gz: 013c74b43588bbb2246c7231d9dae919775df89607f7489489c5a87d7e1bc3549c931e3b52cfdba8e7c65d8eb42f170cadc835ff86d674a0d8401b03422740b9
7
+ data.tar.gz: c55dedf91585fad5915d1c60dfd042f07611ff3944227de62c3c4ae535e302dd0303850dc2719156fbe30b5cc4c5601b5f9d8f768b1038ec93e4f2535fe87188
@@ -2,26 +2,26 @@ require 'date'
2
2
  require 'time'
3
3
 
4
4
  Date.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
5
- def to_full_s(locale = TwitterCldr.locale)
6
- self.to_datetime().to_date().to_full_s
5
+ def l_full_s(locale = TwitterCldr.locale)
6
+ self.to_datetime().localize(locale).to_date().to_full_s
7
7
  end
8
8
  LOCALIZE
9
9
 
10
10
  Date.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
11
- def to_long_s(locale = TwitterCldr.locale)
12
- self.to_datetime().to_date().to_long_s
11
+ def l_long_s(locale = TwitterCldr.locale)
12
+ self.to_datetime().localize(locale).to_date().to_long_s
13
13
  end
14
14
  LOCALIZE
15
15
 
16
16
  Date.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
17
- def to_medium_s(locale = TwitterCldr.locale)
18
- self.to_datetime().to_date().to_medium_s
17
+ def l_medium_s(locale = TwitterCldr.locale)
18
+ self.to_datetime().localize(locale).to_date().to_medium_s
19
19
  end
20
20
  LOCALIZE
21
21
 
22
22
 
23
23
  Date.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
24
- def to_short_s(locale = TwitterCldr.locale)
25
- self.to_datetime().to_date().to_short_s
24
+ def l_short_s(locale = TwitterCldr.locale)
25
+ self.to_datetime().localize(locale).to_date().to_short_s
26
26
  end
27
27
  LOCALIZE
@@ -2,32 +2,26 @@ require 'date'
2
2
  require 'time'
3
3
 
4
4
  DateTime.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
5
- def to_full_s(locale = TwitterCldr.locale)
5
+ def l_full_s(locale = TwitterCldr.locale)
6
6
  self.localize(locale).to_full_s
7
7
  end
8
8
  LOCALIZE
9
9
 
10
10
  DateTime.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
11
- def to_long_s(locale = TwitterCldr.locale)
11
+ def l_long_s(locale = TwitterCldr.locale)
12
12
  self.localize(locale).to_long_s
13
13
  end
14
14
  LOCALIZE
15
15
 
16
16
  DateTime.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
17
- def to_medium_s(locale = TwitterCldr.locale)
17
+ def l_medium_s(locale = TwitterCldr.locale)
18
18
  self.localize(locale).to_medium_s
19
19
  end
20
20
  LOCALIZE
21
21
 
22
22
 
23
23
  DateTime.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
24
- def to_short_s(locale = TwitterCldr.locale)
24
+ def l_short_s(locale = TwitterCldr.locale)
25
25
  self.localize(locale).to_short_s
26
26
  end
27
- LOCALIZE
28
-
29
- DateTime.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
30
- def to_date(locale = TwitterCldr.locale)
31
- self.localize(locale).to_date
32
- end
33
- LOCALIZE
27
+ LOCALIZE
@@ -1,6 +1,11 @@
1
1
 
2
2
  String.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
3
- def to_plural_s(arg)
4
- self.localize % arg
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
5
10
  end
6
11
  LOCALIZE
@@ -2,26 +2,26 @@ require 'date'
2
2
  require 'time'
3
3
 
4
4
  Time.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
5
- def to_full_s(locale = TwitterCldr.locale)
5
+ def l_full_s(locale = TwitterCldr.locale)
6
6
  self.localize(locale).to_full_s
7
7
  end
8
8
  LOCALIZE
9
9
 
10
10
  Time.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
11
- def to_long_s(locale = TwitterCldr.locale)
11
+ def l_long_s(locale = TwitterCldr.locale)
12
12
  self.localize(locale).to_long_s
13
13
  end
14
14
  LOCALIZE
15
15
 
16
16
  Time.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
17
- def to_medium_s(locale = TwitterCldr.locale)
17
+ def l_medium_s(locale = TwitterCldr.locale)
18
18
  self.localize(locale).to_medium_s
19
19
  end
20
20
  LOCALIZE
21
21
 
22
22
 
23
23
  Time.class_eval <<-LOCALIZE, __FILE__, __LINE__ + 1
24
- def to_short_s(locale = TwitterCldr.locale)
24
+ def l_short_s(locale = TwitterCldr.locale)
25
25
  self.localize(locale).to_short_s
26
26
  end
27
27
  LOCALIZE
@@ -0,0 +1,64 @@
1
+ require 'json'
2
+
3
+ module SgtnCldr
4
+ module Formatters
5
+ class PluralFormatter
6
+
7
+ attr_reader :locale
8
+
9
+ def initialize(locale = TwitterCldr.locale)
10
+ @locale = TwitterCldr.convert_locale(locale)
11
+ end
12
+
13
+ def deep_symbolize_keys(arg)
14
+ #puts 3221
15
+ case arg
16
+ when Array
17
+ # puts 44
18
+ arg.map { |elem| deep_symbolize_keys(elem) }
19
+ when Hash
20
+ # puts 77
21
+ # puts arg
22
+ # Hash[arg.map { |k, v| [k.is_a?(String) ? k.to_sym : k, deep_symbolize_keys(v)] }]
23
+ # puts arg
24
+ Hash[arg.map { |k, v| [k.is_a?(String) ? k.to_sym : k, deep_symbolize_keys(v)] }]
25
+ else
26
+ # puts 99
27
+ # puts arg
28
+ arg
29
+ end
30
+ end
31
+
32
+ def num_s(string, replacements)
33
+ reg = Regexp.union(
34
+ /%<(\{.*?\})>/
35
+ )
36
+ string.gsub(reg) do |match|
37
+ count_placeholder, patterns = if $1
38
+ pluralization_hash = JSON.parse($1)
39
+ if pluralization_hash.is_a?(Hash) && pluralization_hash.size == 1
40
+ pluralization_hash.first
41
+ else
42
+ raise ArgumentError.new('expected a Hash with a single key')
43
+ end
44
+ else
45
+ raise ArgumentError.new('invalide format')
46
+ end
47
+ count = replacements[count_placeholder.to_sym].to_s
48
+ puts 11
49
+ puts count
50
+ puts patterns
51
+ puts deep_symbolize_keys(patterns)[count.to_sym]
52
+ puts 0
53
+ puts locale
54
+ puts TwitterCldr::Formatters::Plurals::Rules.rule_for(count, locale)
55
+ if patterns.is_a?(Hash)
56
+ return TwitterCldr::Utils.deep_symbolize_keys(patterns)[count.to_sym]
57
+ else
58
+ raise ArgumentError.new('expected patterns to be a Hash')
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ 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)
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- VERSION_INFO = [0, 0, 3].freeze
2
+ VERSION_INFO = [0, 0, 7].freeze
3
3
  VERSION = VERSION_INFO.map(&:to_s).join('.').freeze
@@ -9,34 +9,34 @@ describe SgtnCldr do
9
9
 
10
10
  it "DateTime" do
11
11
  d = DateTime.new(2007,11,19,8,37,48,"-06:00")
12
- expect(d.to_full_s(:es)).to eq 'lunes, 19 de noviembre de 2007, 14:37:48 (tiempo universal coordinado)'
13
- expect(d.to_long_s(:es)).to eq '19 de noviembre de 2007, 14:37:48 UTC'
14
- expect(d.to_medium_s(:es)).to eq '19 nov 2007 14:37:48'
15
- expect(d.to_short_s(:es)).to eq '19/11/07 14:37'
12
+ expect(d.l_full_s(:es)).to eq 'lunes, 19 de noviembre de 2007, 14:37:48 (tiempo universal coordinado)'
13
+ expect(d.l_long_s(:es)).to eq '19 de noviembre de 2007, 14:37:48 UTC'
14
+ expect(d.l_medium_s(:es)).to eq '19 nov 2007 14:37:48'
15
+ expect(d.l_short_s(:es)).to eq '19/11/07 14:37'
16
16
  end
17
17
 
18
- it "Date0" do
18
+ it "Date" do
19
19
  d = Date.new(2001,2,3)
20
- expect(d.to_full_s(:es)).to eq 'Saturday, February 3, 2001'
21
- expect(d.to_long_s(:es)).to eq 'February 3, 2001'
22
- expect(d.to_medium_s(:es)).to eq 'Feb 3, 2001'
23
- expect(d.to_short_s(:es)).to eq '2/3/01'
20
+ expect(d.l_full_s(:es)).to eq 'sábado, 3 de febrero de 2001'
21
+ expect(d.l_long_s(:es)).to eq '3 de febrero de 2001'
22
+ expect(d.l_medium_s(:es)).to eq '3 feb 2001'
23
+ expect(d.l_short_s(:es)).to eq '3/2/01'
24
24
  end
25
25
 
26
- it "Date" do
26
+ it "DateOfDateTime" do
27
27
  d = DateTime.new(2007,11,19,8,37,48,"-06:00")
28
- expect(d.to_date(:es).to_full_s).to eq 'lunes, 19 de noviembre de 2007'
29
- expect(d.to_date(:es).to_long_s).to eq '19 de noviembre de 2007'
30
- expect(d.to_date(:es).to_medium_s).to eq '19 nov 2007'
31
- expect(d.to_date(:es).to_short_s).to eq '19/11/07'
28
+ expect(d.to_date.l_full_s(:es)).to eq 'lunes, 19 de noviembre de 2007'
29
+ expect(d.to_date.l_long_s(:es)).to eq '19 de noviembre de 2007'
30
+ expect(d.to_date.l_medium_s(:es)).to eq '19 nov 2007'
31
+ expect(d.to_date.l_short_s(:es)).to eq '19/11/07'
32
32
  end
33
33
 
34
34
  it "time" do
35
35
  d = Time.new(2007,11,1,15,25,0, "+09:00")
36
- expect(d.to_full_s(:es)).to eq '6:25:00 (tiempo universal coordinado)'
37
- expect(d.to_long_s(:es)).to eq '6:25:00 UTC'
38
- expect(d.to_medium_s(:es)).to eq '6:25:00'
39
- expect(d.to_short_s(:es)).to eq '6:25'
36
+ expect(d.l_full_s(:es)).to eq '6:25:00 (tiempo universal coordinado)'
37
+ expect(d.l_long_s(:es)).to eq '6:25:00 UTC'
38
+ expect(d.l_medium_s(:es)).to eq '6:25:00'
39
+ expect(d.l_short_s(:es)).to eq '6:25'
40
40
  end
41
41
  end
42
42
 
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'twitter_cldr'
2
3
 
3
4
  describe SgtnCldr do
4
5
  describe "Plural" do
@@ -6,12 +7,21 @@ describe SgtnCldr do
6
7
  before :each do
7
8
 
8
9
  end
9
-
10
- it "Plural_num" do
11
- str = 'there %<{ "cat_count": { "one": "is one cat", "other": "are %{cat_count} cats" } }> in the room'
12
- expect(str.to_plural_s({ :cat_count => 1 })).to eq 'there is one cat in the room'
13
- expect(str.to_plural_s({ :cat_count => 3 })).to eq 'there are 3 cats in the room'
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
+ puts 0
21
+ puts "5" + s.to_plural_s(:pt, { :count => 0 })
22
+ puts TwitterCldr::Formatters::Plurals::Rules.all_for(:pt_PT)
23
+ puts 0.localize("it").plural_rule
24
+ puts (0).floor
14
25
  end
15
26
  end
16
-
17
27
  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.3
4
+ version: 0.0.7
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-10-08 00:00:00.000000000 Z
11
+ date: 2021-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -250,6 +250,7 @@ files:
250
250
  - lib/sgtn-cldr/core/exceptions.rb
251
251
  - lib/sgtn-cldr/core/logging.rb
252
252
  - lib/sgtn-cldr/core/request.rb
253
+ - lib/sgtn-cldr/formatters/plurals/plural_formatter.rb
253
254
  - lib/sgtn-cldr/sgtn-cldr.rb
254
255
  - lib/sgtn-cldr/util/cache-util.rb
255
256
  - lib/sgtn-cldr/util/validate-util.rb
@@ -280,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
281
  - !ruby/object:Gem::Version
281
282
  version: '0'
282
283
  requirements: []
283
- rubygems_version: 3.0.9
284
+ rubygems_version: 3.1.4
284
285
  signing_key:
285
286
  specification_version: 4
286
287
  summary: Singleton cldr for L2 support