date-formats 0.1.0 → 0.1.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.
- 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
|