date-formats 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +3 -0
- data/lib/date-formats.rb +33 -109
- data/lib/date-formats/date.rb +15 -11
- data/lib/date-formats/reader.rb +78 -0
- data/lib/date-formats/source.rb +138 -0
- data/lib/date-formats/version.rb +1 -1
- data/lib/date/formats.rb +1 -0
- data/test/helper.rb +1 -1
- data/test/test_date.rb +21 -14
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c60c4e7804fd0a6a4b11e70c35daccfb6db9acbb
|
4
|
+
data.tar.gz: b78c75c1941eeafd29333b7872fdd62facb93cd1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9f1630097d9f0d1ee5e64963b156093969791ba6626c16421dafe46b33b74966a45875a830f5c61a23d8c76afd471b9715d84fa9de52e68c6ef8aefc0b829c6
|
7
|
+
data.tar.gz: 436c8c910c926d09126f0bd4142d3e1b783f6f3c83d6af18463504470d477f2886be119ff0e03709c892eeafa021ed038b2c84c263b1cd1aafc406357333b1a1
|
data/Manifest.txt
CHANGED
@@ -5,7 +5,10 @@ Rakefile
|
|
5
5
|
lib/date-formats.rb
|
6
6
|
lib/date-formats/date.rb
|
7
7
|
lib/date-formats/formats.rb
|
8
|
+
lib/date-formats/reader.rb
|
9
|
+
lib/date-formats/source.rb
|
8
10
|
lib/date-formats/version.rb
|
11
|
+
lib/date/formats.rb
|
9
12
|
test/helper.rb
|
10
13
|
test/test_date.rb
|
11
14
|
test/test_formats.rb
|
data/lib/date-formats.rb
CHANGED
@@ -8,124 +8,48 @@ require 'date'
|
|
8
8
|
require 'logutils'
|
9
9
|
|
10
10
|
|
11
|
+
###
|
12
|
+
# our own code
|
13
|
+
require 'date-formats/version' # let version always go first
|
14
|
+
require 'date-formats/source'
|
15
|
+
require 'date-formats/reader'
|
16
|
+
|
11
17
|
|
12
18
|
module DateFormats
|
13
19
|
|
14
|
-
MONTH_EN_TO_MM = {
|
15
|
-
'Jan' => '1', 'January' => '1',
|
16
|
-
'Feb' => '2', 'February' => '2',
|
17
|
-
'Mar' => '3', 'March' => '3',
|
18
|
-
'Apr' => '4', 'April' => '4',
|
19
|
-
'May' => '5',
|
20
|
-
'Jun' => '6', 'June' => '6',
|
21
|
-
'Jul' => '7', 'July' => '7',
|
22
|
-
'Aug' => '8', 'August' => '8',
|
23
|
-
'Sep' => '9', 'Sept' => '9', 'September' => '9',
|
24
|
-
'Oct' => '10', 'October' => '10',
|
25
|
-
'Nov' => '11', 'November' => '11',
|
26
|
-
'Dec' => '12', 'December' =>'12' }
|
27
|
-
|
28
|
-
MONTH_EN = 'January|Jan|'+
|
29
|
-
'February|Feb|'+
|
30
|
-
'March|Mar|'+
|
31
|
-
'April|Apr|'+
|
32
|
-
'May|'+
|
33
|
-
'June|Jun|'+
|
34
|
-
'July|Jul|'+
|
35
|
-
'August|Aug|'+
|
36
|
-
'September|Sept|Sep|'+
|
37
|
-
'October|Oct|'+
|
38
|
-
'November|Nov|'+
|
39
|
-
'December|Dec'
|
40
20
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
'Mai|' +
|
69
|
-
'Juin|' +
|
70
|
-
'Juillet|Juil|' +
|
71
|
-
'Août|' +
|
72
|
-
'Septembre|Sept|' +
|
73
|
-
'Octobre|Octo|Oct|' +
|
74
|
-
'Novembre|Nove|Nov|' +
|
75
|
-
'Décembre|Déce|Déc'
|
76
|
-
|
77
|
-
WEEKDAY_FR = 'Lundi|Lun|L|' +
|
78
|
-
'Mardi|Mar|Ma|' +
|
79
|
-
'Mercredi|Mer|Me|' +
|
80
|
-
'Jeudi|Jeu|J|' +
|
81
|
-
'Vendredi|Ven|V|' +
|
82
|
-
'Samedi|Sam|S|' +
|
83
|
-
'Dimanche|Dim|D|'
|
84
|
-
|
85
|
-
|
86
|
-
MONTH_ES_TO_MM = {
|
87
|
-
'Ene' => '1', 'Enero' => '1',
|
88
|
-
'Feb' => '2',
|
89
|
-
'Mar' => '3', 'Marzo' => '3',
|
90
|
-
'Abr' => '4', 'Abril' => '4',
|
91
|
-
'May' => '5', 'Mayo' => '5',
|
92
|
-
'Jun' => '6', 'Junio' => '6',
|
93
|
-
'Jul' => '7', 'Julio' => '7',
|
94
|
-
'Ago' => '8', 'Agosto' => '8',
|
95
|
-
'Sep' => '9', 'Set' => '9', 'Sept' => '9',
|
96
|
-
'Oct' => '10',
|
97
|
-
'Nov' => '11',
|
98
|
-
'Dic' => '12' }
|
99
|
-
|
100
|
-
MONTH_ES = 'Enero|Ene|'+
|
101
|
-
'Feb|'+
|
102
|
-
'Marzo|Mar|'+
|
103
|
-
'Abril|Abr|'+
|
104
|
-
'Mayo|May|'+
|
105
|
-
'Junio|Jun|'+
|
106
|
-
'Julio|Jul|'+
|
107
|
-
'Agosto|Ago|'+
|
108
|
-
'Sept|Set|Sep|'+
|
109
|
-
'Oct|'+
|
110
|
-
'Nov|'+
|
111
|
-
'Dic'
|
112
|
-
|
113
|
-
|
114
|
-
# todo: make more generic for reuse
|
115
|
-
### fix:
|
116
|
-
## use date/fr.yml en.yml etc. -- why? why not?
|
117
|
-
|
118
|
-
# todo/fix - add de and es too!!
|
119
|
-
# note: in Austria - Jänner - in Deutschland Januar allow both ??
|
120
|
-
# MONTH_DE = 'J[aä]n|Feb|Mär|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dez'
|
21
|
+
MONTH_EN_LINES = Reader.parse_month( Source::MONTH_EN )
|
22
|
+
MONTH_EN_TO_MM = build_map( MONTH_EN_LINES )
|
23
|
+
MONTH_EN = build_re( MONTH_EN_LINES )
|
24
|
+
|
25
|
+
WEEKDAY_EN_LINES = Reader.parse_weekday( Source::WEEKDAY_EN )
|
26
|
+
WEEKDAY_EN = build_re( WEEKDAY_EN_LINES )
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
MONTH_FR_LINES = Reader.parse_month( Source::MONTH_FR )
|
31
|
+
MONTH_FR_TO_MM = build_map( MONTH_FR_LINES )
|
32
|
+
MONTH_FR = build_re( MONTH_FR_LINES )
|
33
|
+
|
34
|
+
WEEKDAY_FR_LINES = Reader.parse_weekday( Source::WEEKDAY_FR )
|
35
|
+
WEEKDAY_FR = build_re( WEEKDAY_FR_LINES )
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
MONTH_ES_LINES = Reader.parse_month( Source::MONTH_ES )
|
40
|
+
MONTH_ES_TO_MM = build_map( MONTH_ES_LINES )
|
41
|
+
MONTH_ES = build_re( MONTH_ES_LINES )
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
MONTH_DE_LINES = Reader.parse_month( Source::MONTH_DE )
|
46
|
+
MONTH_DE_TO_MM = build_map( MONTH_DE_LINES )
|
47
|
+
MONTH_DE = build_re( MONTH_DE_LINES )
|
121
48
|
|
122
49
|
end # module DateFormats
|
123
50
|
|
124
51
|
|
125
52
|
|
126
|
-
###
|
127
|
-
# our own code
|
128
|
-
require 'date-formats/version' # let version always go first
|
129
53
|
require 'date-formats/formats'
|
130
54
|
require 'date-formats/date'
|
131
55
|
|
data/lib/date-formats/date.rb
CHANGED
@@ -6,21 +6,21 @@ module DateFormats
|
|
6
6
|
class DateFinderBase
|
7
7
|
|
8
8
|
private
|
9
|
-
def calc_year( month, day,
|
9
|
+
def calc_year( month, day, start: ) ## note: start required param for now on!!!
|
10
10
|
|
11
|
-
logger.debug " [calc_year] ????-#{month}-#{day} --
|
11
|
+
logger.debug " [calc_year] ????-#{month}-#{day} -- start: #{start}"
|
12
12
|
|
13
|
-
if month >=
|
13
|
+
if month >= start.month
|
14
14
|
# assume same year as start_at event (e.g. 2013 for 2013/14 season)
|
15
|
-
|
15
|
+
start.year
|
16
16
|
else
|
17
17
|
# assume year+1 as start_at event (e.g. 2014 for 2013/14 season)
|
18
|
-
|
18
|
+
start.year+1
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
|
23
|
-
def parse_date_time( match_data,
|
23
|
+
def parse_date_time( match_data, start: )
|
24
24
|
|
25
25
|
# convert regex match_data captures to hash
|
26
26
|
# - note: cannont use match_data like a hash (e.g. raises exception if key/name not present/found)
|
@@ -35,10 +35,13 @@ private
|
|
35
35
|
h[ :month ] = MONTH_EN_TO_MM[ h[:month_en] ] if h[:month_en]
|
36
36
|
h[ :month ] = MONTH_ES_TO_MM[ h[:month_es] ] if h[:month_es]
|
37
37
|
h[ :month ] = MONTH_FR_TO_MM[ h[:month_fr] ] if h[:month_fr]
|
38
|
+
h[ :month ] = MONTH_DE_TO_MM[ h[:month_de] ] if h[:month_de]
|
39
|
+
h[ :month ] = MONTH_IT_TO_MM[ h[:month_it] ] if h[:month_it]
|
40
|
+
h[ :month ] = MONTH_PT_TO_MM[ h[:month_pt] ] if h[:month_pt]
|
38
41
|
|
39
42
|
month = h[:month]
|
40
43
|
day = h[:day]
|
41
|
-
year = h[:year] || calc_year( month.to_i, day.to_i,
|
44
|
+
year = h[:year] || calc_year( month.to_i, day.to_i, start: start ).to_s
|
42
45
|
|
43
46
|
hours = h[:hours] || '00' # default to 00:00 for HH:MM (hours:minutes)
|
44
47
|
minutes = h[:minutes] || '00'
|
@@ -52,6 +55,7 @@ private
|
|
52
55
|
end # class DateFinderBase
|
53
56
|
|
54
57
|
|
58
|
+
|
55
59
|
class DateFinder < DateFinderBase
|
56
60
|
|
57
61
|
include LogUtils::Logging
|
@@ -68,7 +72,7 @@ class DateFinder < DateFinderBase
|
|
68
72
|
@formats = FORMATS[ @lang ] || FORMATS['en']
|
69
73
|
end
|
70
74
|
|
71
|
-
def find!( line, start_at: )
|
75
|
+
def find!( line, start_at: ) ## todo/fix: change start_at to start only!!!
|
72
76
|
# fix: use more lookahead for all required trailing spaces!!!!!
|
73
77
|
# fix: use <name capturing group> for month,day,year etc.!!!
|
74
78
|
|
@@ -84,7 +88,7 @@ class DateFinder < DateFinderBase
|
|
84
88
|
pattern = format[1]
|
85
89
|
m=pattern.match( line )
|
86
90
|
if m
|
87
|
-
date = parse_date_time( m,
|
91
|
+
date = parse_date_time( m, start: start_at )
|
88
92
|
## fix: use md[0] e.g. match for sub! instead of using regex again - why? why not???
|
89
93
|
## fix: use md.begin(0), md.end(0)
|
90
94
|
line.sub!( m[0], tag )
|
@@ -128,7 +132,7 @@ class RsssfDateFinder < DateFinderBase
|
|
128
132
|
(?<day>\d{1,2})
|
129
133
|
\]/x
|
130
134
|
|
131
|
-
def find!( line, start_at: )
|
135
|
+
def find!( line, start_at: ) ## todo/fix: change start_at to start only!!!
|
132
136
|
# fix: use more lookahead for all required trailing spaces!!!!!
|
133
137
|
# fix: use <name capturing group> for month,day,year etc.!!!
|
134
138
|
|
@@ -136,7 +140,7 @@ class RsssfDateFinder < DateFinderBase
|
|
136
140
|
pattern = EN__MONTH_DD__DATE_RE
|
137
141
|
m = pattern.match( line )
|
138
142
|
if m
|
139
|
-
date = parse_date_time( m,
|
143
|
+
date = parse_date_time( m, start: start_at )
|
140
144
|
## fix: use md[0] e.g. match for sub! instead of using regex again - why? why not???
|
141
145
|
## fix: use md.begin(0), md.end(0)
|
142
146
|
line.sub!( m[0], tag )
|
@@ -0,0 +1,78 @@
|
|
1
|
+
|
2
|
+
module DateFormats
|
3
|
+
|
4
|
+
########################
|
5
|
+
# parse words
|
6
|
+
class Reader ## todo/check: rename to WordReader or something for easy (re)use - why? why not?
|
7
|
+
|
8
|
+
def self.read( path ) ## use - rename to read_file or from_file etc. - why? why not?
|
9
|
+
txt = File.open( path, 'r:utf-8' ).read
|
10
|
+
parse( txt )
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.parse( txt )
|
14
|
+
lines = [] # array of lines (with words)
|
15
|
+
|
16
|
+
txt.each_line do |line|
|
17
|
+
line = line.strip
|
18
|
+
|
19
|
+
next if line.empty?
|
20
|
+
next if line.start_with?( '#' ) ## skip comments too
|
21
|
+
|
22
|
+
## strip inline (until end-of-line) comments too
|
23
|
+
## e.g. Janvier Janv Jan ## check janv in use??
|
24
|
+
## => Janvier Janv Jan
|
25
|
+
|
26
|
+
line = line.sub( /#.*/, '' ).strip
|
27
|
+
## pp line
|
28
|
+
|
29
|
+
values = line.split( /[ \t]+/ )
|
30
|
+
## pp values
|
31
|
+
|
32
|
+
## todo/fix -- add check for duplicates
|
33
|
+
lines << values
|
34
|
+
end
|
35
|
+
lines
|
36
|
+
end # method parse
|
37
|
+
|
38
|
+
def self.parse_month( txt )
|
39
|
+
lines = parse( txt )
|
40
|
+
if lines.size != 12
|
41
|
+
puts "*** !!! ERROR !!! reading month names; got #{lines.size} lines - expected 12"
|
42
|
+
exit 1
|
43
|
+
end
|
44
|
+
lines
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.parse_weekday( txt )
|
48
|
+
lines = parse( txt )
|
49
|
+
if lines.size != 7
|
50
|
+
puts "*** !!! ERROR !!! reading weekday names; got #{lines.size} lines - expected 7"
|
51
|
+
exit 1
|
52
|
+
end
|
53
|
+
lines
|
54
|
+
end
|
55
|
+
end # class Reader
|
56
|
+
|
57
|
+
|
58
|
+
def self.build_re( lines )
|
59
|
+
## join all words together into a single string e.g.
|
60
|
+
## January|Jan|February|Feb|March|Mar|April|Apr|May|June|Jun|...
|
61
|
+
lines.map { |line| line.join('|') }.join('|')
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.build_map( lines )
|
65
|
+
## build a lookup map that maps the word to the index (line no) plus 1 e.g.
|
66
|
+
## note: index is a string too
|
67
|
+
## {"January" => "1", "Jan" => "1",
|
68
|
+
## "February" => "2", "Feb" => "2",
|
69
|
+
## "March" => "3", "Mar" => "3",
|
70
|
+
## "April" => "4", "Apr" => "4",
|
71
|
+
## "May" => "5",
|
72
|
+
## "June" => "6", "Jun" => "6", ...
|
73
|
+
lines.each_with_index.reduce( {} ) do |h,(line,i)|
|
74
|
+
line.each { |name| h[ name ] = (i+1).to_s } ## note: start mapping with 1 (and NOT zero-based, that is, 0)
|
75
|
+
h
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end # module DateFormats
|
@@ -0,0 +1,138 @@
|
|
1
|
+
module DateFormats
|
2
|
+
module Source
|
3
|
+
|
4
|
+
# todo: make more generic for reuse
|
5
|
+
### fix:
|
6
|
+
## use date/en.txt or en.txt etc. -- why? why not?
|
7
|
+
|
8
|
+
MONTH_EN = <<TXT
|
9
|
+
January Jan
|
10
|
+
February Feb
|
11
|
+
March Mar
|
12
|
+
April Apr
|
13
|
+
May
|
14
|
+
June Jun
|
15
|
+
July Jul
|
16
|
+
August Aug
|
17
|
+
September Sept Sep
|
18
|
+
October Oct
|
19
|
+
November Nov
|
20
|
+
December Dec
|
21
|
+
TXT
|
22
|
+
|
23
|
+
WEEKDAY_EN = <<TXT
|
24
|
+
Monday Mon
|
25
|
+
Tuesday Tu Tue Tues
|
26
|
+
Wednesday Wed
|
27
|
+
Thursday Th Thu Thur Thurs
|
28
|
+
Friday Fri
|
29
|
+
Saturday Sat
|
30
|
+
Sunday Sun
|
31
|
+
TXT
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
MONTH_FR = <<TXT
|
36
|
+
Janvier Janv Jan ## check janv in use??
|
37
|
+
Février Févr Fév ## check fevr in use???
|
38
|
+
Mars Mar
|
39
|
+
Avril Avri Avr ## check avri in use??? if not remove
|
40
|
+
Mai
|
41
|
+
Juin
|
42
|
+
Juillet Juil
|
43
|
+
Août
|
44
|
+
Septembre Sept
|
45
|
+
Octobre Octo Oct ## check octo in use??
|
46
|
+
Novembre Nove Nov ## check nove in use??
|
47
|
+
Décembre Déce Déc ## check dece in use??
|
48
|
+
TXT
|
49
|
+
|
50
|
+
WEEKDAY_FR = <<TXT
|
51
|
+
Lundi Lun L
|
52
|
+
Mardi Mar Ma
|
53
|
+
Mercredi Mer Me
|
54
|
+
Jeudi Jeu J
|
55
|
+
Vendredi Ven V
|
56
|
+
Samedi Sam S
|
57
|
+
Dimanche Dim D
|
58
|
+
TXT
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
MONTH_ES = <<TXT
|
63
|
+
Enero Ene
|
64
|
+
Febrero Feb
|
65
|
+
Marzo Mar
|
66
|
+
Abril Abr
|
67
|
+
Mayo May
|
68
|
+
Junio Jun
|
69
|
+
Julio Jul
|
70
|
+
Agosto Ago
|
71
|
+
Septiembre Sept Sep Set ## check set in use??
|
72
|
+
Octubre Oct
|
73
|
+
Noviembre Nov
|
74
|
+
Diciembre Dic
|
75
|
+
TXT
|
76
|
+
|
77
|
+
MONTH_DE = <<TXT
|
78
|
+
Jänner Januar Jan Jän # note: in Austria - Jänner; in Deutschland Januar allow both ??
|
79
|
+
Feber Februar Feb
|
80
|
+
März Mär
|
81
|
+
April Apr
|
82
|
+
Mai Mai
|
83
|
+
Juni Jun
|
84
|
+
Juli Jul
|
85
|
+
August Aug
|
86
|
+
September Sep
|
87
|
+
Oktober Okt
|
88
|
+
November Nov
|
89
|
+
Dezember Dez
|
90
|
+
TXT
|
91
|
+
|
92
|
+
MONTH_IT = <<TXT
|
93
|
+
Gennaio
|
94
|
+
Febbraio
|
95
|
+
Marzo
|
96
|
+
Aprile
|
97
|
+
Maggio
|
98
|
+
Giugno
|
99
|
+
Luglio
|
100
|
+
Agosto
|
101
|
+
Settembre
|
102
|
+
Ottobre
|
103
|
+
Novembre
|
104
|
+
Dicembre
|
105
|
+
TXT
|
106
|
+
|
107
|
+
MONTH_PT = <<TXT
|
108
|
+
Janeiro
|
109
|
+
Fevereiro
|
110
|
+
Março
|
111
|
+
Abril
|
112
|
+
Maio
|
113
|
+
Junho
|
114
|
+
Julho
|
115
|
+
Agosto
|
116
|
+
Setembro
|
117
|
+
Outubro
|
118
|
+
Novembro
|
119
|
+
Dezembro
|
120
|
+
TXT
|
121
|
+
|
122
|
+
MONTH_RO = <<TXT
|
123
|
+
Ianuarie
|
124
|
+
Februarie
|
125
|
+
Martie
|
126
|
+
Aprilie
|
127
|
+
Mai
|
128
|
+
Iunie
|
129
|
+
Iulie
|
130
|
+
August
|
131
|
+
Septembrie
|
132
|
+
Octombrie
|
133
|
+
Noiembrie
|
134
|
+
Decembrie
|
135
|
+
TXT
|
136
|
+
|
137
|
+
end # module Source
|
138
|
+
end # module DateFormats
|
data/lib/date-formats/version.rb
CHANGED
data/lib/date/formats.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative '../date-formats' ## note: allow require 'date/formats' too (in addition to require 'date-formats')
|
data/test/helper.rb
CHANGED
data/test/test_date.rb
CHANGED
@@ -4,20 +4,21 @@
|
|
4
4
|
# to run use
|
5
5
|
# ruby -I ./lib -I ./test test/test_date.rb
|
6
6
|
|
7
|
+
|
7
8
|
require 'helper'
|
8
9
|
|
9
10
|
class TestDate < MiniTest::Test
|
10
11
|
|
11
12
|
def test_date
|
12
13
|
data = [
|
13
|
-
[ '19.01.2013 22.00', '2013-01-19 22:00' ],
|
14
|
-
[ '21.01.2013 21.30', '2013-01-21 21:30' ],
|
15
|
-
[ '26.01.2013', '2013-01-26'
|
16
|
-
[ '[26.01.2013]', '2013-01-26'
|
17
|
-
[ '[21.1.]', '2013-01-21 00:00' ]
|
14
|
+
[ '19.01.2013 22.00', '2013-01-19 22:00', '[DD_MM_YYYY_hh_mm]' ],
|
15
|
+
[ '21.01.2013 21.30', '2013-01-21 21:30', '[DD_MM_YYYY_hh_mm]' ],
|
16
|
+
[ '26.01.2013', '2013-01-26', '[DD_MM_YYYY]' ],
|
17
|
+
[ '[26.01.2013]', '2013-01-26', '[[DD_MM_YYYY]]' ],
|
18
|
+
[ '[21.1.]', '2013-01-21 00:00', '[[DD_MM]]' ]
|
18
19
|
]
|
19
20
|
|
20
|
-
assert_dates( data,
|
21
|
+
assert_dates( data, start: Date.new( 2013, 1, 1 ) )
|
21
22
|
end
|
22
23
|
|
23
24
|
def test_date_fr
|
@@ -33,7 +34,7 @@ class TestDate < MiniTest::Test
|
|
33
34
|
[ '[Sam 7. Fév]', '2015-02-07' ],
|
34
35
|
]
|
35
36
|
|
36
|
-
assert_dates( data,
|
37
|
+
assert_dates( data, start: Date.new( 2014, 8, 1 ), lang: 'fr' )
|
37
38
|
end
|
38
39
|
|
39
40
|
def test_date_en
|
@@ -55,17 +56,23 @@ class TestDate < MiniTest::Test
|
|
55
56
|
[ '13 June', '2013-06-13 00:00' ]
|
56
57
|
]
|
57
58
|
|
58
|
-
assert_dates( data,
|
59
|
+
assert_dates( data, start: Date.new( 2013, 1, 1 ), lang: 'en' )
|
59
60
|
end
|
60
61
|
|
61
62
|
|
62
63
|
|
63
64
|
private
|
64
|
-
def assert_dates( data,
|
65
|
+
def assert_dates( data, start:, lang: 'en' )
|
65
66
|
data.each do |rec|
|
66
|
-
line
|
67
|
-
str
|
68
|
-
value = parse_date( line,
|
67
|
+
line = rec[0]
|
68
|
+
str = rec[1]
|
69
|
+
value = parse_date( line, start: start, lang: lang )
|
70
|
+
|
71
|
+
tagged_line = rec[2] ## optinal tagged line
|
72
|
+
if tagged_line ## note: line gets tagged inplace!!! (no new string)
|
73
|
+
assert_equal line, tagged_line
|
74
|
+
puts "#{line} == #{tagged_line}"
|
75
|
+
end
|
69
76
|
|
70
77
|
if str.index( ':' )
|
71
78
|
assert_datetime( DateTime.strptime( str, '%Y-%m-%d %H:%M' ), value )
|
@@ -93,10 +100,10 @@ private
|
|
93
100
|
end
|
94
101
|
|
95
102
|
|
96
|
-
def parse_date( line,
|
103
|
+
def parse_date( line, start:, lang: )
|
97
104
|
# e.g. lets you pass in opts[:start_at] ???
|
98
105
|
finder = DateFormats::DateFinder.new( lang: lang )
|
99
|
-
finder.find!( line, start_at:
|
106
|
+
finder.find!( line, start_at: start )
|
100
107
|
end
|
101
108
|
|
102
109
|
end # class TestDate
|
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.1.
|
4
|
+
version: 0.1.1
|
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-
|
11
|
+
date: 2019-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logutils
|
@@ -69,7 +69,10 @@ files:
|
|
69
69
|
- lib/date-formats.rb
|
70
70
|
- lib/date-formats/date.rb
|
71
71
|
- lib/date-formats/formats.rb
|
72
|
+
- lib/date-formats/reader.rb
|
73
|
+
- lib/date-formats/source.rb
|
72
74
|
- lib/date-formats/version.rb
|
75
|
+
- lib/date/formats.rb
|
73
76
|
- test/helper.rb
|
74
77
|
- test/test_date.rb
|
75
78
|
- test/test_formats.rb
|