ruby-cldr 0.0.1
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.
- data/LICENSE +20 -0
- data/README.textile +104 -0
- data/Rakefile +18 -0
- data/TODO +68 -0
- data/VERSION +1 -0
- data/cldr.thor +5 -0
- data/lib/cldr/data/base.rb +66 -0
- data/lib/cldr/data/calendars/gregorian.rb +124 -0
- data/lib/cldr/data/calendars.rb +12 -0
- data/lib/cldr/data/currencies.rb +26 -0
- data/lib/cldr/data/delimiters.rb +21 -0
- data/lib/cldr/data/languages.rb +17 -0
- data/lib/cldr/data/numbers.rb +60 -0
- data/lib/cldr/data/plurals/cldr_grammar.treetop +50 -0
- data/lib/cldr/data/plurals/grammar.rb +536 -0
- data/lib/cldr/data/plurals/rules.rb +113 -0
- data/lib/cldr/data/plurals.rb +39 -0
- data/lib/cldr/data/territories.rb +17 -0
- data/lib/cldr/data/timezones.rb +25 -0
- data/lib/cldr/data/units.rb +25 -0
- data/lib/cldr/data.rb +34 -0
- data/lib/cldr/download.rb +20 -0
- data/lib/cldr/export/ruby.rb +16 -0
- data/lib/cldr/export/yaml.rb +39 -0
- data/lib/cldr/export.rb +69 -0
- data/lib/cldr/format/currency.rb +11 -0
- data/lib/cldr/format/date.rb +144 -0
- data/lib/cldr/format/datetime/base.rb +32 -0
- data/lib/cldr/format/datetime.rb +28 -0
- data/lib/cldr/format/decimal/base.rb +18 -0
- data/lib/cldr/format/decimal/fraction.rb +28 -0
- data/lib/cldr/format/decimal/integer.rb +46 -0
- data/lib/cldr/format/decimal/number.rb +44 -0
- data/lib/cldr/format/decimal.rb +32 -0
- data/lib/cldr/format/percent.rb +11 -0
- data/lib/cldr/format/time.rb +71 -0
- data/lib/cldr/format.rb +113 -0
- data/lib/cldr/thor.rb +33 -0
- data/lib/cldr.rb +7 -0
- data/lib/core_ext/hash/deep_merge.rb +7 -0
- data/lib/core_ext/hash/deep_stringify_keys.rb +11 -0
- data/lib/core_ext/hash/symbolize_keys.rb +10 -0
- data/lib/core_ext/string/camelize.rb +5 -0
- data/lib/core_ext/string/underscore.rb +9 -0
- data/test/all.rb +3 -0
- data/test/data/all.rb +3 -0
- data/test/data/calendars_test.rb +149 -0
- data/test/data/currencies_test.rb +47 -0
- data/test/data/delimiters_test.rb +31 -0
- data/test/data/languages_test.rb +67 -0
- data/test/data/numbers_test.rb +61 -0
- data/test/data/plurals_test.rb +132 -0
- data/test/data/territories_test.rb +51 -0
- data/test/data/timezones_test.rb +56 -0
- data/test/data/units_test.rb +36 -0
- data/test/export_test.rb +57 -0
- data/test/formats/all.rb +3 -0
- data/test/formats/datetime/all.rb +3 -0
- data/test/formats/datetime/date_test.rb +31 -0
- data/test/formats/datetime/datetime_test.rb +18 -0
- data/test/formats/datetime/day_test.rb +41 -0
- data/test/formats/datetime/hour_test.rb +79 -0
- data/test/formats/datetime/minute_test.rb +25 -0
- data/test/formats/datetime/month_test.rb +76 -0
- data/test/formats/datetime/period_test.rb +20 -0
- data/test/formats/datetime/quarter_test.rb +118 -0
- data/test/formats/datetime/second_test.rb +80 -0
- data/test/formats/datetime/time_test.rb +33 -0
- data/test/formats/datetime/timezone_test.rb +23 -0
- data/test/formats/datetime/year_test.rb +57 -0
- data/test/formats/decimal/fraction_test.rb +17 -0
- data/test/formats/decimal/integer_test.rb +67 -0
- data/test/formats/decimal/number_test.rb +77 -0
- data/test/formats/decimal_test.rb +19 -0
- data/test/formats/format_test.rb +66 -0
- data/test/formats/rails_compat/all.rb +3 -0
- data/test/formats/rails_compat/format_integer_test.rb +56 -0
- data/test/formats/rails_compat/format_number_test.rb +134 -0
- data/test/test_helper.rb +5 -0
- metadata +169 -0
@@ -0,0 +1,132 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
class TestCldrDataPluralParser < Test::Unit::TestCase
|
4
|
+
def cldr_data
|
5
|
+
File.read(File.dirname(__FILE__) + '/../../vendor/cldr/common/supplemental/plurals.xml')
|
6
|
+
end
|
7
|
+
|
8
|
+
def cldr_rules
|
9
|
+
Cldr::Data::Plurals::Rules.parse(cldr_data)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_compiles_to_valid_ruby_code
|
13
|
+
assert_nothing_raised { eval(cldr_rules.to_ruby) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_evals_to_a_hash_containing_plural_rule_and_keys_per_locale
|
17
|
+
data = eval(cldr_rules.to_ruby)
|
18
|
+
assert Hash === data
|
19
|
+
assert Proc === data[:de][:i18n][:plural][:rule]
|
20
|
+
assert_equal [:one, :other], data[:de][:i18n][:plural][:keys]
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_lookup_rule_by_locale
|
24
|
+
assert_equal "lambda { |n| n == 1 ? :one : :other }", cldr_rules.rule(:de).to_ruby
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_parses_n
|
28
|
+
assert Cldr::Data::Plurals::Rule.parse('n').is_a?(Cldr::Data::Plurals::Expression)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_parses_n_is_1
|
32
|
+
rule = Cldr::Data::Plurals::Rule.parse('n is 1')
|
33
|
+
assert_equal [:is, '1'], [rule.operator, rule.operand]
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_parses_n_mod_1_is_1
|
37
|
+
rule = Cldr::Data::Plurals::Rule.parse('n mod 1 is 1')
|
38
|
+
assert_equal [:is, '1', '1'], [rule.operator, rule.operand, rule.mod]
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_parses_n_is_not_1
|
42
|
+
rule = Cldr::Data::Plurals::Rule.parse('n is not 1')
|
43
|
+
assert_equal [:is, '1', true], [rule.operator, rule.operand, rule.negate]
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_parses_n_mod_1_is_not_1
|
47
|
+
rule = Cldr::Data::Plurals::Rule.parse('n mod 1 is not 1')
|
48
|
+
assert_equal [:is, '1', true, '1'], [rule.operator, rule.operand, rule.negate, rule.mod]
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_parses_n_in_1_2
|
52
|
+
rule = Cldr::Data::Plurals::Rule.parse('n in 1..2')
|
53
|
+
assert_equal [:in, '[1, 2]'], [rule.operator, rule.operand]
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_parses_n_mod_1_in_1_2
|
57
|
+
rule = Cldr::Data::Plurals::Rule.parse('n mod 1 in 1..2')
|
58
|
+
assert_equal [:in, '[1, 2]', '1'], [rule.operator, rule.operand, rule.mod]
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_parses_n_not_in_1_2
|
62
|
+
rule = Cldr::Data::Plurals::Rule.parse('n not in 1..2')
|
63
|
+
assert_equal [:in, '[1, 2]', true], [rule.operator, rule.operand, rule.negate]
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_parses_n_mod_1_not_in_1_2
|
67
|
+
rule = Cldr::Data::Plurals::Rule.parse('n mod 1 not in 1..2')
|
68
|
+
assert_equal [:in, '[1, 2]', true, '1'], [rule.operator, rule.operand, rule.negate, rule.mod]
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_parses_or_condition
|
72
|
+
rule = Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4')
|
73
|
+
assert_equal 2, rule.size
|
74
|
+
assert_equal [:is, '2', true, '1'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod]
|
75
|
+
assert_equal [:in, '[3, 4]', false, '2'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod]
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_parses_and_condition
|
79
|
+
rule = Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4')
|
80
|
+
assert_equal 2, rule.size
|
81
|
+
assert_equal [:is, '2', true, '1'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod]
|
82
|
+
assert_equal [:in, '[3, 4]', false, '2'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod]
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_compiles_n
|
86
|
+
assert_equal 'n', Cldr::Data::Plurals::Rule.parse('n').to_ruby
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_compiles_n_is_2
|
90
|
+
assert_equal 'n == 2', Cldr::Data::Plurals::Rule.parse('n is 2').to_ruby
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_compiles_n_mod_1_is_2
|
94
|
+
assert_equal 'n % 1 == 2', Cldr::Data::Plurals::Rule.parse('n mod 1 is 2').to_ruby
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_compiles_n_is_not_2
|
98
|
+
assert_equal 'n != 2', Cldr::Data::Plurals::Rule.parse('n is not 2').to_ruby
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_compiles_n_mod_1_is_not_2
|
102
|
+
assert_equal 'n % 1 != 2', Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2').to_ruby
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_compiles_n_in_1_2
|
106
|
+
assert_equal '[1, 2].include?(n)', Cldr::Data::Plurals::Rule.parse('n in 1..2').to_ruby
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_compiles_n_mod_1_in_1_2
|
110
|
+
assert_equal '[1, 2].include?(n % 1)', Cldr::Data::Plurals::Rule.parse('n mod 1 in 1..2').to_ruby
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_compiles_n_not_in_1_2
|
114
|
+
assert_equal '![1, 2].include?(n)', Cldr::Data::Plurals::Rule.parse('n not in 1..2').to_ruby
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_compiles_n_mod_1_not_in_1_2
|
118
|
+
assert_equal '![1, 2].include?(n % 1)', Cldr::Data::Plurals::Rule.parse('n mod 1 not in 1..2').to_ruby
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_compiles_or_condition
|
122
|
+
assert_equal 'n % 1 != 2 || [3, 4].include?(n % 2)', Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4').to_ruby
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_compiles_and_condition
|
126
|
+
assert_equal 'n % 1 != 2 && [3, 4].include?(n % 2)', Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4').to_ruby
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_compiles_n_mod_100_in_3_99
|
130
|
+
assert_equal '[3, 4, 5, 6].include?(n % 100)', Cldr::Data::Plurals::Rule.parse('n mod 100 in 3..6').to_ruby
|
131
|
+
end
|
132
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
4
|
+
|
5
|
+
class TestCldrDataTerritories < Test::Unit::TestCase
|
6
|
+
define_method 'test: territories :de' do
|
7
|
+
codes = [:"001", :"002", :"003", :"005", :"009", :"011", :"013", :"014",
|
8
|
+
:"015", :"017", :"018", :"019", :"021", :"029", :"030", :"034",
|
9
|
+
:"035", :"039", :"053", :"054", :"057", :"061", :"062", :"142",
|
10
|
+
:"143", :"145", :"150", :"151", :"154", :"155", :"172", :"419",
|
11
|
+
:"830", :AD, :AE, :AF, :AG, :AI, :AL, :AM, :AN, :AO, :AQ, :AR,
|
12
|
+
:AS, :AT, :AU, :AW, :AX, :AZ, :BA, :BB, :BD, :BE, :BF, :BG, :BH,
|
13
|
+
:BI, :BJ, :BL, :BM, :BN, :BO, :BR, :BS, :BT, :BV, :BW, :BY, :BZ,
|
14
|
+
:CA, :CC, :CD, :CF, :CG, :CH, :CI, :CK, :CL, :CM, :CN, :CO, :CR,
|
15
|
+
:CS, :CU, :CV, :CX, :CY, :CZ, :DE, :DJ, :DK, :DM, :DO, :DZ, :EC,
|
16
|
+
:EE, :EG, :EH, :ER, :ES, :ET, :FI, :FJ, :FK, :FM, :FO, :FR, :GA,
|
17
|
+
:GB, :GD, :GE, :GF, :GG, :GH, :GI, :GL, :GM, :GN, :GP, :GQ, :GR,
|
18
|
+
:GS, :GT, :GU, :GW, :GY, :HK, :HM, :HN, :HR, :HT, :HU, :ID, :IE,
|
19
|
+
:IL, :IM, :IN, :IO, :IQ, :IR, :IS, :IT, :JE, :JM, :JO, :JP, :KE,
|
20
|
+
:KG, :KH, :KI, :KM, :KN, :KP, :KR, :KW, :KY, :KZ, :LA, :LB, :LC,
|
21
|
+
:LI, :LK, :LR, :LS, :LT, :LU, :LV, :LY, :MA, :MC, :MD, :ME, :MF,
|
22
|
+
:MG, :MH, :MK, :ML, :MM, :MN, :MO, :MP, :MQ, :MR, :MS, :MT, :MU,
|
23
|
+
:MV, :MW, :MX, :MY, :MZ, :NA, :NC, :NE, :NF, :NG, :NI, :NL, :NO,
|
24
|
+
:NP, :NR, :NU, :NZ, :OM, :PA, :PE, :PF, :PG, :PH, :PK, :PL, :PM,
|
25
|
+
:PN, :PR, :PS, :PT, :PW, :PY, :QA, :QO, :QU, :RE, :RO, :RS, :RU,
|
26
|
+
:RW, :SA, :SB, :SC, :SD, :SE, :SG, :SH, :SI, :SJ, :SK, :SL, :SM,
|
27
|
+
:SN, :SO, :SR, :ST, :SV, :SY, :SZ, :TC, :TD, :TF, :TG, :TH, :TJ,
|
28
|
+
:TK, :TL, :TM, :TN, :TO, :TR, :TT, :TV, :TW, :TZ, :UA, :UG, :UM,
|
29
|
+
:US, :UY, :UZ, :VA, :VC, :VE, :VG, :VI, :VN, :VU, :WF, :WS, :YE,
|
30
|
+
:YT, :ZA, :ZM, :ZW, :ZZ]
|
31
|
+
|
32
|
+
territories = Cldr::Data::Territories.new(:de)[:territories]
|
33
|
+
assert (territories.keys - codes).empty? && (codes - territories.keys).empty?
|
34
|
+
assert_equal('Deutschland', territories[:DE])
|
35
|
+
end
|
36
|
+
|
37
|
+
# Cldr::Data.locales.each do |locale|
|
38
|
+
# define_method "test: extract territories for #{locale}" do
|
39
|
+
# assert_nothing_raised do
|
40
|
+
# Cldr::Data::Territories.new(locale)
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
# end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
4
|
+
|
5
|
+
class TestCldrDataTimezones < Test::Unit::TestCase
|
6
|
+
define_method 'test: timezones :de' do
|
7
|
+
codes = [:"Etc/Unknown", :"Europe/Tirane", :"Asia/Yerevan",
|
8
|
+
:"America/Curacao", :"Antarctica/South_Pole",
|
9
|
+
:"Antarctica/Vostok", :"Antarctica/DumontDUrville",
|
10
|
+
:"Europe/Vienna", :"Europe/Brussels", :"Africa/Ouagadougou",
|
11
|
+
:"Atlantic/Bermuda", :"Europe/Zurich", :"Pacific/Easter",
|
12
|
+
:"America/Havana", :"Atlantic/Cape_Verde", :"Indian/Christmas",
|
13
|
+
:"Asia/Nicosia", :"Africa/Djibouti", :"Europe/Copenhagen",
|
14
|
+
:"Africa/Algiers", :"Africa/Cairo", :"Africa/El_Aaiun",
|
15
|
+
:"Atlantic/Canary", :"Africa/Addis_Ababa", :"Pacific/Fiji",
|
16
|
+
:"Atlantic/Faeroe", :"Asia/Tbilisi", :"Africa/Accra",
|
17
|
+
:"Europe/Athens", :"Atlantic/South_Georgia", :"Asia/Hong_Kong",
|
18
|
+
:"Asia/Baghdad", :"Asia/Tehran", :"Europe/Rome",
|
19
|
+
:"America/Jamaica", :"Asia/Tokyo", :"Asia/Bishkek",
|
20
|
+
:"Indian/Comoro", :"America/St_Kitts", :"Asia/Pyongyang",
|
21
|
+
:"America/Cayman", :"Asia/Aqtobe", :"America/St_Lucia",
|
22
|
+
:"Europe/Vilnius", :"Europe/Luxembourg", :"Africa/Tripoli",
|
23
|
+
:"Europe/Chisinau", :"Asia/Macau", :"Indian/Maldives",
|
24
|
+
:"America/Mexico_City", :"Africa/Niamey", :"Asia/Muscat",
|
25
|
+
:"Europe/Warsaw", :"Atlantic/Azores", :"Europe/Lisbon",
|
26
|
+
:"America/Asuncion", :"Asia/Qatar", :"Indian/Reunion",
|
27
|
+
:"Europe/Bucharest", :"Europe/Moscow", :"Asia/Yekaterinburg",
|
28
|
+
:"Asia/Novosibirsk", :"Asia/Krasnoyarsk", :"Asia/Yakutsk",
|
29
|
+
:"Asia/Vladivostok", :"Asia/Sakhalin", :"Asia/Kamchatka",
|
30
|
+
:"Asia/Riyadh", :"Africa/Khartoum", :"Asia/Singapore",
|
31
|
+
:"Atlantic/St_Helena", :"Africa/Mogadishu", :"Africa/Sao_Tome",
|
32
|
+
:"America/El_Salvador", :"Asia/Damascus", :"Asia/Dushanbe",
|
33
|
+
:"America/Port_of_Spain", :"Asia/Taipei", :"Africa/Dar_es_Salaam",
|
34
|
+
:"Europe/Uzhgorod", :"Europe/Kiev", :"Europe/Zaporozhye",
|
35
|
+
:"America/Indiana/Knox", :"Asia/Tashkent", :"America/St_Vincent",
|
36
|
+
:"America/St_Thomas"]
|
37
|
+
|
38
|
+
timezones = Cldr::Data::Timezones.new(:de)[:timezones]
|
39
|
+
assert (timezones.keys - codes).empty? && (codes - timezones.keys).empty?
|
40
|
+
assert_equal({ :city => 'Wien' }, timezones[:"Europe/Vienna"])
|
41
|
+
end
|
42
|
+
|
43
|
+
# Cldr::Data.locales.each do |locale|
|
44
|
+
# define_method "test: extract timezones for #{locale}" do
|
45
|
+
# assert_nothing_raised do
|
46
|
+
# Cldr::Data::Timezones.new(locale)
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
# end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
4
|
+
|
5
|
+
class TestCldrDataUnits < Test::Unit::TestCase
|
6
|
+
define_method 'test: units' do
|
7
|
+
units = {
|
8
|
+
:day => { :one => "{0} Tag", :other => "{0} Tage" },
|
9
|
+
:week => { :one => "{0} Woche", :other => "{0} Wochen" },
|
10
|
+
:month => { :one => "{0} Monat", :other => "{0} Monate" },
|
11
|
+
:year => { :one => "{0} Jahr", :other => "{0} Jahre" },
|
12
|
+
:hour => { :one => "{0} Std.", :other => "{0} Std." },
|
13
|
+
:minute => { :one => "{0} Min.", :other => "{0} Min." },
|
14
|
+
:second => { :one => "{0} Sek.", :other => "{0} Sek." }
|
15
|
+
}
|
16
|
+
keys = %w(day week month year hour minute second).sort
|
17
|
+
data = Cldr::Data::Units.new('de')[:units]
|
18
|
+
|
19
|
+
assert_equal keys, data.keys.map { |key| key.to_s }.sort
|
20
|
+
assert_equal units[:day], data[:day]
|
21
|
+
assert_equal units[:week], data[:week]
|
22
|
+
assert_equal units[:month], data[:month]
|
23
|
+
assert_equal units[:year], data[:year]
|
24
|
+
assert_equal units[:hour], data[:hour]
|
25
|
+
assert_equal units[:minute], data[:minute]
|
26
|
+
assert_equal units[:second], data[:second]
|
27
|
+
end
|
28
|
+
|
29
|
+
# Cldr::Data.locales.each do |locale|
|
30
|
+
# define_method "test: extract units for #{locale}" do
|
31
|
+
# assert_nothing_raised do
|
32
|
+
# Cldr::Data::Units.new(locale)
|
33
|
+
# end
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
end
|
data/test/export_test.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
4
|
+
require 'yaml'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
class TestExtract < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
Cldr::Export.base_path = tmp_dir
|
10
|
+
FileUtils.mkdir_p(tmp_dir) rescue nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
FileUtils.rm_r(tmp_dir)
|
15
|
+
end
|
16
|
+
|
17
|
+
def tmp_dir
|
18
|
+
File.expand_path(File.dirname(__FILE__) + '/tmp')
|
19
|
+
end
|
20
|
+
|
21
|
+
define_method 'test: passing the merge option generates and merge data for all fallback locales' do
|
22
|
+
data = Cldr::Export.data('numbers', 'de-AT')
|
23
|
+
assert !data[:numbers][:formats][:nan]
|
24
|
+
|
25
|
+
data = Cldr::Export.data('numbers', 'de-AT', :merge => true)
|
26
|
+
assert_equal 'NaN', data[:numbers][:symbols][:nan]
|
27
|
+
end
|
28
|
+
|
29
|
+
define_method "test: exports data to files" do
|
30
|
+
Cldr::Export.export(:locales => %w(de), :components => %w(calendars))
|
31
|
+
assert File.exists?(Cldr::Export.path('de', 'calendars', 'yml'))
|
32
|
+
end
|
33
|
+
|
34
|
+
define_method "test: exported data starts with the locale at top level" do
|
35
|
+
Cldr::Export.export(:locales => %w(de), :components => %w(calendars))
|
36
|
+
data = YAML.load(File.open(Cldr::Export.path('de', 'calendars', 'yml')))
|
37
|
+
assert data['de']
|
38
|
+
end
|
39
|
+
|
40
|
+
define_method "test: writes dot-separated symbols to yaml" do
|
41
|
+
data = { :format => { :narrow => :"calendars.gregorian.months.stand-alone.narrow" } }
|
42
|
+
yaml = %(\nformat: \n narrow: :"calendars.gregorian.months.stand-alone.narrow")
|
43
|
+
|
44
|
+
assert_equal yaml, Cldr::Export::Yaml.new.emit(data.deep_stringify_keys)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Cldr::Data.locales.each do |locale|
|
48
|
+
# Cldr::Data.components.each do |component|
|
49
|
+
# define_method "test: exported yaml file yaml for #{locale}/#{component} readable" do
|
50
|
+
# Cldr::Export.export(:locales => [locale], :components => [component])
|
51
|
+
# assert_nothing_raised do
|
52
|
+
# YAML.load(File.open(Cldr::Data::Export.path(locale, component))) rescue Errno::ENOENT
|
53
|
+
# end
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
# end
|
57
|
+
end
|
data/test/formats/all.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDateFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(object, pattern)
|
13
|
+
Cldr::Format::Date.new(pattern, @calendar).apply(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method "test: full date pattern :de" do
|
17
|
+
assert_equal 'Montag, 11. Januar 2010', format(Date.new(2010, 1, 11), 'EEEE, d. MMMM y')
|
18
|
+
end
|
19
|
+
|
20
|
+
define_method "test: long date pattern :de" do
|
21
|
+
assert_equal '11. Januar 2010', format(Date.new(2010, 1, 11), 'd. MMMM y')
|
22
|
+
end
|
23
|
+
|
24
|
+
define_method "test: medium date pattern :de" do
|
25
|
+
assert_equal '11.01.2010', format(Date.new(2010, 1, 11), 'dd.MM.yyyy')
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method "test: short date pattern :de" do
|
29
|
+
assert_equal '11.01.10', format(Date.new(2010, 1, 11), 'dd.MM.yy')
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDatetimeFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
define_method "test: datetime pattern :de" do
|
13
|
+
date = Cldr::Format::Date.new('dd.MM.yyyy', @calendar)
|
14
|
+
time = Cldr::Format::Time.new('HH:mm', @calendar)
|
15
|
+
result = Cldr::Format::Datetime.new('{1} {0}', date, time).apply(DateTime.new(2010, 1, 10, 13, 12, 11))
|
16
|
+
assert_equal '10.01.2010 13:12', result
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDateDayFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(object, pattern)
|
13
|
+
Cldr::Format::Date.new(pattern, @calendar).apply(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
# DAY
|
17
|
+
|
18
|
+
define_method "test: pattern d" do
|
19
|
+
assert_equal '1', format(Date.new(2010, 1, 1), 'd')
|
20
|
+
assert_equal '10', format(Date.new(2010, 1, 10), 'd')
|
21
|
+
end
|
22
|
+
|
23
|
+
define_method "test: pattern dd" do
|
24
|
+
assert_equal '01', format(Date.new(2010, 1, 1), 'dd')
|
25
|
+
assert_equal '10', format(Date.new(2010, 1, 10), 'dd')
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method "test: pattern E, EE, EEE" do
|
29
|
+
assert_equal 'Fr.', format(Date.new(2010, 1, 1), 'E')
|
30
|
+
assert_equal 'Fr.', format(Date.new(2010, 1, 1), 'EE')
|
31
|
+
assert_equal 'Fr.', format(Date.new(2010, 1, 1), 'EEE')
|
32
|
+
end
|
33
|
+
|
34
|
+
define_method "test: pattern EEEE" do
|
35
|
+
assert_equal 'Freitag', format(Date.new(2010, 1, 1), 'EEEE')
|
36
|
+
end
|
37
|
+
|
38
|
+
define_method "test: pattern EEEEE" do
|
39
|
+
assert_equal 'F', format(Date.new(2010, 1, 1), 'EEEEE')
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDateHourFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(object, pattern)
|
13
|
+
Cldr::Format::Time.new(pattern, @calendar).apply(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method "test: h" do
|
17
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 0, 1, 1), 'h')
|
18
|
+
assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'h')
|
19
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'h')
|
20
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'h')
|
21
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'h')
|
22
|
+
end
|
23
|
+
|
24
|
+
define_method "test: hh" do
|
25
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 0, 1, 1), 'hh')
|
26
|
+
assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'hh')
|
27
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'hh')
|
28
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'hh')
|
29
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'hh')
|
30
|
+
end
|
31
|
+
|
32
|
+
define_method "test: H" do
|
33
|
+
assert_equal '0', format(Time.local(2000, 1, 1, 0, 1, 1), 'H')
|
34
|
+
assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'H')
|
35
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'H')
|
36
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'H')
|
37
|
+
assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'H')
|
38
|
+
end
|
39
|
+
|
40
|
+
define_method "test: HH" do
|
41
|
+
assert_equal '00', format(Time.local(2000, 1, 1, 0, 1, 1), 'HH')
|
42
|
+
assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'HH')
|
43
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'HH')
|
44
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'HH')
|
45
|
+
assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'HH')
|
46
|
+
end
|
47
|
+
|
48
|
+
define_method "test: K" do
|
49
|
+
assert_equal '0', format(Time.local(2000, 1, 1, 0, 1, 1), 'K')
|
50
|
+
assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'K')
|
51
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'K')
|
52
|
+
assert_equal '0', format(Time.local(2000, 1, 1, 12, 1, 1), 'K')
|
53
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'K')
|
54
|
+
end
|
55
|
+
|
56
|
+
define_method "test: KK" do
|
57
|
+
assert_equal '00', format(Time.local(2000, 1, 1, 0, 1, 1), 'KK')
|
58
|
+
assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'KK')
|
59
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'KK')
|
60
|
+
assert_equal '00', format(Time.local(2000, 1, 1, 12, 1, 1), 'KK')
|
61
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'KK')
|
62
|
+
end
|
63
|
+
|
64
|
+
define_method "test: k" do
|
65
|
+
assert_equal '24', format(Time.local(2000, 1, 1, 0, 1, 1), 'k')
|
66
|
+
assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'k')
|
67
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'k')
|
68
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'k')
|
69
|
+
assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'k')
|
70
|
+
end
|
71
|
+
|
72
|
+
define_method "test: kk" do
|
73
|
+
assert_equal '24', format(Time.local(2000, 1, 1, 0, 1, 1), 'kk')
|
74
|
+
assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'kk')
|
75
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'kk')
|
76
|
+
assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'kk')
|
77
|
+
assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'kk')
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDateMinuteFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(object, pattern)
|
13
|
+
Cldr::Format::Time.new(pattern, @calendar).apply(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method "test: m" do
|
17
|
+
assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'm')
|
18
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 1, 11, 1), 'm')
|
19
|
+
end
|
20
|
+
|
21
|
+
define_method "test: mm" do
|
22
|
+
assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'mm')
|
23
|
+
assert_equal '11', format(Time.local(2000, 1, 1, 1, 11, 1), 'mm')
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDateMonthFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(object, pattern)
|
13
|
+
Cldr::Format::Date.new(pattern, @calendar).apply(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
# MONTH
|
17
|
+
|
18
|
+
define_method "test: pattern M" do
|
19
|
+
assert_equal '1', format(Date.new(2010, 1, 1), 'M')
|
20
|
+
assert_equal '10', format(Date.new(2010, 10, 1), 'M')
|
21
|
+
end
|
22
|
+
|
23
|
+
define_method "test: pattern MM" do
|
24
|
+
assert_equal '01', format(Date.new(2010, 1, 1), 'MM')
|
25
|
+
assert_equal '10', format(Date.new(2010, 10, 1), 'MM')
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method "test: pattern MMM" do
|
29
|
+
assert_equal 'Jan', format(Date.new(2010, 1, 1), 'MMM')
|
30
|
+
assert_equal 'Okt', format(Date.new(2010, 10, 1), 'MMM')
|
31
|
+
end
|
32
|
+
|
33
|
+
define_method "test: pattern MMMM" do
|
34
|
+
assert_equal 'Januar', format(Date.new(2010, 1, 1), 'MMMM')
|
35
|
+
assert_equal 'Oktober', format(Date.new(2010, 10, 1), 'MMMM')
|
36
|
+
end
|
37
|
+
|
38
|
+
# requires cldr's "multiple inheritance"
|
39
|
+
#
|
40
|
+
# define_method "test: pattern MMMMM" do
|
41
|
+
# assert_equal 'J', format(Date.new(2010, 1, 1), 'MMMMM')
|
42
|
+
# assert_equal 'O', format(Date.new(2010, 10, 1), 'MMMMM')
|
43
|
+
# end
|
44
|
+
|
45
|
+
define_method "test: pattern L" do
|
46
|
+
assert_equal '1', format(Date.new(2010, 1, 1), 'L')
|
47
|
+
assert_equal '10', format(Date.new(2010, 10, 1), 'L')
|
48
|
+
end
|
49
|
+
|
50
|
+
define_method "test: pattern LL" do
|
51
|
+
assert_equal '01', format(Date.new(2010, 1, 1), 'LL')
|
52
|
+
assert_equal '10', format(Date.new(2010, 10, 1), 'LL')
|
53
|
+
end
|
54
|
+
|
55
|
+
# requires cldr's "multiple inheritance"
|
56
|
+
#
|
57
|
+
# define_method "test: pattern LLL" do
|
58
|
+
# assert_equal 'Jan', format(Date.new(2010, 1, 1), 'LLL')
|
59
|
+
# assert_equal 'Okt', format(Date.new(2010, 10, 1), 'LLL')
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# define_method "test: pattern LLLL" do
|
63
|
+
# assert_equal 'Januar', format(Date.new(2010, 1, 1), 'LLLL')
|
64
|
+
# assert_equal 'Oktober', format(Date.new(2010, 10, 1), 'LLLL')
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# define_method "test: pattern LLLLL" do
|
68
|
+
# assert_equal 'J', format(Date.new(2010, 1, 1), 'LLLLL')
|
69
|
+
# assert_equal 'O', format(Date.new(2010, 10, 1), 'LLLLL')
|
70
|
+
# end
|
71
|
+
|
72
|
+
define_method "test: pattern LLLLL" do
|
73
|
+
assert_equal 'J', format(Date.new(2010, 1, 1), 'LLLLL')
|
74
|
+
assert_equal 'O', format(Date.new(2010, 10, 1), 'LLLLL')
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class TestCldrDatePeriodFormat < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@locale = :de
|
9
|
+
@calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(object, pattern)
|
13
|
+
Cldr::Format::Time.new(pattern, @calendar).apply(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method "test: a" do
|
17
|
+
assert_equal 'vorm.', format(Time.local(2000, 1, 1, 1, 1, 1), 'a')
|
18
|
+
assert_equal 'nachm.', format(Time.local(2000, 1, 1, 15, 1, 1), 'a')
|
19
|
+
end
|
20
|
+
end
|