lib/chronic/handlers.rb in chronic-0.4.3 vs lib/chronic/handlers.rb in chronic-0.4.4
- old
+ new
@@ -100,11 +100,11 @@
# Handle scalar-day/repeater-month-name/scalar-year
def handle_sd_rmn_sy(tokens, options) #:nodoc:
new_tokens = [tokens[1], tokens[0], tokens[2]]
time_tokens = tokens.last(tokens.size - 3)
- self.handle_rmn_sd_sy(new_tokens + time_tokens, options)
+ handle_rmn_sd_sy(new_tokens + time_tokens, options)
end
# Handle scalar-month/scalar-day/scalar-year (endian middle)
def handle_sm_sd_sy(tokens, options) #:nodoc:
month = tokens[0].get_tag(ScalarMonth).type
@@ -123,18 +123,18 @@
# Handle scalar-day/scalar-month/scalar-year (endian little)
def handle_sd_sm_sy(tokens, options) #:nodoc:
new_tokens = [tokens[1], tokens[0], tokens[2]]
time_tokens = tokens.last(tokens.size - 3)
- self.handle_sm_sd_sy(new_tokens + time_tokens, options)
+ handle_sm_sd_sy(new_tokens + time_tokens, options)
end
# Handle scalar-year/scalar-month/scalar-day
def handle_sy_sm_sd(tokens, options) #:nodoc:
new_tokens = [tokens[1], tokens[2], tokens[0]]
time_tokens = tokens.last(tokens.size - 3)
- self.handle_sm_sd_sy(new_tokens + time_tokens, options)
+ handle_sm_sd_sy(new_tokens + time_tokens, options)
end
# Handle scalar-month/scalar-year
def handle_sm_sy(tokens, options) #:nodoc:
month = tokens[0].get_tag(ScalarMonth).type
@@ -158,17 +158,17 @@
# anchors
# Handle repeaters
def handle_r(tokens, options) #:nodoc:
dd_tokens = dealias_and_disambiguate_times(tokens, options)
- self.get_anchor(dd_tokens, options)
+ get_anchor(dd_tokens, options)
end
# Handle repeater/grabber/repeater
def handle_r_g_r(tokens, options) #:nodoc:
new_tokens = [tokens[1], tokens[0], tokens[2]]
- self.handle_r(new_tokens, options)
+ handle_r(new_tokens, options)
end
# arrows
# Handle scalar/repeater/pointer helper
@@ -183,23 +183,23 @@
# Handle scalar/repeater/pointer
def handle_s_r_p(tokens, options) #:nodoc:
repeater = tokens[1].get_tag(Repeater)
span = Span.new(Chronic.now, Chronic.now + 1)
- self.handle_srp(tokens, span, options)
+ handle_srp(tokens, span, options)
end
# Handle pointer/scalar/repeater
def handle_p_s_r(tokens, options) #:nodoc:
new_tokens = [tokens[1], tokens[2], tokens[0]]
- self.handle_s_r_p(new_tokens, options)
+ handle_s_r_p(new_tokens, options)
end
# Handle scalar/repeater/pointer/anchor
def handle_s_r_p_a(tokens, options) #:nodoc:
anchor_span = get_anchor(tokens[3..tokens.size - 1], options)
- self.handle_srp(tokens, anchor_span, options)
+ handle_srp(tokens, anchor_span, options)
end
# narrows
# Handle oridinal repeaters
@@ -245,11 +245,11 @@
def get_anchor(tokens, options) #:nodoc:
grabber = Grabber.new(:this)
pointer = :future
- repeaters = self.get_repeaters(tokens)
+ repeaters = get_repeaters(tokens)
repeaters.size.times { tokens.pop }
if tokens.first && tokens.first.get_tag(Grabber)
grabber = tokens.first.get_tag(Grabber)
tokens.pop
@@ -356,22 +356,37 @@
tokens
end
end
- class Handler #:nodoc:
- attr_accessor :pattern, :handler_method
+ class Handler
+ # @return [Array] A list of patterns
+ attr_accessor :pattern
+ # @return [Symbol] The method which handles this list of patterns.
+ # This method should exist inside the {Handlers} module
+ attr_accessor :handler_method
+
+ # @param [Array] pattern A list of patterns to match tokens against
+ # @param [Symbol] handler_method The method to be invoked when patterns
+ # are matched. This method should exist inside the {Handlers} module
def initialize(pattern, handler_method)
@pattern = pattern
@handler_method = handler_method
end
+ # @param [#to_s] The snake_case name representing a Chronic constant
+ # @return [Class] The class represented by `name`
+ # @raise [NameError] Raises if this constant could not be found
def constantize(name)
Chronic.const_get name.to_s.gsub(/(^|_)(.)/) { $2.upcase }
end
+ # @param [Array] tokens
+ # @param [Hash] definitions
+ # @return [Boolean]
+ # @see Chronic.tokens_to_span
def match(tokens, definitions)
token_index = 0
@pattern.each do |element|
name = element.to_s
optional = name[-1, 1] == '?'
@@ -395,11 +410,13 @@
end
return false if token_index != tokens.size
return true
end
+ # @param [Handler] The handler to compare
+ # @return [Boolean] True if these handlers match
def ==(other)
- self.pattern == other.pattern
+ @pattern == other.pattern
end
end
end