class SetBuilder::Modifier::Base

Attributes

operator[R]
values[R]

Public Class Methods

negate(operator) click to toggle source
# File lib/set_builder/modifier/base.rb, line 81
def self.negate(operator)
  operator
end
new(hash) click to toggle source
# File lib/set_builder/modifier/base.rb, line 7
def initialize(hash)
  @operator, @values = (hash.is_a?(Hash) ? [hash.first[0].to_sym, hash.first[1]] : [nil, nil])
  @values ||= []
  @values = [@values] unless @values.is_a?(Array)
end
to_hash() click to toggle source
# File lib/set_builder/modifier/base.rb, line 87
def self.to_hash
  hash = {}
  operators.each do |operator, array|
    hash[operator.to_s] = array.map {|type| type.to_s }
  end
  hash
end
to_json() click to toggle source
# File lib/set_builder/modifier/base.rb, line 97
def self.to_json
  to_hash.to_json
end

Public Instance Methods

to_s(negative=false) click to toggle source
# File lib/set_builder/modifier/base.rb, line 69
def to_s(negative=false)
  words = negative ? [self.class.negate(operator).to_s.gsub(/_/, " ")] : [operator.to_s.gsub(/_/, " ")]
  arguments = self.class.operators[operator] || []
  (0...arguments.length).each do |i|
    # p "ValueMap.to_s(#{arguments[i]} (#{arguments[i].class}), #{values[i]} (#{values[i].class})): #{ValueMap.to_s(arguments[i], values[i])}"
    words << ValueMap.to_s(arguments[i], values[i])
  end
  words.join(" ")
end
valid?() click to toggle source
# File lib/set_builder/modifier/base.rb, line 19
def valid?
  valid_operator?(self.operator) && valid_arguments?(self.values)
end
valid_argument_of_type?(argument, type) click to toggle source
# File lib/set_builder/modifier/base.rb, line 42
def valid_argument_of_type?(argument, type)
  validator = "valid_#{type}_argument?"
  if respond_to?(validator)
    send(validator, argument)
  else
    true
  end
end
valid_arguments?(values) click to toggle source
# File lib/set_builder/modifier/base.rb, line 31
def valid_arguments?(values)
  argument_types = self.class.operators[operator] || []
  return false unless (values.length == argument_types.length)
  values.each_with_index do |value, i|
    return false unless valid_argument_of_type?(value, argument_types[i])
  end
  true
end
valid_date_argument?(string) click to toggle source
# File lib/set_builder/modifier/base.rb, line 53
def valid_date_argument?(string)
  begin
    Date.parse(string)
    true
  rescue
    false
  end
end
valid_number_argument?(number) click to toggle source
# File lib/set_builder/modifier/base.rb, line 63
def valid_number_argument?(number)
  !(number.to_s =~ /\A\d+\Z/).nil?
end
valid_operator?(operator) click to toggle source
# File lib/set_builder/modifier/base.rb, line 25
def valid_operator?(operator)
  !operator.nil? && self.class.operators.key?(operator)
end