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