Sha256: b18fb62d0fbbabd54b56e7c821c3584d118b6808a84b014741713527f05dc8f7

Contents?: true

Size: 1.54 KB

Versions: 11

Compression:

Stored size: 1.54 KB

Contents

module Internals

  # encoding: utf-8
  #
  module Indexed
  
    # TODO Spec
    #
    module Wrappers
    
      # This index combines an exact and partial index.
      # It serves to order the results such that exact hits are found first.
      #
      # TODO Need to use the right subtokens. Bake in?
      #
      class ExactFirst < Indexed::Bundle::Memory
      
        delegate :similar,
                 :identifier,
                 :name,
                 :to => :@exact
        delegate :index,
                 :category,
                 :weight,
                 :generate_partial_from,
                 :generate_caches_from_memory,
                 :generate_derived,
                 :dump,
                 :load,
                 :to => :@partial
      
        def initialize category
          @exact   = category.exact
          @partial = category.partial
        end
      
        def self.wrap index_or_category
          if index_or_category.respond_to? :categories
            wrap_each_of index_or_category.categories
            index_or_category
          else
            new index_or_category
          end
        end
        # TODO Do not extract categories!
        #
        def self.wrap_each_of categories
          categories.categories.collect! { |category| new(category) }
        end
      
        def ids text
          @exact.ids(text) + @partial.ids(text)
        end
      
        def weight text
          [@exact.weight(text) || 0, @partial.weight(text) || 0].max
        end
      
      end
    
    end
  
  end
  
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
picky-2.0.0 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-2.0.0.pre3 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-2.0.0.pre2 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-2.0.0.pre1 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.5.4 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.5.3 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.5.2 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.5.1 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.5.0 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.4.3 lib/picky/internals/indexed/wrappers/exact_first.rb
picky-1.4.2 lib/picky/internals/indexed/wrappers/exact_first.rb