lib/chronic/handlers.rb in chronic-0.1.0 vs lib/chronic/handlers.rb in chronic-0.1.1
- old
+ new
@@ -272,19 +272,19 @@
grabber = Grabber.new(:this)
pointer = :future
repeaters = self.get_repeaters(tokens)
repeaters.size.times { tokens.pop }
-
- if tokens.last && tokens.last.get_tag(Grabber)
- grabber = tokens.last.get_tag(Grabber)
+
+ if tokens.first && tokens.first.get_tag(Grabber)
+ grabber = tokens.first.get_tag(Grabber)
tokens.pop
end
head = repeaters.shift
head.start = @now
-
+
case grabber.type
when :last: outer_span = head.next(:past)
when :this: outer_span = head.this(options[:context])
when :next: outer_span = head.next(:future)
else raise(ChronicPain, "Invalid grabber")
@@ -293,15 +293,13 @@
anchor = find_within(repeaters, outer_span, pointer)
end
def get_repeaters(tokens) #:nodoc:
repeaters = []
- tokens.reverse.each do |token|
+ tokens.each do |token|
if t = token.get_tag(Repeater)
repeaters << t
- else
- break
end
end
repeaters.sort.reverse
end
@@ -311,11 +309,11 @@
def find_within(tags, span, pointer) #:nodoc:
return span if tags.empty?
head, *rest = tags
head.start = pointer == :future ? span.begin : span.end
- h = head.next(pointer)
-
+ h = head.this(pointer)
+
if span.include?(h.begin) || span.include?(h.end)
return find_within(rest, h, pointer)
else
return nil
end
\ No newline at end of file