date-formats 0.2.1 → 0.2.2

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
  SHA1:
3
- metadata.gz: 1010733e087d7c58d3c5c0f9ca8ce2a3169b9c32
4
- data.tar.gz: 9b4df62cec97cb802826beccfd6949f82f29a626
3
+ metadata.gz: cc67b4f49a89aa6bc05ab8836ed1da60e4378705
4
+ data.tar.gz: 0f2e024892406fc95e7b365e41782dec1441612f
5
5
  SHA512:
6
- metadata.gz: c54b6785497270059a504664ebde54b6a978077a8f2cae242bfe59d1ea66d2bfff522c7f54ad12ca107528f061b8fc50643840b638c95db574b66f9a7eaa6494
7
- data.tar.gz: b522cd86b0617a63f7c7fea943781601063f1bc6ac1c9be7978f134986962006f37926d38651fc66027ed2b8e6fe84f4ce54e197e27154eae3fdf859fd9dadee
6
+ metadata.gz: 2e75b49ee32ad7d9b0178509a70da635b388cb50496eedfc13cef9ecf87af0e9bccd0cdb8e1c154e7c25a7f62c7543f6dfccc00368bead0df940352f0a4bb135
7
+ data.tar.gz: a4e71ff6484a61df679baea147d91b5e49ae5da4db169fc2e44b759109a878ac25d936ab3587aa2a79d0af35d4c1554acfa106cfbbe483e90ff8b76cae554da7
@@ -12,4 +12,10 @@ lib/date/formats.rb
12
12
  test/helper.rb
13
13
  test/test_parse.rb
14
14
  test/test_parse_custom.rb
15
+ test/test_parse_de.rb
16
+ test/test_parse_en.rb
17
+ test/test_parse_es.rb
18
+ test/test_parse_fr.rb
19
+ test/test_parse_it.rb
20
+ test/test_parse_pt.rb
15
21
  test/test_version.rb
data/README.md CHANGED
@@ -10,7 +10,116 @@
10
10
 
11
11
  ## Usage
12
12
 
13
- To be done
13
+ Did you know?
14
+ Ruby's built-in standard date parser (that is, `Date.parse`)
15
+ only supports English month and day names.
16
+ Example:
17
+
18
+ ```ruby
19
+ Date.parse( '1 Jan' )
20
+ #=> <Date: 2019-01-01 ((2458485j,0s,0n),+0s,2299161j)>
21
+ ```
22
+
23
+ Let's try Spanish:
24
+
25
+ ```ruby
26
+ Date.parse( '1 Ene' )
27
+ #=> invalid date (ArgumentError) in `parse`
28
+ ```
29
+
30
+ What to do? Let's welcome the `date-formats` library
31
+ that lets you parse dates in foreign languages.
32
+ Example:
33
+
34
+ ```ruby
35
+ require `date/formats`
36
+ DateFormats.parse( '1 Ene', lang: 'es' )
37
+ #=> <Date: 2019-01-01 ((2458485j,0s,0n),+0s,2299161j)>
38
+ ```
39
+
40
+ Or in French:
41
+
42
+ ```ruby
43
+ DateFormats.parse( 'Lundi 1 Janvier', lang: 'fr')
44
+ #=> <Date: 2019-01-01 ((2458485j,0s,0n),+0s,2299161j)>
45
+ ```
46
+
47
+ How does it work?
48
+ The `date-formats` library uses text patterns (that is, regular expressions)
49
+ for defining and parsing new date formats.
50
+ See the [`formats.rb`](lib/date-formats/formats.rb) script for all
51
+ current supported formats and languages.
52
+
53
+ For example, the Spanish date `1 Ene` gets matched by:
54
+
55
+ ```ruby
56
+ /\b
57
+ (?<day>\d{1,2})
58
+ \s
59
+ (?<month_name>#{MONTH_ES})
60
+ \b/x
61
+ ```
62
+
63
+ Where `MONTH_ES` is any of:
64
+
65
+ ```
66
+ Enero Ene
67
+ Febrero Feb
68
+ Marzo Mar
69
+ Abril Abr
70
+ Mayo May
71
+ Junio Jun
72
+ Julio Jul
73
+ Agosto Ago
74
+ Septiembre Sept Sep Set
75
+ Octubre Oct
76
+ Noviembre Nov
77
+ Diciembre Dic
78
+ ```
79
+
80
+ And the French date `Lundi 1 Janvier` gets matched by:
81
+
82
+ ```ruby
83
+ /\b
84
+ (?<day_name>#{DAY_FR})
85
+ \s+
86
+ (?<day>\d{1,2})
87
+ \.? # note: make dot optional
88
+ \s+
89
+ (?<month_name>#{MONTH_FR})
90
+ \b/x
91
+ ```
92
+
93
+ Where `DAY_FR` is any of:
94
+
95
+ ```
96
+ Lundi Lun L
97
+ Mardi Mar Ma
98
+ Mercredi Mer Me
99
+ Jeudi Jeu J
100
+ Vendredi Ven V
101
+ Samedi Sam S
102
+ Dimanche Dim D
103
+ ```
104
+
105
+ And `MONTH_FR` is any of:
106
+
107
+ ```
108
+ Janvier Janv Jan
109
+ Février Févr Fév
110
+ Mars Mar
111
+ Avril Avri Avr
112
+ Mai
113
+ Juin
114
+ Juillet Juil
115
+ Août
116
+ Septembre Sept
117
+ Octobre Octo Oct
118
+ Novembre Nove Nov
119
+ Décembre Déce Déc
120
+ ```
121
+
122
+ And so on.
14
123
 
15
124
 
16
125
  ## License
@@ -19,18 +19,23 @@ module DateFormats
19
19
 
20
20
  #############
21
21
  # helpers for building format regex patterns
22
- MONTH_EN = build_names( MONTH_NAMES[:en] )
23
- # e.g. Jan|Feb|March|Mar|April|Apr|May|June|Jun|...
22
+ MONTH_EN = build_names( MONTH_NAMES[:en] ) # e.g. Jan|Feb|March|Mar|April|Apr|May|June|Jun|...
24
23
  DAY_EN = build_names( DAY_NAMES[:en] )
25
- # e.g.
26
24
 
27
25
  MONTH_FR = build_names( MONTH_NAMES[:fr] )
28
26
  DAY_FR = build_names( DAY_NAMES[:fr] )
29
27
 
30
28
  MONTH_ES = build_names( MONTH_NAMES[:es] )
29
+ DAY_ES = build_names( DAY_NAMES[:es] )
30
+
31
31
  MONTH_PT = build_names( MONTH_NAMES[:pt] )
32
+ DAY_PT = build_names( DAY_NAMES[:pt] )
33
+
32
34
  MONTH_DE = build_names( MONTH_NAMES[:de] )
35
+ DAY_DE = build_names( DAY_NAMES[:de] )
36
+
33
37
  MONTH_IT = build_names( MONTH_NAMES[:it] )
38
+ DAY_IT = build_names( DAY_NAMES[:it] )
34
39
 
35
40
  end # module DateFormats
36
41
 
@@ -105,6 +105,15 @@ EN__DD_MONTH__DATE_RE = /\b
105
105
  (?<month_name>#{MONTH_EN})
106
106
  \b/x
107
107
 
108
+ # e.g. Fri Aug/9
109
+ EN__DAY_MONTH_DD__DATE_RE = /\b
110
+ (?<day_name>#{DAY_EN})
111
+ \s
112
+ (?<month_name>#{MONTH_EN})
113
+ \/
114
+ (?<day>\d{1,2})
115
+ \b/x
116
+
108
117
  # e.g. Jun/12 2011 14:00
109
118
  EN__MONTH_DD_YYYY__DATE_TIME_RE = /\b
110
119
  (?<month_name>#{MONTH_EN})
@@ -158,6 +167,32 @@ ES__DD_MONTH__DATE_RE = /\b
158
167
  (?<month_name>#{MONTH_ES})
159
168
  \b/x
160
169
 
170
+ # e.g. Vie. 16.8. or Sáb. 17.8.
171
+ # or Vie 16.8. or Sáb 17.8.
172
+ ES__DAY_MM_DD__DATE_RE = /\b
173
+ (?<day_name>#{DAY_ES})
174
+ \.? # note: make dot optional
175
+ \s
176
+ (?<day>\d{1,2})
177
+ \.
178
+ (?<month>\d{1,2})
179
+ \.
180
+ (?=\s+|$|[\]])/x ## note: allow end-of-string/line too/x
181
+
182
+
183
+ # e.g. Sab. 24.8. or Dom. 25.8.
184
+ # or Sab 24.8. or Dom 25.8.
185
+ IT__DAY_MM_DD__DATE_RE = /\b
186
+ (?<day_name>#{DAY_IT})
187
+ \.? # note: make dot optional
188
+ \s
189
+ (?<day>\d{1,2})
190
+ \.
191
+ (?<month>\d{1,2})
192
+ \.
193
+ (?=\s+|$|[\]])/x ## note: allow end-of-string/line too/x
194
+
195
+
161
196
  # e.g. Ven 8 Août or [Ven 8 Août] or Ven 8. Août or [Ven 8. Août]
162
197
  ### note: do NOT consume [] in regex (use lookahead assert)
163
198
  FR__DAY_DD_MONTH__DATE_RE = /\b
@@ -167,7 +202,34 @@ FR__DAY_DD_MONTH__DATE_RE = /\b
167
202
  \.? # note: make dot optional
168
203
  \s+
169
204
  (?<month_name>#{MONTH_FR})
170
- (?=\s+|$|[\]])/x ## note: allow end-of-string/line too
205
+ \b/x
206
+
207
+
208
+ # e.g. 29/03/2003 - Sábado or
209
+ # 29/3/2003 Sábado
210
+ PT__DD_MM_YYYY_DAY__DATE_RE = /\b
211
+ (?<day>\d{1,2})
212
+ \/
213
+ (?<month>\d{1,2})
214
+ \/
215
+ (?<year>\d{4})
216
+ \s+
217
+ (?: -\s+ )? # note: make dash separator (-) optional
218
+ (?<day_name>#{DAY_PT})
219
+ \b/x
220
+
221
+
222
+ # e.g. Fr. 26.7. or Sa. 27.7.
223
+ # or Fr 26.7. or Sa 27.7.
224
+ DE__DAY_MM_DD__DATE_RE = /\b
225
+ (?<day_name>#{DAY_DE})
226
+ \.? # note: make dot optional
227
+ \s
228
+ (?<day>\d{1,2})
229
+ \.
230
+ (?<month>\d{1,2})
231
+ \.
232
+ (?=\s+|$|[\]])/x ## note: allow end-of-string/line too/x
171
233
 
172
234
 
173
235
 
@@ -188,6 +250,7 @@ FORMATS_EN = [
188
250
  [ EN__MONTH_DD_YYYY__DATE_TIME_RE, '[EN_MONTH_DD_YYYY_hh_mm]' ],
189
251
  [ EN__MONTH_DD__DATE_TIME_RE, '[EN_MONTH_DD_hh_mm]' ],
190
252
  [ EN__MONTH_DD_YYYY__DATE_RE, '[EN_MONTH_DD_YYYY]' ],
253
+ [ EN__DAY_MONTH_DD__DATE_RE, '[EN_DAY_MONTH_DD]', ],
191
254
  [ EN__MONTH_DD__DATE_RE, '[EN_MONTH_DD]' ],
192
255
  [ EN__DD_MONTH__DATE_RE, '[EN_DD_MONTH]' ],
193
256
  ]
@@ -198,13 +261,29 @@ FORMATS_FR = [
198
261
 
199
262
  FORMATS_ES = [
200
263
  [ ES__DD_MONTH__DATE_RE, '[ES_DD_MONTH]' ],
264
+ [ ES__DAY_MM_DD__DATE_RE, '[ES_DAY_MM_DD]' ],
265
+ ]
266
+
267
+ FORMATS_PT = [
268
+ [ PT__DD_MM_YYYY_DAY__DATE_RE, '[PT_DD_MM_YYYY_DAY]' ],
269
+ ]
270
+
271
+ FORMATS_DE = [
272
+ [ DE__DAY_MM_DD__DATE_RE, '[DE_DAY_MM_DD]' ],
273
+ ]
274
+
275
+ FORMATS_IT = [
276
+ [ IT__DAY_MM_DD__DATE_RE, '[IT_DAY_MM_DD]' ],
201
277
  ]
202
278
 
203
279
 
204
280
  FORMATS = {
205
- en: FORMATS_BASE+FORMATS_EN,
206
- fr: FORMATS_BASE+FORMATS_FR,
207
- es: FORMATS_BASE+FORMATS_ES,
281
+ en: FORMATS_EN + FORMATS_BASE,
282
+ fr: FORMATS_FR + FORMATS_BASE,
283
+ es: FORMATS_ES + FORMATS_BASE,
284
+ pt: FORMATS_PT + FORMATS_BASE,
285
+ de: FORMATS_DE + FORMATS_BASE,
286
+ it: FORMATS_IT + FORMATS_BASE,
208
287
  }
209
288
 
210
289
  end # module DateFormats
@@ -54,17 +54,16 @@ Décembre Déce Déc ## check dece in use??
54
54
  TXT
55
55
 
56
56
  DAY_NAMES[:fr] = <<TXT
57
- Lundi Lun L
57
+ Lundi Lun Lu L
58
58
  Mardi Mar Ma
59
59
  Mercredi Mer Me
60
- Jeudi Jeu J
61
- Vendredi Ven V
62
- Samedi Sam S
63
- Dimanche Dim D
60
+ Jeudi Jeu Je J
61
+ Vendredi Ven Ve V
62
+ Samedi Sam Sa S
63
+ Dimanche Dim Di D
64
64
  TXT
65
65
 
66
66
 
67
-
68
67
  MONTH_NAMES[:es] = <<TXT
69
68
  Enero Ene
70
69
  Febrero Feb
@@ -80,6 +79,17 @@ Noviembre Nov
80
79
  Diciembre Dic
81
80
  TXT
82
81
 
82
+ DAY_NAMES[:es] = <<TXT
83
+ Lunes Lun Lu
84
+ Martes Mar Ma
85
+ Miércoles Mié Mi
86
+ Jueves Jue Ju
87
+ Viernes Vie Vi
88
+ Sábado Sáb Sá
89
+ Domingo Dom Do
90
+ TXT
91
+
92
+
83
93
  MONTH_NAMES[:de] = <<TXT
84
94
  Jänner Januar Jan Jän # note: in Austria - Jänner; in Deutschland Januar allow both ??
85
95
  Feber Februar Feb
@@ -95,6 +105,17 @@ November Nov
95
105
  Dezember Dez
96
106
  TXT
97
107
 
108
+ DAY_NAMES[:de] = <<TXT
109
+ Montag Mo
110
+ Dienstag Di
111
+ Mittwoch Mi
112
+ Donnerstag Do
113
+ Freitag Fr
114
+ Samstag Sa
115
+ Sonntag So
116
+ TXT
117
+
118
+
98
119
  MONTH_NAMES[:it] = <<TXT
99
120
  Gennaio
100
121
  Febbraio
@@ -110,6 +131,17 @@ Novembre
110
131
  Dicembre
111
132
  TXT
112
133
 
134
+ DAY_NAMES[:it] = <<TXT
135
+ Lunedì Lun
136
+ Martedì Mar
137
+ Mercoledì Mer
138
+ Giovedì Gio
139
+ Venerdì Ven
140
+ Sabato Sab
141
+ Domenica Dom Do
142
+ TXT
143
+
144
+
113
145
  MONTH_NAMES[:pt] = <<TXT
114
146
  Janeiro
115
147
  Fevereiro
@@ -125,6 +157,17 @@ Novembro
125
157
  Dezembro
126
158
  TXT
127
159
 
160
+ DAY_NAMES[:pt] = <<TXT
161
+ Segunda-feira Seg
162
+ Terça-feira Ter
163
+ Quarta-feira Qua
164
+ Quinta-feira Qui
165
+ Sexta-feira Sex
166
+ Sábado Sab
167
+ Domingo Dom
168
+ TXT
169
+
170
+
128
171
  MONTH_NAMES[:ro] = <<TXT
129
172
  Ianuarie
130
173
  Februarie
@@ -140,6 +183,51 @@ Noiembrie
140
183
  Decembrie
141
184
  TXT
142
185
 
186
+ DAY_NAMES[:ro] = <<TXT
187
+ Luni Lu
188
+ Marți Ma
189
+ Miercuri Mi
190
+ Joi Jo
191
+ Vineri Vi
192
+ Sâmbătă Sb
193
+ Duminică Du
194
+ TXT
195
+
196
+
197
+
198
+ DAY_NAMES[:nl] = <<TXT
199
+ Maandag Ma
200
+ Dinsdag Di
201
+ Woensdag Woe Wo
202
+ Donderdag Don Do
203
+ Vrijdag Vrij Vr
204
+ Zaterdag Zat Za
205
+ Zondag Zon Zo
206
+ TXT
207
+
208
+ DAY_NAMES[:cz] = <<TXT
209
+ Pondělí Po
210
+ Úterý Út
211
+ Středa St
212
+ Čtvrtek Čt
213
+ Pátek Pá
214
+ Sobota So
215
+ Neděle Ne
216
+ TXT
217
+
218
+ DAY_NAMES[:hu] = <<TXT
219
+ Hétfő H
220
+ Kedd K
221
+ Szerda Sze
222
+ Csütörtök Csüt
223
+ Péntek P
224
+ Szombat Szo
225
+ Vasárnap Vas
226
+ TXT
227
+
228
+
229
+
230
+
143
231
  ############################################
144
232
  ## convert (unparsed) text to (parsed) lines with words
145
233
  MONTH_NAMES.each {|k,v| MONTH_NAMES[k] = parse_month(v) }
@@ -4,7 +4,7 @@
4
4
  module DateFormats
5
5
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
6
6
  MINOR = 2
7
- PATCH = 1
7
+ PATCH = 2
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
@@ -8,3 +8,52 @@ require 'minitest/autorun'
8
8
  ## our own code
9
9
 
10
10
  require 'date/formats' ## or require 'date-formats'
11
+
12
+
13
+ #####################
14
+ ## add assert helpers for dates
15
+ class MiniTest::Test
16
+ def assert_dates( data, start:, lang: 'en' )
17
+ data.each do |rec|
18
+ line = rec[0]
19
+ str = rec[1]
20
+
21
+ ## note: test / use parse and find! -- parse MUST go first
22
+ values = []
23
+ values << DateFormats.parse( line, start: start, lang: lang )
24
+ values << DateFormats.find!( line, start: start, lang: lang )
25
+
26
+ tagged_line = rec[2] ## optinal tagged line
27
+ if tagged_line ## note: line gets tagged inplace!!! (no new string)
28
+ assert_equal line, tagged_line
29
+ puts "#{line} == #{tagged_line}"
30
+ end
31
+
32
+ values.each do |value|
33
+ if str.index( ':' )
34
+ assert_datetime( DateTime.strptime( str, '%Y-%m-%d %H:%M' ), value )
35
+ else
36
+ assert_date( Date.strptime( str, '%Y-%m-%d' ), value )
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+
43
+ ## todo: check if assert_datetime or assert_date exist already? what is the best practice to check dates ???
44
+ def assert_date( exp, value )
45
+ assert_equal exp.year, value.year
46
+ assert_equal exp.month, value.month
47
+ assert_equal exp.day, value.day
48
+ end
49
+
50
+ def assert_time( exp, value )
51
+ assert_equal exp.hour, value.hour
52
+ assert_equal exp.min, value.min
53
+ end
54
+
55
+ def assert_datetime( exp, value )
56
+ assert_date( exp, value )
57
+ assert_time( exp, value )
58
+ end
59
+ end
@@ -20,83 +20,4 @@ class TestParse < MiniTest::Test
20
20
 
21
21
  assert_dates( data, start: Date.new( 2013, 1, 1 ) )
22
22
  end
23
-
24
- def test_date_fr
25
- data = [
26
- [ '[Ven 08. Août]', '2014-08-08', '[[FR_DAY_DD_MONTH]]' ],
27
- [ 'Ven 08. Août', '2014-08-08', '[FR_DAY_DD_MONTH]' ],
28
- [ 'Ven 8. Août', '2014-08-08', '[FR_DAY_DD_MONTH]' ],
29
- [ '[Sam 9. Août]', '2014-08-09', '[[FR_DAY_DD_MONTH]]' ],
30
- [ '[Dim 10. Août]', '2014-08-10', '[[FR_DAY_DD_MONTH]]' ],
31
- [ '[Sam 31. Janv]', '2015-01-31', '[[FR_DAY_DD_MONTH]]' ],
32
- [ '[Sam 7. Févr]', '2015-02-07', '[[FR_DAY_DD_MONTH]]' ],
33
- [ '[Sam 31. Jan]', '2015-01-31', '[[FR_DAY_DD_MONTH]]' ],
34
- [ '[Sam 7. Fév]', '2015-02-07', '[[FR_DAY_DD_MONTH]]' ],
35
- ]
36
-
37
- assert_dates( data, start: Date.new( 2014, 8, 1 ), lang: 'fr' )
38
- end
39
-
40
- def test_date_en
41
- data = [
42
- [ 'Jun/12 2011 14:00', '2011-06-12 14:00', '[EN_MONTH_DD_YYYY_hh_mm]' ],
43
- [ 'Oct/12 2013 16:00', '2013-10-12 16:00', '[EN_MONTH_DD_YYYY_hh_mm]' ],
44
-
45
- [ 'Jan/26 2011', '2011-01-26', '[EN_MONTH_DD_YYYY]' ],
46
- [ 'Jan/26', '2013-01-26', '[EN_MONTH_DD]' ],
47
- [ '26 January', '2013-01-26', '[EN_DD_MONTH]' ],
48
-
49
- [ 'Jun/13', '2013-06-13', '[EN_MONTH_DD]' ],
50
- [ '13 June', '2013-06-13', '[EN_DD_MONTH]' ],
51
- ]
52
-
53
- assert_dates( data, start: Date.new( 2013, 1, 1 ), lang: 'en' )
54
- end
55
-
56
-
57
-
58
- private
59
- def assert_dates( data, start:, lang: 'en' )
60
- data.each do |rec|
61
- line = rec[0]
62
- str = rec[1]
63
-
64
- ## note: test / use parse and find! -- parse MUST go first
65
- values = []
66
- values << DateFormats.parse( line, start: start, lang: lang )
67
- values << DateFormats.find!( line, start: start, lang: lang )
68
-
69
- tagged_line = rec[2] ## optinal tagged line
70
- if tagged_line ## note: line gets tagged inplace!!! (no new string)
71
- assert_equal line, tagged_line
72
- puts "#{line} == #{tagged_line}"
73
- end
74
-
75
- values.each do |value|
76
- if str.index( ':' )
77
- assert_datetime( DateTime.strptime( str, '%Y-%m-%d %H:%M' ), value )
78
- else
79
- assert_date( Date.strptime( str, '%Y-%m-%d' ), value )
80
- end
81
- end
82
- end
83
- end
84
-
85
-
86
- ## todo: check if assert_datetime or assert_date exist already? what is the best practice to check dates ???
87
- def assert_date( exp, value )
88
- assert_equal exp.year, value.year
89
- assert_equal exp.month, value.month
90
- assert_equal exp.day, value.day
91
- end
92
-
93
- def assert_time( exp, value )
94
- assert_equal exp.hour, value.hour
95
- assert_equal exp.min, value.min
96
- end
97
-
98
- def assert_datetime( exp, value )
99
- assert_date( exp, value )
100
- assert_time( exp, value )
101
- end
102
23
  end # class TestParse
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parse_de.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParseDe < MiniTest::Test
11
+
12
+ def test_date
13
+ data = [
14
+ [ 'Fr. 26.7.', '2019-07-26', '[DE_DAY_MM_DD]' ],
15
+ [ 'Fr. 26.07.', '2019-07-26', '[DE_DAY_MM_DD]' ],
16
+ [ 'Fr 26.7.', '2019-07-26', '[DE_DAY_MM_DD]' ],
17
+ [ '[Fr. 26.7.]', '2019-07-26', '[[DE_DAY_MM_DD]]' ],
18
+ ]
19
+
20
+ assert_dates( data, start: Date.new( 2019, 7, 1 ), lang: 'de' )
21
+ end
22
+
23
+ end # class TestParseDe
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parse_en.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParseEn < MiniTest::Test
11
+
12
+ def test_date
13
+ data = [
14
+ [ 'Jun/12 2011 14:00', '2011-06-12 14:00', '[EN_MONTH_DD_YYYY_hh_mm]' ],
15
+ [ 'Oct/12 2013 16:00', '2013-10-12 16:00', '[EN_MONTH_DD_YYYY_hh_mm]' ],
16
+
17
+ [ 'Jan/26 2011', '2011-01-26', '[EN_MONTH_DD_YYYY]' ],
18
+ [ 'Jan/26', '2013-01-26', '[EN_MONTH_DD]' ],
19
+ [ '26 January', '2013-01-26', '[EN_DD_MONTH]' ],
20
+
21
+ [ 'Jun/13', '2013-06-13', '[EN_MONTH_DD]' ],
22
+ [ '13 June', '2013-06-13', '[EN_DD_MONTH]' ],
23
+
24
+ [ 'Fri Aug/9', '2013-08-09', '[EN_DAY_MONTH_DD]' ],
25
+ [ '[Fri Aug/9]', '2013-08-09', '[[EN_DAY_MONTH_DD]]' ],
26
+ ]
27
+
28
+ assert_dates( data, start: Date.new( 2013, 1, 1 ), lang: 'en' )
29
+ end
30
+ end # class TestParseEn
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parse_es.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParseEs < MiniTest::Test
11
+
12
+ def test_date
13
+ data = [
14
+ [ '12 Ene', '2019-01-12', '[ES_DD_MONTH]' ],
15
+ [ '[12 Ene]', '2019-01-12', '[[ES_DD_MONTH]]' ],
16
+
17
+ [ 'Sáb. 17.8.', '2019-08-17', '[ES_DAY_MM_DD]' ],
18
+ [ 'Sáb. 17.08.', '2019-08-17', '[ES_DAY_MM_DD]' ],
19
+ [ 'Sáb 17.8.', '2019-08-17', '[ES_DAY_MM_DD]' ],
20
+ [ '[Sáb 17.8.]', '2019-08-17', '[[ES_DAY_MM_DD]]' ],
21
+ ]
22
+
23
+ assert_dates( data, start: Date.new( 2019, 1, 1 ), lang: 'es' )
24
+ end
25
+
26
+ end # class TestParseEs
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parse_fr.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParseFr < MiniTest::Test
11
+
12
+ def test_date
13
+ data = [
14
+ [ '[Ven 08. Août]', '2014-08-08', '[[FR_DAY_DD_MONTH]]' ],
15
+ [ 'Ven 08. Août', '2014-08-08', '[FR_DAY_DD_MONTH]' ],
16
+ [ 'Ven 8. Août', '2014-08-08', '[FR_DAY_DD_MONTH]' ],
17
+ [ '[Sam 9. Août]', '2014-08-09', '[[FR_DAY_DD_MONTH]]' ],
18
+ [ '[Dim 10. Août]', '2014-08-10', '[[FR_DAY_DD_MONTH]]' ],
19
+ [ '[Sam 31. Janv]', '2015-01-31', '[[FR_DAY_DD_MONTH]]' ],
20
+ [ '[Sam 7. Févr]', '2015-02-07', '[[FR_DAY_DD_MONTH]]' ],
21
+ [ '[Sam 31. Jan]', '2015-01-31', '[[FR_DAY_DD_MONTH]]' ],
22
+ [ '[Sam 7. Fév]', '2015-02-07', '[[FR_DAY_DD_MONTH]]' ],
23
+ ]
24
+
25
+ assert_dates( data, start: Date.new( 2014, 8, 1 ), lang: 'fr' )
26
+ end
27
+
28
+ end # class TestParseFr
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parse_it.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParseIt < MiniTest::Test
11
+
12
+ def test_date
13
+ data = [
14
+ [ 'Sab. 24.8.', '2019-08-24', '[IT_DAY_MM_DD]' ],
15
+ [ 'Sab. 24.08.', '2019-08-24', '[IT_DAY_MM_DD]' ],
16
+ [ 'Sab 24.8.', '2019-08-24', '[IT_DAY_MM_DD]' ],
17
+ [ '[Sab. 24.8.]', '2019-08-24', '[[IT_DAY_MM_DD]]' ],
18
+ ]
19
+
20
+ assert_dates( data, start: Date.new( 2019, 1, 1 ), lang: 'it' )
21
+ end
22
+
23
+ end # class TestParseIt
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parse_pt.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParsePt < MiniTest::Test
11
+
12
+ def test_date
13
+ data = [
14
+ [ '29/03/2003 - Sábado', '2003-03-29', '[PT_DD_MM_YYYY_DAY]' ],
15
+ [ '29/3/2003 Sábado', '2003-03-29', '[PT_DD_MM_YYYY_DAY]' ],
16
+ [ '[29/3/2003 Sábado]', '2003-03-29', '[[PT_DD_MM_YYYY_DAY]]' ],
17
+
18
+ [ '09/04/2003 - Quarta-feira', '2003-04-09', '[PT_DD_MM_YYYY_DAY]' ],
19
+ [ '9/4/2003 Quarta-feira', '2003-04-09', '[PT_DD_MM_YYYY_DAY]' ],
20
+ [ '[9/4/2003 Quarta-feira]', '2003-04-09', '[[PT_DD_MM_YYYY_DAY]]' ],
21
+ ]
22
+
23
+ assert_dates( data, start: Date.new( 2003, 1, 1 ), lang: 'pt' )
24
+ end
25
+
26
+ end # class TestParsePt
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date-formats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-09 00:00:00.000000000 Z
11
+ date: 2019-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logutils
@@ -76,6 +76,12 @@ files:
76
76
  - test/helper.rb
77
77
  - test/test_parse.rb
78
78
  - test/test_parse_custom.rb
79
+ - test/test_parse_de.rb
80
+ - test/test_parse_en.rb
81
+ - test/test_parse_es.rb
82
+ - test/test_parse_fr.rb
83
+ - test/test_parse_it.rb
84
+ - test/test_parse_pt.rb
79
85
  - test/test_version.rb
80
86
  homepage: https://github.com/sportdb/sport.db
81
87
  licenses: