chronic 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.
data/lib/chronic.rb CHANGED
@@ -11,17 +11,30 @@ require 'date'
11
11
 
12
12
  require 'chronic/chronic'
13
13
  require 'chronic/handlers'
14
+
15
+ require 'chronic/repeater'
16
+ require 'chronic/repeaters/repeater_year'
17
+ require 'chronic/repeaters/repeater_season'
18
+ require 'chronic/repeaters/repeater_season_name'
19
+ require 'chronic/repeaters/repeater_month'
20
+ require 'chronic/repeaters/repeater_month_name'
21
+ require 'chronic/repeaters/repeater_fortnight'
22
+ require 'chronic/repeaters/repeater_week'
23
+ require 'chronic/repeaters/repeater_weekend'
24
+ require 'chronic/repeaters/repeater_day'
25
+ require 'chronic/repeaters/repeater_day_name'
26
+ require 'chronic/repeaters/repeater_day_portion'
27
+ require 'chronic/repeaters/repeater_hour'
28
+ require 'chronic/repeaters/repeater_minute'
29
+ require 'chronic/repeaters/repeater_second'
30
+ require 'chronic/repeaters/repeater_time'
31
+
14
32
  require 'chronic/grabber'
15
- require 'chronic/ordinal'
16
33
  require 'chronic/pointer'
17
34
  require 'chronic/scalar'
35
+ require 'chronic/ordinal'
18
36
  require 'chronic/separator'
19
37
 
20
- require 'chronic/repeater'
21
- Dir["#{File.dirname(__FILE__)}/chronic/repeaters/*.rb"].each do |file|
22
- require file
23
- end
24
-
25
38
  module Chronic
26
39
  def self.debug=(val); @debug = val; end
27
40
  end
@@ -100,7 +100,7 @@ module Chronic
100
100
  # to numbers (three => 3), and converting ordinal words to numeric
101
101
  # ordinals (third => 3rd)
102
102
  def pre_normalize(text) #:nodoc:
103
- normalized_text = text.downcase
103
+ normalized_text = text.to_s.downcase
104
104
  normalized_text.gsub!(/['"\.]/, '')
105
105
  normalized_text.gsub!(/([\/\-\,\@])/) { ' ' + $1 + ' ' }
106
106
  normalized_text.gsub!(/\btoday\b/, 'this day')
@@ -274,15 +274,15 @@ module Chronic
274
274
 
275
275
  repeaters = self.get_repeaters(tokens)
276
276
  repeaters.size.times { tokens.pop }
277
-
278
- if tokens.last && tokens.last.get_tag(Grabber)
279
- grabber = tokens.last.get_tag(Grabber)
277
+
278
+ if tokens.first && tokens.first.get_tag(Grabber)
279
+ grabber = tokens.first.get_tag(Grabber)
280
280
  tokens.pop
281
281
  end
282
282
 
283
283
  head = repeaters.shift
284
284
  head.start = @now
285
-
285
+
286
286
  case grabber.type
287
287
  when :last: outer_span = head.next(:past)
288
288
  when :this: outer_span = head.this(options[:context])
@@ -295,11 +295,9 @@ module Chronic
295
295
 
296
296
  def get_repeaters(tokens) #:nodoc:
297
297
  repeaters = []
298
- tokens.reverse.each do |token|
298
+ tokens.each do |token|
299
299
  if t = token.get_tag(Repeater)
300
300
  repeaters << t
301
- else
302
- break
303
301
  end
304
302
  end
305
303
  repeaters.sort.reverse
@@ -313,8 +311,8 @@ module Chronic
313
311
 
314
312
  head, *rest = tags
315
313
  head.start = pointer == :future ? span.begin : span.end
316
- h = head.next(pointer)
317
-
314
+ h = head.this(pointer)
315
+
318
316
  if span.include?(h.begin) || span.include?(h.end)
319
317
  return find_within(rest, h, pointer)
320
318
  else
@@ -21,7 +21,7 @@ class Chronic::RepeaterDayName < Chronic::Repeater #:nodoc:
21
21
  def this(pointer = :future)
22
22
  super
23
23
 
24
- self.next(:future)
24
+ self.next(pointer)
25
25
  end
26
26
 
27
27
  def width
data/test/test_parsing.rb CHANGED
@@ -321,6 +321,12 @@ class TestParsing < Test::Unit::TestCase
321
321
  end
322
322
 
323
323
  def test_parse_guess_grrr
324
+ time = Chronic.parse("today at 6:00pm", :now => @time_2006_08_16_14_00_00)
325
+ assert_equal Time.local(2006, 8, 16, 18), time
326
+
327
+ time = Chronic.parse("this day 1800", :now => @time_2006_08_16_14_00_00)
328
+ assert_equal Time.local(2006, 8, 16, 18), time
329
+
324
330
  time = Chronic.parse("yesterday at 4:00pm", :now => @time_2006_08_16_14_00_00)
325
331
  assert_equal Time.local(2006, 8, 15, 16), time
326
332
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: chronic
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2006-09-06 00:00:00 -07:00
6
+ version: 0.1.1
7
+ date: 2006-09-09 00:00:00 -07:00
8
8
  summary: A natural language date parser
9
9
  require_paths:
10
10
  - lib
@@ -26,7 +26,7 @@ platform: ruby
26
26
  signing_key:
27
27
  cert_chain:
28
28
  authors:
29
- - Tom Werner
29
+ - Tom Preston-Werner
30
30
  files:
31
31
  - lib/chronic
32
32
  - lib/chronic.rb