class NaturalDateExpression

Constants

MATCHERS
VERSION

Public Class Methods

new(data, reference_date, expression_string) click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 19
def initialize data, reference_date, expression_string
  @data = data
  @reference_date = reference_date
  @expression_string = expression_string
end

Public Instance Methods

=~(date) click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 29
def =~ date
  match(date).matches?
end
data() click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 55
def data
  @data.dup
end
fetch_dates(dates_range = nil) click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 59
def fetch_dates dates_range = nil
  (dates_range || (@reference_date..(@reference_date + 365))).to_a.select { |date| self =~ date }
end
match(date) click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 40
def match date
  matches = @data.map do |expression_map|
    MATCHERS.map { |matcher| matcher.match?(date, @reference_date, expression_map) }.all?
  end

  DateMatch.new(matches.any?,
                (matches.any?? @data[matches.each_with_index.find { |exp, index| exp }.last] : nil),
                @date,
                @reference_date)
end
match?() click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 25
def match?
  match(date).matches?
end
recurrent?() click to toggle source
# File lib/natural-date/natural_date_expression.rb, line 51
def recurrent?
  @data.map { |expression_map| !(expression_map[:day] && expression_map[:month]) }.any?
end