Sha256: 952a1d72a7ec82cb46d6d38f28fb19ccd75333700d48ae4d6e19a5dfb503bf56

Contents?: true

Size: 1.11 KB

Versions: 49

Compression:

Stored size: 1.11 KB

Contents

module Sunspot
  module DSL
    # 
    # Mixin DSL to accept functions.
    #
    module Functional

      #
      # Specify a function query with a block that returns an expression.
      #
      # === Examples
      #
      #   function { 10 }
      #   function { :average_rating }
      #   function { sum(:average_rating, 10) }
      #
      # See http://wiki.apache.org/solr/FunctionQuery for a list of all
      # applicable functions
      #
      def function(&block)
        expression = Sunspot::Util.instance_eval_or_call(
          Function.new(self),
          &block
        )
        create_function_query(expression)
      end

      #
      # Creates an AbstractFunctionQuery from an expression, also called by
      # Sunspot::DSL::Function
      #
      def create_function_query(expression) #:nodoc:
        if expression.is_a?(Sunspot::Query::FunctionQuery)
          expression
        elsif expression.is_a?(Symbol)
          Sunspot::Query::FieldFunctionQuery.new(@setup.field(expression))
        else
          Sunspot::Query::ConstantFunctionQuery.new(expression)
        end
      end
    end
  end
end

Version data entries

49 entries across 49 versions & 10 rubygems

Version Path
sunspot-2.7.1 lib/sunspot/dsl/functional.rb
sunspot-2.7.0 lib/sunspot/dsl/functional.rb
sunspot-2.6.0 lib/sunspot/dsl/functional.rb
sunspot-2.5.0 lib/sunspot/dsl/functional.rb
sunspot-2.4.0 lib/sunspot/dsl/functional.rb
sunspot-2.3.0 lib/sunspot/dsl/functional.rb
sunspot-2.2.8 lib/sunspot/dsl/functional.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/sunspot-2.2.7/lib/sunspot/dsl/functional.rb
sunspot-2.2.7 lib/sunspot/dsl/functional.rb
sunspot-2.2.6 lib/sunspot/dsl/functional.rb
sunspot-2.2.5 lib/sunspot/dsl/functional.rb
sunspot-2.2.4 lib/sunspot/dsl/functional.rb
sunspot-2.2.3 lib/sunspot/dsl/functional.rb
sunspot-2.2.2 lib/sunspot/dsl/functional.rb
sunspot-2.2.1 lib/sunspot/dsl/functional.rb
sunspot-2.2.0 lib/sunspot/dsl/functional.rb
sunspot-2.1.1 lib/sunspot/dsl/functional.rb
sunspot-2.1.0 lib/sunspot/dsl/functional.rb
sunspot-2.0.0 lib/sunspot/dsl/functional.rb
sunspot-2.0.0.pre.130115 lib/sunspot/dsl/functional.rb