Sha256: b78cef4fe4bf1c763dcf2417e65da7dc11e4d4755995892e1680276ab779a14d

Contents?: true

Size: 1.19 KB

Versions: 17

Compression:

Stored size: 1.19 KB

Contents

module Sunspot
  # 
  # DataExtractors present an internal API for the indexer to use to extract
  # field values from models for indexing. They must implement the #value_for
  # method, which takes an object and returns the value extracted from it.
  #
  module DataExtractor #:nodoc: all
    # 
    # AttributeExtractors extract data by simply calling a method on the block.
    #
    class AttributeExtractor
      def initialize(attribute_name)
        @attribute_name = attribute_name
      end

      def value_for(object)
        object.send(@attribute_name)
      end
    end

    # 
    # BlockExtractors extract data by evaluating a block in the context of the
    # object instance, or if the block takes an argument, by passing the object
    # as the argument to the block. Either way, the return value of the block is
    # the value returned by the extractor.
    #
    class BlockExtractor
      def initialize(&block)
        @block = block
      end

      def value_for(object)
        Util.instance_eval_or_call(object, &@block)
      end
    end

    class Constant
      def initialize(value)
        @value = value
      end

      def value_for(object)
        @value
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 6 rubygems

Version Path
Chrononaut-sunspot-client-0.9.4 lib/sunspot/data_extractor.rb
UnderpantsGnome-sunspot-0.9.1.1 lib/sunspot/data_extractor.rb
UnderpantsGnome-sunspot-0.9.8.1 lib/sunspot/data_extractor.rb
kristopher-sunspot-0.9.8 lib/sunspot/data_extractor.rb
kuahyeow-sunspot-0.9.7 lib/sunspot/data_extractor.rb
kuahyeow-sunspot-0.9.8 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.0 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.1 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.2 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.3 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.4 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.5 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.6 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.7 lib/sunspot/data_extractor.rb
outoftime-sunspot-0.9.8 lib/sunspot/data_extractor.rb
sunspot-0.9.8 lib/sunspot/data_extractor.rb
sunspot-0.9.7 lib/sunspot/data_extractor.rb