ruby-cldr 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/Gemfile +7 -0
  2. data/Gemfile.lock +23 -0
  3. data/README.textile +9 -6
  4. data/VERSION +1 -1
  5. data/lib/cldr.rb +1 -1
  6. data/lib/cldr/data.rb +9 -29
  7. data/lib/cldr/download.rb +2 -2
  8. data/lib/cldr/export.rb +8 -2
  9. data/lib/cldr/export/code.rb +34 -0
  10. data/lib/cldr/export/code/numbers.rb +29 -0
  11. data/lib/cldr/export/data.rb +36 -0
  12. data/lib/cldr/export/data/base.rb +61 -0
  13. data/lib/cldr/export/data/calendars.rb +14 -0
  14. data/lib/cldr/export/data/calendars/gregorian.rb +142 -0
  15. data/lib/cldr/export/data/currencies.rb +28 -0
  16. data/lib/cldr/export/data/delimiters.rb +29 -0
  17. data/lib/cldr/export/data/languages.rb +19 -0
  18. data/lib/cldr/export/data/numbers.rb +67 -0
  19. data/lib/cldr/export/data/plurals.rb +41 -0
  20. data/lib/cldr/{data → export/data}/plurals/cldr_grammar.treetop +0 -0
  21. data/lib/cldr/export/data/plurals/grammar.rb +538 -0
  22. data/lib/cldr/export/data/plurals/rules.rb +119 -0
  23. data/lib/cldr/export/data/territories.rb +19 -0
  24. data/lib/cldr/export/data/timezones.rb +27 -0
  25. data/lib/cldr/export/data/units.rb +29 -0
  26. data/lib/cldr/export/ruby.rb +1 -1
  27. data/lib/cldr/export/yaml.rb +1 -1
  28. data/lib/cldr/format.rb +1 -97
  29. data/lib/cldr/format/currency.rb +1 -1
  30. data/lib/cldr/format/date.rb +1 -1
  31. data/lib/cldr/format/datetime.rb +14 -18
  32. data/lib/cldr/format/datetime/base.rb +1 -1
  33. data/lib/cldr/format/decimal.rb +1 -1
  34. data/lib/cldr/format/decimal/base.rb +1 -1
  35. data/lib/cldr/format/decimal/fraction.rb +1 -1
  36. data/lib/cldr/format/decimal/integer.rb +1 -1
  37. data/lib/cldr/format/decimal/number.rb +1 -1
  38. data/lib/cldr/format/percent.rb +1 -1
  39. data/lib/cldr/format/time.rb +1 -1
  40. data/lib/cldr/thor.rb +3 -3
  41. data/test/all.rb +1 -1
  42. data/test/export/code/numbers_test.rb +11 -0
  43. data/test/{data → export/data}/all.rb +1 -1
  44. data/test/{data → export/data}/calendars_test.rb +18 -18
  45. data/test/{data → export/data}/currencies_test.rb +6 -6
  46. data/test/{data → export/data}/delimiters_test.rb +6 -6
  47. data/test/{data → export/data}/languages_test.rb +6 -6
  48. data/test/{data → export/data}/numbers_test.rb +8 -8
  49. data/test/export/data/plurals_test.rb +141 -0
  50. data/test/{data → export/data}/territories_test.rb +6 -6
  51. data/test/{data → export/data}/timezones_test.rb +6 -6
  52. data/test/{data → export/data}/units_test.rb +6 -6
  53. data/test/export_test.rb +8 -8
  54. data/test/{formats → format}/all.rb +1 -1
  55. data/test/format/currency_test.rb +0 -0
  56. data/test/format/date_test.rb +265 -0
  57. data/test/format/datetime_test.rb +18 -0
  58. data/test/{formats → format}/decimal/fraction_test.rb +4 -4
  59. data/test/{formats → format}/decimal/integer_test.rb +17 -17
  60. data/test/{formats → format}/decimal/number_test.rb +19 -19
  61. data/test/{formats → format}/decimal_test.rb +5 -5
  62. data/test/format/percent_test.rb +0 -0
  63. data/test/format/time_test.rb +195 -0
  64. data/test/test_autotest.rb +36 -0
  65. data/test/test_helper.rb +16 -1
  66. metadata +124 -114
  67. data/lib/cldr/data/base.rb +0 -66
  68. data/lib/cldr/data/calendars.rb +0 -12
  69. data/lib/cldr/data/calendars/gregorian.rb +0 -124
  70. data/lib/cldr/data/currencies.rb +0 -26
  71. data/lib/cldr/data/delimiters.rb +0 -21
  72. data/lib/cldr/data/languages.rb +0 -17
  73. data/lib/cldr/data/numbers.rb +0 -60
  74. data/lib/cldr/data/plurals.rb +0 -39
  75. data/lib/cldr/data/plurals/grammar.rb +0 -536
  76. data/lib/cldr/data/plurals/rules.rb +0 -113
  77. data/lib/cldr/data/territories.rb +0 -17
  78. data/lib/cldr/data/timezones.rb +0 -25
  79. data/lib/cldr/data/units.rb +0 -25
  80. data/test/data/plurals_test.rb +0 -132
  81. data/test/formats/datetime/all.rb +0 -3
  82. data/test/formats/datetime/date_test.rb +0 -31
  83. data/test/formats/datetime/datetime_test.rb +0 -18
  84. data/test/formats/datetime/day_test.rb +0 -41
  85. data/test/formats/datetime/hour_test.rb +0 -79
  86. data/test/formats/datetime/minute_test.rb +0 -25
  87. data/test/formats/datetime/month_test.rb +0 -76
  88. data/test/formats/datetime/period_test.rb +0 -20
  89. data/test/formats/datetime/quarter_test.rb +0 -118
  90. data/test/formats/datetime/second_test.rb +0 -80
  91. data/test/formats/datetime/time_test.rb +0 -33
  92. data/test/formats/datetime/timezone_test.rb +0 -23
  93. data/test/formats/datetime/year_test.rb +0 -57
  94. data/test/formats/format_test.rb +0 -66
  95. data/test/formats/rails_compat/all.rb +0 -3
  96. data/test/formats/rails_compat/format_integer_test.rb +0 -56
  97. data/test/formats/rails_compat/format_number_test.rb +0 -134
@@ -1,113 +0,0 @@
1
- require 'rubygems'
2
- require 'rexml/document'
3
-
4
- class Cldr
5
- module Data
6
- class Plurals
7
- class Rules < Array
8
- class << self
9
- def parse(xml)
10
- rules = new
11
- REXML::Document.new(xml).elements.each('//pluralRules') do |tag|
12
- rule = Rule.new(tag.attributes['locales'].split(/\s+/))
13
- tag.elements.each('pluralRule') { |tag| rule << [tag.attributes['count'], tag.text] }
14
- rules << rule
15
- end
16
- rules
17
- end
18
- end
19
-
20
- def locales
21
- @locales ||= map { |rule| rule.locales }.flatten.map(&:to_s).sort.map(&:to_sym)
22
- end
23
-
24
- def rule(locale)
25
- detect { |rule| rule.locales.include?(locale.to_sym) }
26
- end
27
-
28
- def to_ruby(options = {})
29
- namespaces = options[:namespaces] || [:i18n]
30
- code = locales.map do |locale|
31
- rule = self.rule(locale)
32
- ruby = "{ :plural => { :keys => #{rule.keys.inspect}, :rule => #{rule.to_ruby} } }"
33
- ruby = namespaces.reverse.inject(ruby) { |ruby, namespace| "{ #{namespace.inspect} => #{ruby} }"}
34
- "#{locale.inspect} => #{ruby}"
35
- end.join(",\n")
36
- code = code.split("\n").map { |line| " #{line}" }.join("\n")
37
- "{\n" + code + "\n}"
38
- end
39
- end
40
-
41
- class Rule < Array
42
- class << self
43
- def parse(code)
44
- case code
45
- when /and/
46
- code.split(/and/).inject(Proposition.new('&&')) { |rule, code| rule << parse(code) }
47
- when /or/
48
- code.split(/or/).inject(Proposition.new('||')) { |rule, code| rule << parse(code) }
49
- when /n( mod ([\d]+))? is (not )?([\d]+)/
50
- Expression.new(:is, $2, !!$3, $4)
51
- when /n( mod ([\d]+))?( not)? in ([\d]+\.\.[\d]+)/
52
- Expression.new(:in, $2, !!$3, eval($4).to_a.inspect)
53
- when /n/
54
- Expression.new
55
- else
56
- raise "can not parse #{code}"
57
- end
58
- end
59
- end
60
-
61
- attr_reader :locales
62
-
63
- def initialize(locales)
64
- @locales = locales.map { |locale| locale.gsub('_', '-').to_sym }
65
- end
66
-
67
- def keys
68
- inject([]) { |keys, (key, code)| keys << key.to_sym } << :other
69
- end
70
-
71
- def to_ruby
72
- @condition ||= 'lambda { |n| ' + reverse.inject(':other') do |result, (key, code)|
73
- code = self.class.parse(code).to_ruby
74
- "#{code} ? :#{key} : #{result}"
75
- end + ' }'
76
- end
77
- end
78
-
79
- class Proposition < Array
80
- def initialize(type = nil)
81
- @type = type
82
- end
83
-
84
- def to_ruby
85
- @ruby ||= map { |expr| expr.to_ruby }.join(" #{@type} ")
86
- end
87
- end
88
-
89
- class Expression
90
- attr_reader :operator, :operand, :mod, :negate
91
-
92
- def initialize(operator = nil, mod = nil, negate = nil, operand = nil)
93
- @operator, @mod, @negate, @operand = operator, mod, negate, operand
94
- end
95
-
96
- def to_ruby
97
- @ruby ||= begin
98
- op = 'n'
99
- op << " % #{@mod}" if mod
100
- case @operator
101
- when :is
102
- op + (@negate ? ' != ' : ' == ') + @operand
103
- when :in
104
- (@negate ? '!' : '') + "#{@operand}.include?(#{op})"
105
- else
106
- op
107
- end
108
- end
109
- end
110
- end
111
- end
112
- end
113
- end
@@ -1,17 +0,0 @@
1
- class Cldr
2
- module Data
3
- class Territories < Base
4
- def initialize(locale)
5
- super
6
- self[:territories] = territories
7
- end
8
-
9
- def territories
10
- @territories ||= select('localeDisplayNames/territories/territory').inject({}) do |result, node|
11
- result[node.attribute('type').value.to_sym] = node.content unless draft?(node)
12
- result
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,25 +0,0 @@
1
- # I probably don't really get timezones.
2
-
3
- class Cldr
4
- module Data
5
- class Timezones < Base
6
- def initialize(locale)
7
- super
8
- self[:timezones] = timezones
9
- end
10
-
11
- def timezones
12
- @timezones ||= select('dates/timeZoneNames/zone').inject({}) do |result, zone|
13
- type = zone.attribute('type').value.to_sym
14
- city = select(zone, 'exemplarCity').first
15
- result[type] = {}
16
- # see en.xml, Europe/London, does not have an exemplarCity element
17
- # instead it has long and short daylight names which otherwise only
18
- # have metazones. (??)
19
- result[type][:city] = city.content if city
20
- result
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,25 +0,0 @@
1
- class Cldr
2
- module Data
3
- class Units < Base
4
- def initialize(locale)
5
- super
6
- self[:units] = units
7
- end
8
-
9
- def units
10
- select('units/unit').inject({}) do |result, node|
11
- result[node.attribute('type').value.to_sym] = unit(node)
12
- result
13
- end
14
- end
15
-
16
- def unit(node)
17
- node.xpath('unitPattern').inject({}) do |result, node|
18
- count = node.attribute('count') ? node.attribute('count').value.to_sym : :one
19
- result[count] = node.content unless draft?(node)
20
- result
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,132 +0,0 @@
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
@@ -1,3 +0,0 @@
1
- Dir["#{File.dirname(__FILE__)}/**/*_test.rb"].each do |filename|
2
- require filename
3
- end
@@ -1,31 +0,0 @@
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
@@ -1,18 +0,0 @@
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
@@ -1,41 +0,0 @@
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
@@ -1,79 +0,0 @@
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