Sha256: daf1aad4898b3bdad5db4421ca0e78570590012eaee8652d9f0ee8b3479d1643

Contents?: true

Size: 1.23 KB

Versions: 10

Compression:

Stored size: 1.23 KB

Contents

module MarkLogic
  module Queries
    class ValueQuery< BaseQuery
      def initialize(name, value, options = {})
        @name = name.to_s
        @value = value
        @value = value.to_s if value.is_a?(ObjectId)
        @options = options || {}
        @weight = @options.delete(:weight) || 1.0
        @options[:exact] = true if @options.length == 0
      end

      def options=(opts)
        @options = opts
      end

      def options
        opts = []
        @options.each do |k, v|
          dashed_key = k.to_s.gsub(/_/, '-')
          case k.to_s
          when "lang", "min_occurs", "max_occurs"
            opts << %Q{"#{dashed_key}=#{v}"}
          when /(case|diacritic|punctuation|whitespace)_sensitive/
            opts << (v == true ? %Q{"#{$1}-sensitive"} : %Q{"#{$1}-insensitive"})
          when "exact"
            opts << %Q{"#{dashed_key}"}
          when "stemmed", "wildcarded"
            opts << (v == true ? %Q{"#{dashed_key}"} : %Q{"un#{dashed_key}"})
          else
            opts << %Q{"#{v}"}
          end
        end

        opts
      end

      def to_xqy
        value = query_value(@value)
        %Q{cts:json-property-value-query("#{@name}",(#{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/value_query.rb
marklogic-0.0.10 lib/marklogic/queries/value_query.rb
marklogic-0.0.9 lib/marklogic/queries/value_query.rb
marklogic-0.0.8 lib/marklogic/queries/value_query.rb
marklogic-0.0.7 lib/marklogic/queries/value_query.rb
marklogic-0.0.6 lib/marklogic/queries/value_query.rb
marklogic-0.0.5 lib/marklogic/queries/value_query.rb
marklogic-0.0.4 lib/marklogic/queries/value_query.rb
marklogic-0.0.3 lib/marklogic/queries/value_query.rb
marklogic-0.0.1 lib/marklogic/queries/value_query.rb