Sha256: 90c355522b08a2d79bfca6c51203107e7fa0de896fc2b0bb39b7851dac574184

Contents?: true

Size: 1.47 KB

Versions: 6

Compression:

Stored size: 1.47 KB

Contents

# encoding: UTF-8
module MarkMapper
  module Extensions
    module SymbolClassMethods
      def to_marklogic(value)
        value && value.to_s.to_sym
      end

      def from_marklogic(value)
        value && value.to_s.to_sym
      end
    end

    module SymbolnstanceMethods
      def gt
        SymbolOperator.new(self, 'gt')
      end

      def lt
        SymbolOperator.new(self, 'lt')
      end

      def ge
        SymbolOperator.new(self, 'ge')
      end

      def le
        SymbolOperator.new(self, 'le')
      end

      def eq
        SymbolOperator.new(self, 'eq')
      end

      def ne
        SymbolOperator.new(self, 'ne')
      end

      def asc
        SymbolOperator.new(self, 'asc')
      end

      def desc
        SymbolOperator.new(self, 'desc')
      end
    end
  end
end

class SymbolOperator
  include Comparable

  attr_reader :field, :operator

  def initialize(field, operator)
    @field, @operator = field, operator
  end unless method_defined?(:initialize)

  def <=>(other)
    if field == other.field
      operator <=> other.operator
    else
      field.to_s <=> other.field.to_s
    end
  end

  def hash
    field.hash + operator.hash
  end

  def eql?(other)
    self == other
  end

  def ==(other)
    other.class == self.class && field == other.field && operator == other.operator
  end

  # def to_sym
  #   field
  # end
end

class Symbol
  extend MarkMapper::Extensions::SymbolClassMethods
  include MarkMapper::Extensions::SymbolnstanceMethods
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mark_mapper-0.0.6 lib/mark_mapper/extensions/symbol.rb
mark_mapper-0.0.5 lib/mark_mapper/extensions/symbol.rb
mark_mapper-0.0.4 lib/mark_mapper/extensions/symbol.rb
mark_mapper-0.0.3 lib/mark_mapper/extensions/symbol.rb
mark_mapper-0.0.2 lib/mark_mapper/extensions/symbol.rb
mark_mapper-0.0.1 lib/mark_mapper/extensions/symbol.rb