class PoorManSearch::Criteria

Constants

DATE_FORMATS

Attributes

numbers[RW]
stringables[RW]
strings[RW]
time_range[RW]
times[RW]

Public Class Methods

new(irregularity = nil) click to toggle source
# File lib/poor_man_search/criteria.rb, line 7
def initialize irregularity = nil
  parse irregularity
end

Private Instance Methods

number_parse(s) click to toggle source
# File lib/poor_man_search/criteria.rb, line 55
def number_parse s
  return nil unless s =~ /^(|-)\d+(|\.(|\d+))$/
  return BigDecimal.new s
end
parse(irregularity) click to toggle source
# File lib/poor_man_search/criteria.rb, line 13
def parse irregularity
  self.strings = []
  self.stringables = []
  self.numbers = []
  self.times = []
  self.time_range = []

  words = irregularity.to_s.gsub / /, " "
  words.split(" ").each do |word|
    num = number_parse word
    time = time_parse word

    self.strings << word unless num || time
    self.numbers << num if num
    self.times << time if time
  end

  self.time_range = [self.times.min, self.times.max] if self.times.count >= 2
end
parse_format(ss, format) click to toggle source
# File lib/poor_man_search/criteria.rb, line 48
def parse_format(ss, format)
  return nil unless ss=~ format[0]
  return Time.strptime(ss, format[1])
rescue Exception
  return nil
end
time_parse(ss) click to toggle source
# File lib/poor_man_search/criteria.rb, line 38
def time_parse ss
  date   = parse_format(ss, DATE_FORMATS[:date_hour_minute])
  date ||= parse_format(ss, DATE_FORMATS[:date_hour])
  date ||= parse_format(ss, DATE_FORMATS[:date])
  date ||= parse_format(ss, DATE_FORMATS[:time])
  return date
rescue Exception
  return nil
end