Sha256: e7cd98cb8fbb5eca8f5ef84579f6cead3bf72f8c080ced323a6f4102a388a906

Contents?: true

Size: 1.61 KB

Versions: 2

Compression:

Stored size: 1.61 KB

Contents

module DataMapper
  module Support
    module Symbol
      
      class Operator
      
        attr_reader :value, :type, :options
      
        def initialize(value, type, options = nil)
          @value, @type, @options = value, type, options
        end
    
        def to_sym
          @value
        end
      end
    
      def gt
        Operator.new(self, :gt)
      end
  
      def gte
        Operator.new(self, :gte)
      end
  
      def lt
        Operator.new(self, :lt)
      end
  
      def lte
        Operator.new(self, :lte)
      end
  
      def not
        Operator.new(self, :not)
      end
  
      def eql
        Operator.new(self, :eql)
      end
  
      def like
        Operator.new(self, :like)
      end
  
      def in
        Operator.new(self, :in)
      end
  
      def select(klass = nil)    
        Operator.new(self, :select, { :class => klass })
      end
  
      def to_s
        @string_form || (@string_form = id2name.freeze)
      end
  
      def to_proc
       lambda { |value| value.send(self) }
      end
      
      def as_instance_variable_name
        @instance_variable_name_form || (@instance_variable_name_form = "@#{id2name}".freeze)
      end
  
      # Calculations:
  
      def count
        Operator.new(self, :count)
      end
  
      def max
        Operator.new(self, :max)
      end
  
      def avg
        Operator.new(self, :avg)
      end
      alias average avg
  
      def min
        Operator.new(self, :min)
      end
      
    end # module Symbol
  end # module Support
end # module DataMapper

class Symbol #:nodoc:
  include DataMapper::Support::Symbol
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
datamapper-0.1.0 lib/data_mapper/support/symbol.rb
datamapper-0.1.1 lib/data_mapper/support/symbol.rb