Sha256: 9f31a8e071cc934370f62877d8f36723e6d5b2bd0b781650d2facc7e114d6dba

Contents?: true

Size: 1.48 KB

Versions: 10

Compression:

Stored size: 1.48 KB

Contents

module MarkLogic
  module Queries
    class RangeQuery < BaseQuery

      attr_accessor :name, :range_type

      def initialize(name, operator, range_type, value, options = {})
        @name = name.to_s
        @operator = operator.to_s.upcase
        @range_type = range_type
        @value = value
        @options = options || {}
        @weight = @options.delete(:weight) || 1.0
      end

      def operator=(op)
        @operator = op
      end

      def operator
        case @operator
          when "LT"
            "<"
          when "LE"
            "<="
          when "GT"
            ">"
          when "GE"
            ">="
          when "EQ"
            "="
          when "NE"
            "!="
          else
            @operator
        end
      end

      def options=(opts)
        @options = opts
      end

      def options
        opts = []
        @options.each do |k, v|
          case k.to_s
          when "collation", "min_occurs", "max_occurs", "score_function", "slope_factor"
            opts << %Q{"#{k.to_s.gsub(/_/, '-')}=#{v}"}
          when "cached"
            opts << (v == true ? %Q{"cached"} : %Q{"uncached"})
          when "synonym"
            opts << %Q{"#{k}"}
          else
            opts << %Q{"#{v}"}
          end
        end

        opts
      end

      def to_xqy
        value = query_value(@value, @range_type)
        %Q{cts:json-property-range-query("#{@name}","#{operator}",(#{value}),(#{options.join(',')}),#{@weight})}
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
marklogic-0.0.11 lib/marklogic/queries/range_query.rb
marklogic-0.0.10 lib/marklogic/queries/range_query.rb
marklogic-0.0.9 lib/marklogic/queries/range_query.rb
marklogic-0.0.8 lib/marklogic/queries/range_query.rb
marklogic-0.0.7 lib/marklogic/queries/range_query.rb
marklogic-0.0.6 lib/marklogic/queries/range_query.rb
marklogic-0.0.5 lib/marklogic/queries/range_query.rb
marklogic-0.0.4 lib/marklogic/queries/range_query.rb
marklogic-0.0.3 lib/marklogic/queries/range_query.rb
marklogic-0.0.1 lib/marklogic/queries/range_query.rb