class Stockade::Lexemes::Date

Date lexeme

Public Class Methods

delim() click to toggle source
# File lib/stockade/lexemes/date.rb, line 20
def delim
  %r{[\s\.\-\/]}
end
regex() click to toggle source
# File lib/stockade/lexemes/date.rb, line 8
def regex
  /
  (?<!\d)
   (\d{1,4})
    #{delim}
  (\d{1,4})
    #{delim}
  (\d{1,4})
  (?!\d)
  /x
end

Public Instance Methods

valid?() click to toggle source
# File lib/stockade/lexemes/date.rb, line 25
def valid?
  possible_dates.any? &&
    possible_dates.all? do |date|
      date <= ::Date.today
    end
end

Private Instance Methods

parts() click to toggle source
# File lib/stockade/lexemes/date.rb, line 44
def parts
  self.class.regex.match(value).captures.map(&:to_i)
end
possible_dates() click to toggle source
# File lib/stockade/lexemes/date.rb, line 34
def possible_dates
  parts.permutation.map do |permutation|
    begin
      ::Date.new(*permutation)
    rescue ArgumentError
      nil
    end
  end.compact
end