eventual 0.5.1 → 0.5.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.
data/README.rdoc CHANGED
@@ -14,59 +14,57 @@ Ejemplos:
14
14
  require 'rubygems'
15
15
  require 'eventual'
16
16
 
17
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2009' ).map
17
+ Eventual.parse( 'del 5 al 7 de junio del 2009' ).map
18
18
  => [#<DateTime: 4909975/2,0,2299161>, #<DateTime: 4909977/2,0,2299161>, #<DateTime: 4909979/2,0,2299161>]
19
19
 
20
20
  # Si no se especifica el año se usará el año actual
21
- EsDatesParser.new.parse( 'del 5 al 7 de junio' ).map{ |d| d.to_s } # Quizá mas tarde se localize a otros idiomas
21
+ Eventual.parse( 'del 5 al 7 de junio' ).map{ |d| d.to_s } # Quizá mas tarde se localize a otros idiomas
22
22
  => ["2010-06-05", "2010-06-06", "2010-06-07"]
23
23
 
24
24
  # Se puede especificar un año por omisión
25
- dates = EsDatesParser.new.parse( 'del 5 al 7 de junio' )
26
- dates.year = 2007
25
+ dates = Eventual.parse( 'del 5 al 7 de junio', :default_year => 2007 )
27
26
  dates.map{ |d| d.to_s }
28
27
  => ["2007-06-05", "2007-06-06", "2007-06-07"]
29
28
 
30
29
  # Si se especifica la hora el resultado será un Array de DateTime
31
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2009 a las 16:00 y 18:00 horas' ).map
30
+ Eventual.parse( 'del 5 al 7 de junio del 2009 a las 16:00 y 18:00 horas', :lang => :es ).map
32
31
  => [#<DateTime: 14729929/6,0,2299161>, #<DateTime: 9819953/4,0,2299161>, #<DateTime: 14729935/6,0,2299161>, #<DateTime: 9819957/4,0,2299161>, #<DateTime: 14729941/6,0,2299161>, #<DateTime: 9819961/4,0,2299161>]
33
32
 
34
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2009 a las 16:00 y 18:00 horas' ).map{ |d| d.to_s }
33
+ Eventual.parse( 'del 5 al 7 de junio del 2009 a las 16:00 y 18:00 horas' ).map{ |d| d.to_s }
35
34
  => ["2009-06-05T16:00:00+00:00", "2009-06-05T18:00:00+00:00", "2009-06-06T16:00:00+00:00", "2009-06-06T18:00:00+00:00", "2009-06-07T16:00:00+00:00", "2009-06-07T18:00:00+00:00"]
36
35
 
37
36
  # Se pueden restringir los resultados a ciertos dias
38
- EsDatesParser.new.parse('lunes y martes de diciembre del 2001 a las 15:00').map{ |d| d.to_s }
37
+ Eventual.parse('lunes y martes de diciembre del 2001 a las 15:00').map{ |d| d.to_s }
39
38
  => ["2010-12-06T15:00:00+00:00", "2010-12-07T15:00:00+00:00", "2010-12-13T15:00:00+00:00", "2010-12-14T15:00:00+00:00", "2010-12-20T15:00:00+00:00", "2010-12-21T15:00:00+00:00", "2010-12-27T15:00:00+00:00", "2010-12-28T15:00:00+00:00"]
40
39
 
41
40
  # Se puede checar si las fechas reconocidas incluyen cierta fecha, la comparación es "perezosa" es decir no instancia todos los objetos Date o DateTime
42
41
  # como hace map y por lo tanto es mas eficiente
43
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007' ).include? Date.civil(2007, 6, 6)
42
+ Eventual.parse( 'del 5 al 7 de junio del 2007' ).include? Date.civil(2007, 6, 6)
44
43
  => true
45
44
 
46
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007' ).include? Date.civil(2006, 6, 6)
45
+ Eventual.parse( 'del 5 al 7 de junio del 2007' ).include? Date.civil(2006, 6, 6)
47
46
  => false
48
47
 
49
48
  # Se toma en cuenta la hora
50
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 16, 0)
49
+ Eventual.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 16, 0)
51
50
  => true
52
51
 
53
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 15, 0)
52
+ Eventual.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 15, 0)
54
53
  => false
55
54
 
56
55
  # Si se pasa un Date que corresponda al periodo la comparación es positiva
57
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? Date.civil(2007, 6, 6)
56
+ Eventual.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? Date.civil(2007, 6, 6)
58
57
  => true
59
58
 
60
59
  # El evento tiene una duración por omisión de 60 minutos
61
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 16, 59)
60
+ Eventual.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 16, 59)
62
61
  => true
63
62
 
64
- EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 17, 00)
63
+ Eventual.parse( 'del 5 al 7 de junio del 2007 a las 16:00' ).include? DateTime.civil(2007, 6, 6, 17, 00)
65
64
  => false
66
65
 
67
66
  # Pero se puede cambiar
68
- dates = EsDatesParser.new.parse( 'del 5 al 7 de junio del 2007 a las 16:00' )
69
- dates.time_span = 120
67
+ dates = Eventual.parse( 'del 5 al 7 de junio del 2007 a las 16:00', :default_event_span => 120)
70
68
  dates.include? DateTime.civil(2007, 6, 6, 17, 00)
71
69
  => true
72
70
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.1
1
+ 0.5.2
@@ -4,7 +4,7 @@ module Eventual
4
4
  ShortMonthNames = %w(ene feb mar abr may jun jul ago sept oct nov dic).freeze
5
5
  WdaysR = [/d/, /l/, /ma/, /mi/, /j/, /v/, /s/].freeze
6
6
  WdayListR = /\b(?:#{ WdaysR.join('|') })/.freeze
7
-
7
+ # :nodoc:
8
8
  class WdayMatchError < StandardError
9
9
  def initialize value, wday_index
10
10
  @value, @wday_index = value, wday_index
@@ -14,7 +14,7 @@ module Eventual
14
14
  "El #{@value.day} de #{MonthNames[@value.month]} del #{@value.year} cae en #{Weekdays[@value.wday]} no #{Weekdays[@wday_index]}"
15
15
  end
16
16
  end
17
-
17
+ # :nodoc:
18
18
  class Year < Treetop::Runtime::SyntaxNode
19
19
  def value
20
20
  match = text_value.match(/(')?(\d{2,4})/)
@@ -23,7 +23,7 @@ module Eventual
23
23
  value
24
24
  end
25
25
  end
26
-
26
+ # :nodoc:
27
27
  class WeekdayConstrain < Treetop::Runtime::SyntaxNode
28
28
  def value
29
29
  text = wdays_node.text_value.sub('semana', '')
@@ -33,42 +33,47 @@ module Eventual
33
33
  days.uniq
34
34
  end
35
35
  end
36
-
36
+ # :nodoc:
37
37
  class MonthName < Treetop::Runtime::SyntaxNode
38
38
  def value
39
39
  ShortMonthNames.index(text_value.downcase.match(/#{ ShortMonthNames.join('|') }/).to_s) + 1
40
40
  end
41
41
  end
42
-
42
+
43
43
  class Node < Treetop::Runtime::SyntaxNode
44
44
  attr_accessor :year
45
45
  attr_accessor :time_span
46
-
47
46
  attr_accessor :month
48
47
  attr_accessor :weekdays
49
48
  attr_accessor :times
50
49
 
50
+ # Returns last Date or DateTime of the encompassed period
51
51
  def last
52
52
  to_a.last
53
53
  end
54
54
 
55
+ # Returns last Date or DateTime of the encompassed period
55
56
  def first
56
57
  to_a.first
57
58
  end
58
59
 
60
+ # Returns an array with all the encompassed Dates or DateTimes
59
61
  def to_a
60
62
  map
61
63
  end
62
64
 
65
+ # Returns true if the weekday (as number) correspons to any allowed weekday
63
66
  def date_within_weekdays? date
64
67
  return true unless weekdays
65
68
  weekdays.include?(date.wday)
66
69
  end
67
70
 
71
+ # Invokes block once for each Date or DateTime. Creates a new array containing the values returned by the block.
68
72
  def map &block
69
73
  walk { |elements| elements.map &block }
70
74
  end
71
75
 
76
+ # Returns true if the Date or DateTime passed is included in the parsed Dates or DateTimes
72
77
  def include? date
73
78
  result = false
74
79
  walk { |elements| break result = true if elements.include? date }
@@ -123,6 +128,7 @@ module Eventual
123
128
  end
124
129
  end
125
130
 
131
+ # :nodoc:
126
132
  class Day < Node
127
133
  def map &block
128
134
  dates = times ? times.map{ |time| DateTime.civil year, month, text_value.to_i, time.hour, time.minute } : [Date.civil(year, month, text_value.to_i)]
@@ -134,7 +140,7 @@ module Eventual
134
140
  to_a.include? date
135
141
  end
136
142
  end
137
-
143
+ # :nodoc:
138
144
  class Period < Node
139
145
  def range
140
146
  (first..last)
@@ -162,7 +168,7 @@ module Eventual
162
168
  array
163
169
  end
164
170
  end
165
-
171
+ # :nodoc:
166
172
  class MonthPeriod < Period
167
173
  def first
168
174
  return Date.civil(year, month_name.value) unless times and !times.empty?
@@ -177,7 +183,7 @@ module Eventual
177
183
  DateTime.civil(date.year, date.month, date.day, time.hour, time.minute)
178
184
  end
179
185
  end
180
-
186
+ # :nodoc:
181
187
  class DatePeriod < Period
182
188
  def first
183
189
  node_map.first
@@ -187,7 +193,7 @@ module Eventual
187
193
  node_map.last
188
194
  end
189
195
  end
190
-
196
+ # :nodoc:
191
197
  class Times < Treetop::Runtime::SyntaxNode
192
198
  def map
193
199
  walk_times = lambda do |elements|
@@ -197,7 +203,7 @@ module Eventual
197
203
  walk_times.call(elements).flatten.compact.sort_by{ |t| '%02d%02d' % [t.hour, t.minute] }
198
204
  end
199
205
  end
200
-
206
+ # :nodoc:
201
207
  class Time < Treetop::Runtime::SyntaxNode
202
208
  attr_accessor :hour, :minute
203
209
  def value
@@ -206,7 +212,7 @@ module Eventual
206
212
  self
207
213
  end
208
214
  end
209
-
215
+ # :nodoc:
210
216
  class Time12 < Time
211
217
  def value
212
218
  super
data/lib/eventual.rb CHANGED
@@ -4,4 +4,31 @@ require 'date'
4
4
 
5
5
  require "#{ File.dirname __FILE__ }/eventual/syntax_nodes"
6
6
 
7
- autoload :EsDatesParser, 'eventual/es'
7
+ autoload :EsDatesParser, 'eventual/es'
8
+
9
+ module Eventual
10
+ # Parses dates specified in natural language and returns an Eventual::Node object
11
+ # Eventual.parse( 'del 5 al 7 de junio del 2009' ).map
12
+ # => [#<DateTime: 4909975/2,0,2299161>, #<DateTime: 4909977/2,0,2299161>, #<DateTime: 4909979/2,0,2299161
13
+ # Options:
14
+ # +:lang+:
15
+ # Defaults to 'Es', the language to be used for parsing, currently only spanish is supported, hang on.
16
+ # +:default_year+:
17
+ # The default year to be used in case year is not specified in the text, defaults to current year
18
+ # +:default_event_span+:
19
+ # The duration in minutes an event has, defaults to 60
20
+ #
21
+ def self.parse text, opts = {}
22
+ lang = opts.delete(:lang) || 'Es'
23
+ year = opts.delete(:default_year)
24
+ span = opts.delete(:default_event_span)
25
+
26
+ raise ArgumentError, "Expected option `:default_year` to be an integer" if year && !(Integer === year)
27
+ raise ArgumentError, "Expected option `:default_event_span` to be an integer" if span && !(Integer === span)
28
+
29
+ node = const_get("#{ lang.to_s[0..1].capitalize }DatesParser").new.parse(text)
30
+ node.year = year if year
31
+ node.time_span = span if span
32
+ node
33
+ end
34
+ end
@@ -3,7 +3,6 @@ require 'eventual'
3
3
 
4
4
  describe Eventual, 'Es' do
5
5
  before do
6
- @parser = EsDatesParser.new
7
6
  Date.stub!(:today).and_return Date.civil(2010)
8
7
  end
9
8
 
@@ -20,7 +19,7 @@ describe Eventual, 'Es' do
20
19
  describe 'month' do
21
20
  describe "month without year parsing 'marzo'" do
22
21
  before do
23
- @result = @parser.parse 'marzo'
22
+ @result = Eventual.parse 'marzo', :lang => 'Es'
24
23
  @dates = (Date.parse('2010-3-1')..Date.parse('2010-3-31')).map
25
24
  end
26
25
  it_should_behave_like 'correctly parses'
@@ -29,7 +28,7 @@ describe Eventual, 'Es' do
29
28
  describe 'month with year' do
30
29
  describe "parsing 'marzo de 2009'" do
31
30
  before do
32
- @result = @parser.parse "marzo de 2009"
31
+ @result = Eventual.parse "marzo de 2009"
33
32
  @dates = (Date.parse('2009-3-1')..Date.parse('2009-3-31')).map
34
33
  end
35
34
  it_should_behave_like 'correctly parses'
@@ -37,7 +36,7 @@ describe Eventual, 'Es' do
37
36
 
38
37
  describe "parsing 'marzo del 2009'" do
39
38
  before do
40
- @result = @parser.parse "marzo del 2009"
39
+ @result = Eventual.parse "marzo del 2009"
41
40
  @dates = (Date.parse('2009-3-1')..Date.parse('2009-3-31')).map
42
41
  end
43
42
  it_should_behave_like 'correctly parses'
@@ -45,7 +44,7 @@ describe Eventual, 'Es' do
45
44
 
46
45
  describe "parsing 'marzo 2009'" do
47
46
  before do
48
- @result = @parser.parse "marzo 2009"
47
+ @result = Eventual.parse "marzo 2009"
49
48
  @dates = (Date.parse('2009-3-1')..Date.parse('2009-3-31')).map
50
49
  end
51
50
  it_should_behave_like 'correctly parses'
@@ -53,7 +52,7 @@ describe Eventual, 'Es' do
53
52
 
54
53
  describe "parsing 'marzo, 2009'" do
55
54
  before do
56
- @result = @parser.parse "marzo, 2009"
55
+ @result = Eventual.parse "marzo, 2009"
57
56
  @dates = (Date.parse('2009-3-1')..Date.parse('2009-3-31')).map
58
57
  end
59
58
  it_should_behave_like 'correctly parses'
@@ -61,7 +60,7 @@ describe Eventual, 'Es' do
61
60
 
62
61
  describe "parsing 'marzo '09'" do
63
62
  before do
64
- @result = @parser.parse "marzo '09"
63
+ @result = Eventual.parse "marzo '09"
65
64
  @dates = (Date.parse('2009-3-1')..Date.parse('2009-3-31')).map
66
65
  end
67
66
  it_should_behave_like 'correctly parses'
@@ -74,27 +73,27 @@ describe Eventual, 'Es' do
74
73
  end
75
74
 
76
75
  describe "parsing 'lunes y martes marzo del 2010'" do
77
- before { @result = @parser.parse "lunes y martes marzo del 2010" }
76
+ before { @result = Eventual.parse "lunes y martes marzo del 2010" }
78
77
  it_should_behave_like 'correctly parses'
79
78
  end
80
79
 
81
80
  describe "parsing 'lunes y martes de marzo del 2010'" do
82
- before { @result = @parser.parse "lunes y martes de marzo del 2010" }
81
+ before { @result = Eventual.parse "lunes y martes de marzo del 2010" }
83
82
  it_should_behave_like 'correctly parses'
84
83
  end
85
84
 
86
85
  describe "parsing 'lunes y martes durante marzo del 2010'" do
87
- before { @result = @parser.parse "lunes y martes durante marzo del 2010" }
86
+ before { @result = Eventual.parse "lunes y martes durante marzo del 2010" }
88
87
  it_should_behave_like 'correctly parses'
89
88
  end
90
89
 
91
90
  describe "parsing 'lunes y martes durante todo marzo del 2010'" do
92
- before { @result = @parser.parse "lunes y martes durante todo marzo del 2010" }
91
+ before { @result = Eventual.parse "lunes y martes durante todo marzo del 2010" }
93
92
  it_should_behave_like 'correctly parses'
94
93
  end
95
94
 
96
95
  describe "parsing 'lunes y martes, marzo del 2010'" do
97
- before { @result = @parser.parse "lunes y martes, marzo del 2010" }
96
+ before { @result = Eventual.parse "lunes y martes, marzo del 2010" }
98
97
  it_should_behave_like 'correctly parses'
99
98
  end
100
99
  end
@@ -108,28 +107,28 @@ describe Eventual, 'Es' do
108
107
  end
109
108
 
110
109
  describe "should single day number for '21 de marzo'" do
111
- before { @result = @parser.parse("21 de marzo") }
110
+ before { @result = Eventual.parse("21 de marzo") }
112
111
  it_should_behave_like 'correctly parses'
113
112
  end
114
113
 
115
114
  describe "parsing '21 marzo'" do
116
- before { @result = @parser.parse("21 marzo") }
115
+ before { @result = Eventual.parse("21 marzo") }
117
116
  it_should_behave_like 'correctly parses'
118
117
  end
119
118
 
120
119
  # describe "parsing 'marzo 21'" do
121
- # before { @result = @parser.parse("21 marzo") }
120
+ # before { @result = Eventual.parse("21 marzo") }
122
121
  # it_should_behave_like 'correctly parses'
123
122
  # end
124
123
 
125
124
  describe 'date with wday' do
126
125
  describe "parsing 'domingo 21 de marzo'" do
127
- before { @result = @parser.parse("domingo 21 de marzo") }
126
+ before { @result = Eventual.parse("domingo 21 de marzo") }
128
127
  it_should_behave_like 'correctly parses'
129
128
  end
130
129
 
131
130
  it "should raise WdayMatchError if weekday doesn't correspond to date" do
132
- lambda { @parser.parse("lunes 21 de marzo").map }.should raise_error(Eventual::WdayMatchError)
131
+ lambda { Eventual.parse("lunes 21 de marzo").map }.should raise_error(Eventual::WdayMatchError)
133
132
  end
134
133
  end
135
134
  end
@@ -140,22 +139,22 @@ describe Eventual, 'Es' do
140
139
  end
141
140
 
142
141
  describe "day list for '1, 2 y 3 de marzo'" do
143
- before { @result = @parser.parse("1, 2 y 3 marzo") }
142
+ before { @result = Eventual.parse("1, 2 y 3 marzo") }
144
143
  it_should_behave_like 'correctly parses'
145
144
  end
146
145
 
147
146
  describe "day list for '1, 2 y 3 marzo'" do
148
- before { @result = @parser.parse("1, 2 y 3 de marzo") }
147
+ before { @result = Eventual.parse("1, 2 y 3 de marzo") }
149
148
  it_should_behave_like 'correctly parses'
150
149
  end
151
150
 
152
151
  describe "day list with weekday 'lunes 1, martes 2 y miercoles 3 de marzo'" do
153
- before { @result = @parser.parse("lunes 1, martes 2 y miercoles 3 de marzo") }
152
+ before { @result = Eventual.parse("lunes 1, martes 2 y miercoles 3 de marzo") }
154
153
  it_should_behave_like 'correctly parses'
155
154
  end
156
155
 
157
156
  it "should raise WdayMatchError if weekday doesn't correspond to date" do
158
- lambda { @parser.parse("lunes 2, martes 2 y jueves 3 de marzo").map }.should raise_error(Eventual::WdayMatchError)
157
+ lambda { Eventual.parse("lunes 2, martes 2 y jueves 3 de marzo").map }.should raise_error(Eventual::WdayMatchError)
159
158
  end
160
159
  end
161
160
  end
@@ -167,29 +166,29 @@ describe Eventual, 'Es' do
167
166
  end
168
167
 
169
168
  describe "day list for '1 al 3 de marzo" do
170
- before { @result = @parser.parse("1 al 3 de marzo del '10") }
169
+ before { @result = Eventual.parse("1 al 3 de marzo del '10") }
171
170
  it_should_behave_like 'correctly parses'
172
171
  end
173
172
 
174
173
  describe "day list for '1 al 3, marzo" do
175
- before { @result = @parser.parse("1 al 3, marzo del '10") }
174
+ before { @result = Eventual.parse("1 al 3, marzo del '10") }
176
175
  it_should_behave_like 'correctly parses'
177
176
  end
178
177
 
179
178
  describe "day list for 'del 1 al 3 de marzo" do
180
- before { @result = @parser.parse("del 1 al 3 de marzo del '10") }
179
+ before { @result = Eventual.parse("del 1 al 3 de marzo del '10") }
181
180
  it_should_behave_like 'correctly parses'
182
181
  end
183
182
 
184
183
  describe "day list for 'del 1 al 3, marzo" do
185
- before { @result = @parser.parse("del 1 al 3, marzo del '10") }
184
+ before { @result = Eventual.parse("del 1 al 3, marzo del '10") }
186
185
  it_should_behave_like 'correctly parses'
187
186
  end
188
187
  end
189
188
 
190
189
  describe "spanning diferent months '24 de febrero al 3 de marzo del 2010" do
191
190
  before do
192
- @result = @parser.parse "24 de febrero al 3 de marzo del 2010"
191
+ @result = Eventual.parse "24 de febrero al 3 de marzo del 2010"
193
192
  @dates = (Date.parse('2010-2-24')..Date.parse('2010-3-3'))
194
193
  end
195
194
  it_should_behave_like 'correctly parses'
@@ -197,7 +196,7 @@ describe Eventual, 'Es' do
197
196
 
198
197
  describe "spanning diferent years '24 de diciembre del 2009 al 3 de enero del 2010" do
199
198
  before do
200
- @result = @parser.parse("24 de diciembre del 2009 al 3 de enero del 2010")
199
+ @result = Eventual.parse("24 de diciembre del 2009 al 3 de enero del 2010")
201
200
  @dates = (Date.parse('2009-12-24')..Date.parse('2010-1-3'))
202
201
  end
203
202
  it_should_behave_like 'correctly parses'
@@ -209,24 +208,24 @@ describe Eventual, 'Es' do
209
208
  end
210
209
 
211
210
  describe "1 de octubre a 2 de diciembre del 2008" do
212
- before { @result = @parser.parse "1 de octubre a 2 de diciembre del 2008" }
211
+ before { @result = Eventual.parse "1 de octubre a 2 de diciembre del 2008" }
213
212
  it_should_behave_like 'correctly parses'
214
213
  end
215
214
 
216
215
  describe "1 de octubre al 2 de diciembre del 2008" do
217
- before { @result = @parser.parse "1 de octubre al 2 de diciembre del 2008" }
216
+ before { @result = Eventual.parse "1 de octubre al 2 de diciembre del 2008" }
218
217
  it_should_behave_like 'correctly parses'
219
218
  end
220
219
 
221
220
  describe "del miercoles 1 de octubre al martes 2 de diciembre del 2008" do
222
- before { @result = @parser.parse "del miercoles 1 de octubre al martes 2 de diciembre del 2008" }
221
+ before { @result = Eventual.parse "del miercoles 1 de octubre al martes 2 de diciembre del 2008" }
223
222
  it_should_behave_like 'correctly parses'
224
223
  end
225
224
  end
226
225
 
227
226
  describe "lunes y martes del 1 de octubre al 2 de diciembre del 2008" do
228
227
  before do
229
- @result = @parser.parse "lunes y martes del 1 de octubre al 2 de diciembre del 2008"
228
+ @result = Eventual.parse "lunes y martes del 1 de octubre al 2 de diciembre del 2008"
230
229
  @dates = (Date.parse('2008-10-1')..DateTime.parse('2008-12-2')).reject{ |day| not [1,2].include?(day.wday) }
231
230
  end
232
231
  it_should_behave_like 'correctly parses'
@@ -235,7 +234,7 @@ describe Eventual, 'Es' do
235
234
  describe 'with weekday constrain' do
236
235
  describe "wdays for 'lunes y martes del 1 al 22 de marzo del '10" do
237
236
  before do
238
- @result = @parser.parse "lunes y martes del 1 al 22 de marzo del '10"
237
+ @result = Eventual.parse "lunes y martes del 1 al 22 de marzo del '10"
239
238
  @dates = (Date.parse('2010-3-1')..Date.parse('2010-3-22')).reject{ |day| not [1,2].include?(day.wday) }
240
239
  end
241
240
  it_should_behave_like 'correctly parses'
@@ -243,7 +242,7 @@ describe Eventual, 'Es' do
243
242
 
244
243
  describe "wdays for 'fines de semana del 1 al 22 de marzo del '10" do
245
244
  before do
246
- @result = @parser.parse "fines de semana del 1 al 22 de marzo del '10"
245
+ @result = Eventual.parse "fines de semana del 1 al 22 de marzo del '10"
247
246
  @dates = (Date.parse('2010-3-1')..Date.parse('2010-3-22')).map.reject{ |day| not [6,0].include?(day.wday) }
248
247
  end
249
248
  it_should_behave_like 'correctly parses'
@@ -251,7 +250,7 @@ describe Eventual, 'Es' do
251
250
 
252
251
  describe "wdays for 'entre semana del 1 al 22 de marzo del '10" do
253
252
  before do
254
- @result = @parser.parse("entre semana del 1 al 22 de marzo del '10")
253
+ @result = Eventual.parse("entre semana del 1 al 22 de marzo del '10")
255
254
  @dates = (Date.parse('2010-3-1')..Date.parse('2010-3-22')).map.reject{ |day| not (1..5).map.include?(day.wday) }
256
255
  end
257
256
  it_should_behave_like 'correctly parses'
@@ -263,22 +262,22 @@ describe Eventual, 'Es' do
263
262
  end
264
263
 
265
264
  describe "wdays for 'lunes y martes del 1 al 22 de marzo del '10" do
266
- before { @result = @parser.parse("lunes y martes del 1 al 22 de marzo del '10") }
265
+ before { @result = Eventual.parse("lunes y martes del 1 al 22 de marzo del '10") }
267
266
  it_should_behave_like 'correctly parses'
268
267
  end
269
268
 
270
269
  describe "wdays for 'todos los lunes y martes del 1 al 22 de marzo del '10" do
271
- before { @result = @parser.parse("todos los lunes y martes del 1 al 22 de marzo del '10") }
270
+ before { @result = Eventual.parse("todos los lunes y martes del 1 al 22 de marzo del '10") }
272
271
  it_should_behave_like 'correctly parses'
273
272
  end
274
273
 
275
274
  describe "wdays for 'los lunes y martes del 1 al 22 de marzo del '10" do
276
- before { @result = @parser.parse("los lunes y martes del 1 al 22 de marzo del '10") }
275
+ before { @result = Eventual.parse("los lunes y martes del 1 al 22 de marzo del '10") }
277
276
  it_should_behave_like 'correctly parses'
278
277
  end
279
278
 
280
279
  describe "wdays for 'los lunes y los martes del 1 al 22 de marzo del '10" do
281
- before { @result = @parser.parse("los lunes y los martes del 1 al 22 de marzo del '10") }
280
+ before { @result = Eventual.parse("los lunes y los martes del 1 al 22 de marzo del '10") }
282
281
  it_should_behave_like 'correctly parses'
283
282
  end
284
283
  end
@@ -288,7 +287,7 @@ describe Eventual, 'Es' do
288
287
  describe 'month range' do
289
288
  describe 'octubre a diciembre del 2008' do
290
289
  before do
291
- @result = @parser.parse('octubre a diciembre del 2008')
290
+ @result = Eventual.parse('octubre a diciembre del 2008')
292
291
  @dates = (Date.parse('2008-10-1')..DateTime.parse('2008-12-31')).map
293
292
  end
294
293
  it_should_behave_like 'correctly parses'
@@ -297,7 +296,7 @@ describe Eventual, 'Es' do
297
296
 
298
297
  describe 'lunes y martes de octubre del 2007 a diciembre del 2008' do
299
298
  before do
300
- @result = @parser.parse('lunes y martes de octubre del 2007 a diciembre del 2008')
299
+ @result = Eventual.parse('lunes y martes de octubre del 2007 a diciembre del 2008')
301
300
  @dates = (Date.parse('2007-10-1')..DateTime.parse('2008-12-31')).reject{ |day| not [1,2].include?(day.wday) }
302
301
  end
303
302
  it_should_behave_like 'correctly parses'
@@ -306,7 +305,7 @@ describe Eventual, 'Es' do
306
305
 
307
306
  describe 'compound dates giving year at the end' do
308
307
  before do
309
- @result = @parser.parse "1 de enero y lunes y martes del 1 de octubre al 2 de diciembre del 2008"
308
+ @result = Eventual.parse "1 de enero y lunes y martes del 1 de octubre al 2 de diciembre del 2008"
310
309
  @dates = [Date.parse('2008-1-1')] + (Date.parse('2008-10-1')..Date.parse('2008-12-2')).reject{ |day| not [1,2].include?(day.wday) }
311
310
  end
312
311
  it_should_behave_like 'correctly parses'
@@ -314,7 +313,7 @@ describe Eventual, 'Es' do
314
313
 
315
314
  describe 'compound dates in different lines' do
316
315
  before do
317
- @result = @parser.parse "1 de enero\nlunes y martes del 1 de octubre al 2 de diciembre del 2008"
316
+ @result = Eventual.parse "1 de enero\nlunes y martes del 1 de octubre al 2 de diciembre del 2008"
318
317
  @dates = [Date.parse('2008-1-1')] + (Date.parse('2008-10-1')..Date.parse('2008-12-2')).reject{ |day| not [1,2].include?(day.wday) }
319
318
  end
320
319
  it_should_behave_like 'correctly parses'
@@ -329,7 +328,7 @@ describe Eventual, 'Es' do
329
328
 
330
329
  describe 'single day with time' do
331
330
  before do
332
- @result = @parser.parse('1 de enero del 2010 a las 15:00')
331
+ @result = Eventual.parse('1 de enero del 2010 a las 15:00')
333
332
  @dates = [DateTime.civil 2010, 1, 1, 15]
334
333
  end
335
334
  it_should_behave_like 'correctly parses'
@@ -338,7 +337,7 @@ describe Eventual, 'Es' do
338
337
 
339
338
  describe 'single time with no sugar for month range' do
340
339
  before do
341
- @result = @parser.parse('lunes y martes de diciembre del 2010 a las 15:00')
340
+ @result = Eventual.parse('lunes y martes de diciembre del 2010 a las 15:00')
342
341
  @dates = (DateTime.parse('2010-12-1T15:00')..DateTime.parse('2010-12-31T15:00')).reject{ |day| not [1,2].include?(day.wday) }
343
342
  end
344
343
  it_should_behave_like 'correctly parses'
@@ -347,7 +346,7 @@ describe Eventual, 'Es' do
347
346
 
348
347
  describe 'single time with sugar 1 for month range' do
349
348
  before do
350
- @result = @parser.parse('lunes y martes de diciembre a las 15:00 hrs.')
349
+ @result = Eventual.parse('lunes y martes de diciembre a las 15:00 hrs.')
351
350
  @dates = (DateTime.parse('2010-12-1T15:00')..DateTime.parse('2010-12-31T15:00')).reject{ |day| not [1,2].include?(day.wday) }
352
351
  end
353
352
  it_should_behave_like 'correctly parses'
@@ -356,7 +355,7 @@ describe Eventual, 'Es' do
356
355
 
357
356
  describe 'single time with sugar 2 for month range' do
358
357
  before do
359
- @result = @parser.parse('lunes y martes de diciembre a las 15:00hrs')
358
+ @result = Eventual.parse('lunes y martes de diciembre a las 15:00hrs')
360
359
  @dates = (DateTime.parse('2010-12-1T15:00')..DateTime.parse('2010-12-31T15:00')).reject{ |day| not [1,2].include?(day.wday) }
361
360
  end
362
361
  it_should_behave_like 'correctly parses'
@@ -365,7 +364,7 @@ describe Eventual, 'Es' do
365
364
 
366
365
  describe 'single time with sugar 3 for month range' do
367
366
  before do
368
- @result = @parser.parse('lunes y martes de diciembre a las 15 horas')
367
+ @result = Eventual.parse('lunes y martes de diciembre a las 15 horas')
369
368
  @dates = (DateTime.parse('2010-12-1T15:00')..DateTime.parse('2010-12-31T15:00')).reject{ |day| not [1,2].include?(day.wday) }
370
369
  end
371
370
  it_should_behave_like 'correctly parses'
@@ -374,7 +373,7 @@ describe Eventual, 'Es' do
374
373
 
375
374
  describe 'two times for month range' do
376
375
  before do
377
- @result = @parser.parse('lunes y martes de diciembre a las 16:00 y 15:00 horas')
376
+ @result = Eventual.parse('lunes y martes de diciembre a las 16:00 y 15:00 horas')
378
377
  @dates = ((DateTime.parse('2010-12-1T15:00')..DateTime.parse('2010-12-31T15:00')).map + (DateTime.parse('2010-12-1T16:00')..DateTime.parse('2010-12-31T16:00')).map).reject{ |day| not [1,2].include?(day.wday) }
379
378
  end
380
379
  it_should_behave_like 'correctly parses'
@@ -387,7 +386,7 @@ describe Eventual, 'Es' do
387
386
 
388
387
  describe 'range with time as 12 hours am' do
389
388
  before do
390
- @result = @parser.parse('lunes y martes de diciembre a las 3 am')
389
+ @result = Eventual.parse('lunes y martes de diciembre a las 3 am')
391
390
  @dates = ((DateTime.parse('2010-12-1T03:00')..DateTime.parse('2010-12-31T03:00')).map).reject{ |day| not [1,2].include?(day.wday) }
392
391
  end
393
392
  it_should_behave_like 'correctly parses'
@@ -400,7 +399,7 @@ describe Eventual, 'Es' do
400
399
 
401
400
  describe 'range with time as 12 hours pm' do
402
401
  before do
403
- @result = @parser.parse('lunes y martes de diciembre a las 3:00 pm')
402
+ @result = Eventual.parse('lunes y martes de diciembre a las 3:00 pm')
404
403
  @dates = ((DateTime.parse('2010-12-1T15:00')..DateTime.parse('2010-12-31T15:00')).map).reject{ |day| not [1,2].include?(day.wday) }
405
404
  end
406
405
  it_should_behave_like 'correctly parses'
@@ -415,7 +414,7 @@ describe Eventual, 'Es' do
415
414
  describe 'Marshal dump' do
416
415
  describe "month without year parsing 'marzo'" do
417
416
  before do
418
- @result = Marshal.load Marshal.dump(@parser.parse('marzo')).gsub('NaturalDates::', 'NaturalDates::Eventual::Es::')
417
+ @result = Marshal.load Marshal.dump(Eventual.parse('marzo')).gsub('NaturalDates::', 'NaturalDates::Eventual::Es::')
419
418
  @dates = (Date.parse('2010-3-1')..Date.parse('2010-3-31')).map
420
419
  end
421
420
  it_should_behave_like 'correctly parses'
@@ -425,8 +424,7 @@ describe Eventual, 'Es' do
425
424
  describe 'Default year' do
426
425
  describe "month without year parsing 'marzo'" do
427
426
  before do
428
- @result = @parser.parse('marzo')
429
- @result.year = 2007
427
+ @result = Eventual.parse('marzo', :default_year => 2007)
430
428
  @dates = (Date.parse('2007-3-1')..Date.parse('2007-3-31')).map
431
429
  end
432
430
  it_should_behave_like 'correctly parses'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 1
9
- version: 0.5.1
8
+ - 2
9
+ version: 0.5.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Macario Ortega
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-15 00:00:00 -05:00
17
+ date: 2010-07-20 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency