class SetBuilder::Modifiers::DateModifier
Public Class Methods
operators()
click to toggle source
# File lib/set_builder/modifiers/date_modifier.rb, line 10 def self.operators { :ever => [], :before => [:date], :after => [:date], :on => [:date], :during_month => [:month], :during_year => [:year], :in_the_last => [:number, :period], :between => [:date, :date] } end
Public Instance Methods
build_conditions_for(selector)
click to toggle source
# File lib/set_builder/modifiers/date_modifier.rb, line 25 def build_conditions_for(selector) case operator when :ever "#{selector} IS NOT NULL" when :before "#{selector}<'#{format_value(get_date)}'" when :after "#{selector}>'#{format_value(get_date)}'" when :on "#{selector}='#{format_value(get_date)}'" when :during_month "extract(month from #{selector})=#{values[0].to_i}" when :during_year year = values[0].to_i return "TRUE" if year <= 0 "#{selector} BETWEEN '#{year}-01-01' AND '#{year}-12-31'" when :in_the_last "#{selector}>='#{format_value(get_date)}'" when :between "#{selector} BETWEEN '#{format_value(Date.parse values[0])}' AND '#{format_value(Date.parse values[1])}'" end end
Protected Instance Methods
format_value(date)
click to toggle source
# File lib/set_builder/modifiers/date_modifier.rb, line 74 def format_value(date) date = [Date.new(1,1,1), date].max # constrain dates to A.D. date.strftime('%Y-%m-%d') end
get_date()
click to toggle source
# File lib/set_builder/modifiers/date_modifier.rb, line 54 def get_date case operator when :in_the_last case values[1] when "years", "year" values[0].to_i.years.ago when "months", "month" values[0].to_i.months.ago when "weeks", "week" values[0].to_i.weeks.ago when "days", "day" values[0].to_i.days.ago end else Date.parse values[0] end end