date_tools 0.0.2 → 0.1.0

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.
Files changed (53) hide show
  1. data/data/locales/ar.yml +47 -0
  2. data/data/locales/bg.yml +47 -0
  3. data/data/locales/ca.yml +47 -0
  4. data/data/locales/cs.yml +47 -0
  5. data/data/locales/da.yml +47 -0
  6. data/data/locales/de.yml +47 -0
  7. data/data/locales/de_at.yml +47 -0
  8. data/data/locales/de_ch.yml +47 -0
  9. data/data/locales/en.yml +47 -0
  10. data/data/locales/en_au.yml +47 -0
  11. data/data/locales/en_ca.yml +47 -0
  12. data/data/locales/en_gb.yml +47 -0
  13. data/data/locales/en_in.yml +47 -0
  14. data/data/locales/en_us.yml +47 -0
  15. data/data/locales/es.yml +47 -0
  16. data/data/locales/es_ar.yml +47 -0
  17. data/data/locales/es_cl.yml +47 -0
  18. data/data/locales/es_co.yml +47 -0
  19. data/data/locales/es_mx.yml +47 -0
  20. data/data/locales/es_pe.yml +47 -0
  21. data/data/locales/es_ve.yml +47 -0
  22. data/data/locales/fi.yml +47 -0
  23. data/data/locales/fr.yml +47 -0
  24. data/data/locales/fr_ca.yml +47 -0
  25. data/data/locales/fr_ch.yml +47 -0
  26. data/data/locales/it.yml +47 -0
  27. data/data/locales/it_ch.yml +47 -0
  28. data/data/locales/ko.yml +47 -0
  29. data/data/locales/lt.yml +47 -0
  30. data/data/locales/nl.yml +47 -0
  31. data/data/locales/nl_be.yml +47 -0
  32. data/data/locales/no.yml +47 -0
  33. data/data/locales/pt.yml +47 -0
  34. data/data/locales/pt_br.yml +47 -0
  35. data/data/locales/ru.yml +47 -0
  36. data/data/locales/se.yml +47 -0
  37. data/data/locales/sr.yml +47 -0
  38. data/data/locales/zh_TW.yml +47 -0
  39. data/examples/example_date_creator.rb +9 -1
  40. data/examples/example_date_i18n.rb +52 -0
  41. data/examples/example_date_locale.rb +18 -5
  42. data/examples/example_date_time_compare.rb +11 -2
  43. data/lib/date_tools.rb +93 -26
  44. data/lib/date_tools/date_locale.rb +126 -234
  45. data/lib/date_tools/date_time_compare.rb +3 -0
  46. data/unittest/test_date_creator.rb +1 -0
  47. data/unittest/test_date_locale.rb +103 -196
  48. data/unittest/test_date_locale_loaded.rb +113 -0
  49. data/unittest/test_date_time_compare.rb +1 -0
  50. data/unittest/test_date_tools.rb +13 -0
  51. metadata +90 -37
  52. data/readme.html +0 -68
  53. data/readme.txt +0 -50
@@ -34,6 +34,9 @@ class Time
34
34
 
35
35
  #Build a string with number of days, hours ... for the given seconds.
36
36
  #Only positive seconds allowed.
37
+ #
38
+ #Example:
39
+ # Time.sec2time( 16000 ) => "0d 4h 26m 40s"
37
40
  def self.sec2time( sec )
38
41
  raise "No negative time" if sec < 0
39
42
  days, sec = sec.divmod(86400) # 60*60*24
@@ -1,3 +1,4 @@
1
+ gem 'test-unit'
1
2
  require 'test/unit'
2
3
  require '../lib/date_tools/date_creator'
3
4
 
@@ -1,225 +1,132 @@
1
+ #encoding: utf-8
2
+ gem 'test-unit'
1
3
  require 'test/unit'
2
- require '../lib/date_tools/date_locale'
4
+ $:.unshift('../lib') if $0 == __FILE__
5
+ require 'date_tools/date_locale'
3
6
 
4
- #Here you can play with locales.
5
- #Please run the tests with and without locale.
6
- #~ require 'locale'
7
- #~ Locale.current = 'en'
8
- #~ Locale.current = 'fr'
7
+ require 'yaml'
9
8
 
10
9
  class Test_Date_locale < Test::Unit::TestCase
11
- def test_locale_encoding
12
- return unless defined? Locale
13
- #~ assert_equal( 'de', Locale.current.language ) #changing during tests
14
- assert_equal( 'CP1252', Locale.current.charset )
15
- end
16
- def test_DATE_TEXTS
17
-
18
- assert_kind_of(Hash, Date_locale::DATE_TEXTS)
10
+
11
+ #~ puts Date_locale::DATE_TEXTS.to_yaml
12
+ #~ puts Date.new(2012,1,1).strftime("%A")
13
+
14
+ DateTools::Mixin::DATE_TEXTS.each{|lang, langdata |
15
+ langdata = langdata['date']
19
16
 
20
- Date_locale::DATE_TEXTS.each{|lang, langdata |
21
- assert_kind_of(Symbol, lang)
17
+ define_method :"test_#{lang}" do
18
+ assert_kind_of(String, lang)
22
19
  assert_kind_of(Hash, langdata)
23
20
  assert_equal(4, langdata.keys.size)
24
21
  #test not possibe, different orders in Hash key.
25
- #~ assert_equal([:abbr_daynames, :monthnames, :abbr_monthnames, :daynames], langdata.keys)
22
+ #~ assert_equal([:monthnames, :abbr_daynames, :monthnames, :abbr_monthnames, :daynames], langdata.keys)
26
23
 
27
- assert_equal( 7, langdata[:abbr_daynames].size, "check language #{lang}")
28
- assert_equal( 7, langdata[:daynames].size, "check language #{lang}")
29
- assert_equal( 13, langdata[:abbr_monthnames].size, "check language #{lang}")
30
- assert_equal( 13, langdata[:monthnames].size, "check language #{lang}")
31
- assert_nil( langdata[:abbr_monthnames].first, "check language #{lang}")
32
- assert_nil( langdata[:monthnames].first, "check language #{lang}")
24
+ assert_equal( 7, langdata['abbr_day_names'].size, "check language #{lang}")
25
+ assert_equal( 7, langdata['day_names'].size, "check language #{lang}")
26
+ assert_equal( 13, langdata['abbr_month_names'].size, "check language #{lang}")
27
+ assert_equal( 13, langdata['month_names'].size, "check language #{lang}")
28
+ assert_nil( langdata['abbr_month_names'].first, "check language #{lang}")
29
+ assert_nil( langdata['month_names'].first, "check language #{lang}")
33
30
 
34
- }
35
-
36
- end #test_DATE_TEXTS
37
- end #Test_Date_locale < Test::Unit::TestCase
38
-
39
-
40
-
41
- class Test_Date < Test::Unit::TestCase
42
-
43
- TESTSTRING = '%A %a %B (%b)'
44
- def test_default_en()
45
-
46
- Locale.current = 'en' if defined? Locale
47
- if defined? Locale
48
- assert_equal( 'en', Locale.current.language )
31
+ 1.upto(12){|mon|
32
+ assert_equal( langdata['abbr_month_names'][mon], Date.new(2012,mon,1).strftime("%b", lang))
33
+ assert_equal( langdata['month_names'][mon], Date.new(2012,mon,1).strftime("%B", lang))
34
+ }
35
+ #Test sunday
36
+ assert_equal( langdata['day_names'][0], Date.new(2013,1,6).strftime("%A", lang))
37
+ assert_equal( langdata['abbr_day_names'][0], Date.new(2013,1,6).strftime("%a", lang))
38
+ 7.upto(12){|day|
39
+ assert_equal( langdata['day_names'][day-6], Date.new(2013,1,day).strftime("%A", lang))
40
+ assert_equal( langdata['abbr_day_names'][day-6], Date.new(2013,1,day).strftime("%a", lang))
41
+ }
49
42
  end
50
-
51
- d = Date.new(2009,10,21)
52
- assert_equal( 'Wednesday {Wed} {Wednesday} {42} 3', d.strftime('%A {%a} {%A} {%W} %w'))
53
- assert_equal( 'Wednesday (Wed)', d.strftime('%A (%a)'))
54
- assert_equal( 'October (Oct)', d.strftime('%B (%b)'))
55
- end
56
-
57
- #Check the defined lanuages.
58
- def test_defined()
59
- assert_not_nil( Date_locale.locale?(:de))
60
- assert_not_nil( Date_locale.locale?(:de_at))
61
- assert_not_nil( Date_locale.locale?(:en))
62
- assert_not_nil( Date_locale.locale?(:fr))
63
- end
43
+ }
64
44
 
65
- def test_undefined()
66
- assert_nil( Date_locale.locale?(:xx))
45
+ def test_get_language_key
46
+ assert_equal( 'en', DateTools::Mixin.get_language_key('en'))
47
+ assert_equal( 'en', DateTools::Mixin.get_language_key('EN'))
48
+ assert_equal( 'en', DateTools::Mixin.get_language_key(:en))
49
+ assert_equal( 'en_us', DateTools::Mixin.get_language_key('en-us'))
67
50
 
68
- d = Date.new(2009,10,21)
69
- assert_raise( RuntimeError ){ d.strftime('%A {%a} {%A} {%W} %w', :xx) }
70
- end
71
-
72
- def test_en()
73
- d = Date.new(2009,10,21)
74
-
75
- assert_equal( 'Wednesday (Wed)', d.strftime('%A (%a)', :en))
76
- assert_equal( 'October (Oct)', d.strftime('%B (%b)', :en))
77
- assert_equal( 'Wednesday {Wed} {Wednesday} {42} 3', d.strftime('%A {%a} {%A} {%W} %w', :en))
78
-
79
- Locale.current = 'en' if defined? Locale
80
- if defined? Locale and Locale.current.language == 'en'
81
- assert_equal( 'en', Locale.current.language )
82
- assert_equal( d.strftime('%A (%a)'), d.strftime('%A (%a)', :en))
83
- assert_equal( d.strftime('%B (%b)'), d.strftime('%B (%b)', :en))
84
- assert_equal( d.strftime('%A {%a} {%A} {%W} %w'), d.strftime('%A {%a} {%A} {%W} %w', :en))
85
- end
51
+ assert_equal( 'de', DateTools::Mixin.get_language_key('de'))
52
+ assert_equal( 'de', DateTools::Mixin.get_language_key('de_de'))
53
+ assert_equal( 'de', DateTools::Mixin.get_language_key(:de))
86
54
 
55
+ assert_equal( 'de_at', DateTools::Mixin.get_language_key('de-at'))
87
56
  end
88
57
 
89
- def test_de()
90
- d = Date.new(2009,10,21)
91
-
92
- assert_equal( 'Mittwoch (Mi)', d.strftime('%A (%a)', :de))
93
- assert_equal( 'Oktober (Okt)', d.strftime('%B (%b)', :de))
94
-
95
- Locale.current = 'de' if defined? Locale
96
- if defined? Locale and Locale.current.language == 'de'
97
- assert_equal( 'de', Locale.current.language )
98
- assert_equal( d.strftime('%A (%a)'), d.strftime('%A (%a)', :de))
99
- assert_equal( d.strftime('%B (%b)'), d.strftime('%B (%b)', :de))
100
- assert_equal( d.strftime('%A {%a} {%A} {%W} %w'), d.strftime('%A {%a} {%A} {%W} %w', :de))
101
- end
102
58
 
103
- end
59
+ end #Test_Date_locale < Test::Unit::TestCase
104
60
 
105
- def test_de_umlaut()
106
- d = Date.new(2009,3,21)
107
- #Set automatic.
108
- #~ Date_locale.set_target_encoding( 'iso-8859-1')
109
-
110
- assert_equal( 'Samstag (Sa)', d.strftime('%A (%a)', :de))
111
- if defined? Locale
112
- assert_equal( 'M�rz (Mrz)', d.strftime('%B (%b)', :de))
113
- else
114
- assert_equal( 'März (Mrz)', d.strftime('%B (%b)', :de))
61
+ class Test_en < Test::Unit::TestCase
62
+ def setup
63
+ @locale = 'en'
115
64
  end
116
-
117
- Locale.current = 'de' if defined? Locale
118
- if defined? Locale and Locale.current.language == 'de'
119
- assert_equal( 'de', Locale.current.language )
120
- assert_equal( d.strftime('%A (%a)'), d.strftime('%A (%a)', :de))
121
- assert_equal( d.strftime('%B (%b)'), d.strftime('%B (%b)', :de))
122
- assert_equal( d.strftime('%A {%a} {%A} {%W} %w'), d.strftime('%A {%a} {%A} {%W} %w', :de))
65
+ def test_jan()
66
+ assert_equal('January - Sunday', Date.new(2012,1,1).strftime('%B - %A', @locale))
123
67
  end
124
-
125
- end
126
-
127
- def test_de_locale()
128
- return unless defined? Locale
129
-
130
- #Get a German locale
131
- #?How to define it??
132
- Locale.current = 'de'
133
- loc_de = Locale.current
134
- Locale.current = 'en' #set back english
135
- loc_en = Locale.current
136
-
137
- d = Date.new(2009,10,21)
138
- assert_equal( 'Mittwoch (Mi)', d.strftime('%A (%a)', loc_de ))
139
- assert_equal( 'Wednesday (Wed)', d.strftime('%A (%a)', loc_en ))
140
-
141
-
142
- end
143
-
144
- end #Test_Date
145
-
146
- class Test_DateTime < Test::Unit::TestCase
147
-
148
- TESTSTRING = '%A %a %B (%b)'
149
- def test_default_en()
150
- Locale.current = 'en' if defined? Locale
151
- if defined? Locale
152
- assert_equal( 'en', Locale.current.language )
68
+ def test_march()
69
+ assert_equal('March - Thursday', Date.new(2012,3,1).strftime('%B - %A', @locale))
153
70
  end
154
-
155
- 1.upto(12){|m|
156
- 1.upto(7){|day| #first week (=all day names)
157
- d = Date.new(2009,m,day)
158
- dt = DateTime.new(2009,m, day)
159
- assert_equal( dt.strftime(TESTSTRING), d.strftime(TESTSTRING))
160
- }}
161
- end
71
+ end
162
72
 
163
- def test_en()
164
- 1.upto(12){|m|
165
- 1.upto(7){|day| #first week (=all day names)
166
- d = Date.new(2009,m,day)
167
- dt = DateTime.new(2009,m, day)
168
- assert_equal( dt.strftime(TESTSTRING, :en), d.strftime(TESTSTRING, :en))
169
- }}
170
- end
73
+ class Test_en_US < Test::Unit::TestCase
74
+ def setup
75
+ @locale = 'en-us'
76
+ end
77
+ def test_jan()
78
+ assert_equal('January - Sunday', Date.new(2012,1,1).strftime('%B - %A', @locale))
79
+ end
80
+ def test_march()
81
+ assert_equal('March - Thursday', Date.new(2012,3,1).strftime('%B - %A', @locale))
82
+ end
83
+ end
171
84
 
172
- def test_de()
173
- 1.upto(12){|m|
174
- 1.upto(7){|day| #first week (=all day names)
175
- d = Date.new(2009,m,day)
176
- dt = DateTime.new(2009,m, day)
177
- assert_equal( dt.strftime(TESTSTRING, :de), d.strftime(TESTSTRING, :de))
178
- }}
179
- end
180
- end #Test_DateTime
85
+ class Test_de < Test::Unit::TestCase
86
+ def setup
87
+ @locale = 'de'
88
+ end
89
+ def test_jan()
90
+ assert_equal('Januar - Sonntag', Date.new(2012,1,1).strftime('%B - %A', @locale))
91
+ end
92
+ def test_march()
93
+ assert_equal('März - Donnerstag', Date.new(2012,3,1).strftime('%B - %A', @locale))
94
+ end
95
+ end
181
96
 
182
- class Test_Time < Test::Unit::TestCase
183
-
184
- def test_default()
185
- t = Time.local(2009,10,21)
186
-
187
- Locale.current = 'en' if defined? Locale
188
- if defined? Locale and Locale.current.language == 'en'
189
- assert_equal( 'en', Locale.current.language )
190
- assert_equal( 'Wednesday {Wed} {Wednesday} {42} 3', t.strftime('%A {%a} {%A} {%W} %w'))
191
- assert_equal( 'Wednesday (Wed)', t.strftime('%A (%a)'))
192
- assert_equal( 'October (Oct)', t.strftime('%B (%b)'))
97
+ class Test_de_de < Test::Unit::TestCase
98
+ def setup
99
+ @locale = 'de-de'
193
100
  end
194
- end
101
+ def test_jan()
102
+ assert_equal('Januar - Sonntag', Date.new(2012,1,1).strftime('%B - %A', @locale))
103
+ end
104
+ def test_march()
105
+ assert_equal('März - Donnerstag', Date.new(2012,3,1).strftime('%B - %A', @locale))
106
+ end
107
+ end
195
108
 
196
- def test_en()
197
- t = Time.local(2009,10,21)
198
- assert_equal( 'Wednesday (Wed)', t.strftime('%A (%a)', :en))
199
- assert_equal( 'October (Oct)', t.strftime('%B (%b)', :en))
200
- assert_equal( 'Wednesday {Wed} {Wednesday} {42} 3', t.strftime('%A {%a} {%A} {%W} %w', :en))
201
-
202
- Locale.current = 'en' if defined? Locale
203
- if defined? Locale and Locale.current.language == 'en'
204
- assert_equal( 'en', Locale.current.language )
205
- assert_equal( t.strftime('%A (%a)'), t.strftime('%A (%a)', :en))
206
- assert_equal( t.strftime('%B (%b)'), t.strftime('%B (%b)', :en))
207
- assert_equal( t.strftime('%A {%a} {%A} {%W} %w'), t.strftime('%A {%a} {%A} {%W} %w', :en))
109
+ class Test_de_at < Test::Unit::TestCase
110
+ def setup
111
+ @locale = 'de-at'
208
112
  end
209
- end
113
+ def test_jan()
114
+ assert_equal('Jänner - Sonntag', Date.new(2012,1,1).strftime('%B - %A', @locale))
115
+ end
116
+ def test_feb()
117
+ #No Feber, see http://german.stackexchange.com/questions/5916/wie-ublich-ist-feber-in-osterreich/5917#5917
118
+ assert_equal('Februar - Freitag', Date.new(2013,2,1).strftime('%B - %A', @locale))
119
+ end
120
+ def test_march()
121
+ assert_equal('März - Donnerstag', Date.new(2012,3,1).strftime('%B - %A', @locale))
122
+ end
123
+ end
210
124
 
211
- def test_de()
212
- t = Time.local(2009,10,21)
213
- assert_equal( 'Mittwoch (Mi)', t.strftime('%A (%a)', :de))
214
- assert_equal( 'Oktober (Okt)', t.strftime('%B (%b)', :de))
215
-
216
- Locale.current = 'de' if defined? Locale
217
- if defined? Locale and Locale.current.language == 'de'
218
- assert_equal( 'de', Locale.current.language )
219
- assert_equal( t.strftime('%A (%a)'), t.strftime('%A (%a)', :de))
220
- assert_equal( t.strftime('%B (%b)'), t.strftime('%B (%b)', :de))
221
- assert_equal( t.strftime('%A {%a} {%A} {%W} %w'), t.strftime('%A {%a} {%A} {%W} %w', :de))
125
+ class Test_lt < Test::Unit::TestCase
126
+ def setup
127
+ @locale = 'lt'
222
128
  end
223
-
224
- end
225
- end #Test_Time
129
+ def test_jan()
130
+ assert_equal('sausis - sekmadienis', Date.new(2012,1,1).strftime('%B - %A', @locale))
131
+ end
132
+ end
@@ -0,0 +1,113 @@
1
+ #encoding: utf-8
2
+ gem 'test-unit'
3
+ require 'test/unit'
4
+
5
+ #Version 2.0.5 had problems with ruby 1.9
6
+ gem 'locale', '~> 2.0.8'
7
+ require 'locale'
8
+
9
+ $:.unshift('../lib') if $0 == __FILE__
10
+ require 'date_tools/date_locale'
11
+
12
+
13
+ #~ puts Locale::VERSION #=> 2.0.5
14
+ #~ Locale.current = 'en' #danach funktionierts
15
+ #~ p Locale.current
16
+ #~ puts RUBY_VERSION
17
+
18
+ #~ Locale.current = 'en'
19
+ #~ Locale.current = 'fr'
20
+
21
+ if $0 == __FILE__
22
+ $:.unshift('../lib')
23
+ $:.unshift('.')
24
+ end
25
+
26
+ #~ require 'test_date_locale_old'
27
+
28
+ class Test_en < Test::Unit::TestCase
29
+ def setup
30
+ Locale.current = 'en'
31
+ end
32
+ def test_locale()
33
+ assert_equal('en', Locale.current.to_s)
34
+ assert_equal('en', Locale.current.language.to_s)
35
+ assert_equal('en', DateTools::Mixin.get_language_key)
36
+ end
37
+ def test_jan()
38
+ assert_equal('January - Sunday', Date.new(2012,1,1).strftime('%B - %A'))
39
+ end
40
+ def test_march()
41
+ assert_equal('March - Thursday', Date.new(2012,3,1).strftime('%B - %A'))
42
+ end
43
+ end
44
+
45
+ class Test_en_US < Test::Unit::TestCase
46
+ def setup
47
+ Locale.current = 'en-us'
48
+ end
49
+ def test_locale()
50
+ assert_equal('en_US', Locale.current.to_s)
51
+ assert_equal('en', Locale.current.language.to_s)
52
+ assert_equal('en_us', DateTools::Mixin.get_language_key)
53
+ end
54
+ def test_jan()
55
+ assert_equal('January - Sunday', Date.new(2012,1,1).strftime('%B - %A'))
56
+ end
57
+ def test_march()
58
+ assert_equal('March - Thursday', Date.new(2012,3,1).strftime('%B - %A'))
59
+ end
60
+ end
61
+
62
+ class Test_de < Test::Unit::TestCase
63
+ def setup
64
+ Locale.current = 'de'
65
+ end
66
+ def test_locale()
67
+ assert_equal('de', Locale.current.to_s)
68
+ assert_equal('de', Locale.current.language.to_s)
69
+ end
70
+ def test_jan()
71
+ assert_equal('Januar - Sonntag', Date.new(2012,1,1).strftime('%B - %A'))
72
+ end
73
+ def test_march()
74
+ assert_equal('März - Donnerstag', Date.new(2012,3,1).strftime('%B - %A'))
75
+ end
76
+ end
77
+
78
+ class Test_de_de < Test::Unit::TestCase
79
+ def setup
80
+ Locale.current = 'de-de'
81
+ end
82
+ def test_locale()
83
+ assert_equal('de_DE', Locale.current.to_s)
84
+ assert_equal('de', Locale.current.language.to_s)
85
+ assert_equal('de', DateTools::Mixin.get_language_key)
86
+ end
87
+ def test_jan()
88
+ assert_equal('Januar - Sonntag', Date.new(2012,1,1).strftime('%B - %A'))
89
+ end
90
+ def test_march()
91
+ assert_equal('März - Donnerstag', Date.new(2012,3,1).strftime('%B - %A'))
92
+ end
93
+ end
94
+
95
+ class Test_de_at < Test::Unit::TestCase
96
+ def setup
97
+ Locale.current = 'de-at'
98
+ end
99
+ def test_locale()
100
+ assert_equal('de_AT', Locale.current.to_s)
101
+ assert_equal('de', Locale.current.language.to_s)
102
+ assert_equal('de_at', DateTools::Mixin.get_language_key)
103
+ end
104
+ def test_jan()
105
+ assert_equal('Jänner - Sonntag', Date.new(2012,1,1).strftime('%B - %A'))
106
+ end
107
+ def test_feb()
108
+ assert_equal('Februar - Mittwoch', Date.new(2012,2,1).strftime('%B - %A'))
109
+ end
110
+ def test_march()
111
+ assert_equal('März - Donnerstag', Date.new(2012,3,1).strftime('%B - %A'))
112
+ end
113
+ end