module RecurringSelect
Constants
- VERSION
Public Class Methods
dirty_hash_to_rule(params)
click to toggle source
# File lib/recurring_select.rb, line 6 def self.dirty_hash_to_rule(params) if params.is_a? IceCube::Rule params else params = JSON.parse(params, quirks_mode: true) if params.is_a?(String) if params.nil? nil else params = params.symbolize_keys rules_hash = filter_params(params) IceCube::Rule.from_hash(rules_hash) end end end
is_valid_rule?(possible_rule)
click to toggle source
# File lib/recurring_select.rb, line 22 def self.is_valid_rule?(possible_rule) return true if possible_rule.is_a?(IceCube::Rule) return false if possible_rule.blank? if possible_rule.is_a?(String) begin return JSON.parse(possible_rule).is_a?(Hash) rescue JSON::ParserError return false end end # TODO: this should really have an extra step where it tries to perform the final parsing return true if possible_rule.is_a?(Hash) false #only a hash or a string of a hash can be valid end
Private Class Methods
filter_params(params)
click to toggle source
# File lib/recurring_select.rb, line 42 def self.filter_params(params) params.reject!{|key, value| value.blank? || value=="null" } params[:interval] = params[:interval].to_i if params[:interval] params[:week_start] = params[:week_start].to_i if params[:week_start] params[:validations] ||= {} params[:validations].symbolize_keys! if params[:validations][:day] params[:validations][:day] = params[:validations][:day].collect(&:to_i) end if params[:validations][:day_of_month] params[:validations][:day_of_month] = params[:validations][:day_of_month].collect(&:to_i) end # this is soooooo ugly if params[:validations][:day_of_week] params[:validations][:day_of_week] ||= {} if params[:validations][:day_of_week].length > 0 and not params[:validations][:day_of_week].keys.first =~ /\d/ params[:validations][:day_of_week].symbolize_keys! else originals = params[:validations][:day_of_week].dup params[:validations][:day_of_week] = {} originals.each{|key, value| params[:validations][:day_of_week][key.to_i] = value } end params[:validations][:day_of_week].each{|key, value| params[:validations][:day_of_week][key] = value.collect(&:to_i) } end if params[:validations][:day_of_year] params[:validations][:day_of_year] = params[:validations][:day_of_year].collect(&:to_i) end params end