class SearchCopGrammar::Attributes::Date
Public Instance Methods
parse(value)
click to toggle source
# File lib/search_cop_grammar/attributes.rb, line 266 def parse(value) return value..value unless value.is_a?(::String) if value =~ /^[0-9]+ (day|week|month|year)s{0,1} (ago)$/ number, period, ago = value.split(" ") time = number.to_i.send(period.to_sym).send(ago.to_sym) time.to_date..::Date.today elsif value =~ /^[0-9]{4}$/ ::Date.new(value.to_i).beginning_of_year..::Date.new(value.to_i).end_of_year elsif value =~ %r{^([0-9]{4})(\.|-|/)([0-9]{1,2})$} ::Date.new(Regexp.last_match(1).to_i, Regexp.last_match(3).to_i, 15).beginning_of_month..::Date.new(Regexp.last_match(1).to_i, Regexp.last_match(3).to_i, 15).end_of_month elsif value =~ %r{^([0-9]{1,2})(\.|-|/)([0-9]{4})$} ::Date.new(Regexp.last_match(3).to_i, Regexp.last_match(1).to_i, 15).beginning_of_month..::Date.new(Regexp.last_match(3).to_i, Regexp.last_match(1).to_i, 15).end_of_month elsif value =~ %r{[0-9]{4}(\.|-|/)[0-9]{1,2}(\.|-|/)[0-9]{1,2}} || value =~ %r{[0-9]{1,2}(\.|-|/)[0-9]{1,2}(\.|-|/)[0-9]{4}} date = ::Date.parse(value) date..date else raise ArgumentError end rescue ArgumentError raise SearchCop::IncompatibleDatatype, "Incompatible datatype for #{value}" end