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 +4 -4
- data/lib/sgtn-cldr/cldr/localized_date.rb +8 -8
- data/lib/sgtn-cldr/cldr/localized_datetime.rb +5 -11
- data/lib/sgtn-cldr/cldr/localized_str.rb +7 -2
- data/lib/sgtn-cldr/cldr/localized_time.rb +4 -4
- data/lib/sgtn-cldr/formatters/plurals/plural_formatter.rb +64 -0
- data/lib/sgtn-cldr/sgtn-cldr.rb +4 -2
- data/lib/version.rb +1 -1
- data/spec/unit/datetime_spec.rb +18 -18
- data/spec/unit/plural_spec.rb +16 -6
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d25719965f417362efd0275285f560fa415a2a879c77d5304406a27d2e87d030
|
4
|
+
data.tar.gz: bc7983ea4c2f89241b5fac24a4aec217872d290cbba26a1e032a80ebd5e44105
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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)
|
data/lib/version.rb
CHANGED
data/spec/unit/datetime_spec.rb
CHANGED
@@ -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.
|
13
|
-
expect(d.
|
14
|
-
expect(d.
|
15
|
-
expect(d.
|
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 "
|
18
|
+
it "Date" do
|
19
19
|
d = Date.new(2001,2,3)
|
20
|
-
expect(d.
|
21
|
-
expect(d.
|
22
|
-
expect(d.
|
23
|
-
expect(d.
|
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 "
|
26
|
+
it "DateOfDateTime" do
|
27
27
|
d = DateTime.new(2007,11,19,8,37,48,"-06:00")
|
28
|
-
expect(d.to_date(:es)
|
29
|
-
expect(d.to_date(:es)
|
30
|
-
expect(d.to_date(:es)
|
31
|
-
expect(d.to_date(:es)
|
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.
|
37
|
-
expect(d.
|
38
|
-
expect(d.
|
39
|
-
expect(d.
|
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
|
|
data/spec/unit/plural_spec.rb
CHANGED
@@ -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 "
|
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 =>
|
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.
|
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
|
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.
|
284
|
+
rubygems_version: 3.1.4
|
284
285
|
signing_key:
|
285
286
|
specification_version: 4
|
286
287
|
summary: Singleton cldr for L2 support
|