Sha256: a789ddc2a7ad4f30234dd52e4bbd96653a512351631e7bd81ce6b02265f73e46

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

require 'set_builder/modifier/verb'


module SetBuilder
  module Modifiers
    class NumberModifier < Modifier::Verb
      
      
      
      def self.operators
        {
          :is => [:number],
          :is_less_than => [:number],
          :is_greater_than => [:number],
          :is_between => [:number, :number]
        }
      end
      
      
      
      def build_conditions_for(selector)
        case operator
        when :is
          ["#{selector}=?", format_value]
        when :is_less_than
          ["#{selector}<?", format_value]
        when :is_greater_than
          ["#{selector}>?", format_value]
        when :is_between
          ["#{selector}>=? AND #{selector}<=?", values[0], values[1]]
        end
      end
      
      
      
      def build_arel_for(selector)
        case operator
        when :is
          selector.eq(value)
        when :is_less_than
          selector.lt(value)
        when :is_greater_than
          selector.gt(value)
        when :is_between
          selector.gteq(value).and(selector.lteq(value))
        end
      end
      
      
      
    private
      
      
      
      def value
        values[0]
      end
      
      def format_value
        value
      end
      
      
      
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
set_builder-1.2.0.beta2 lib/set_builder/modifiers/number_modifier.rb