Sha256: a1cd004512dfb3b56abcb82529ea953aacd6976eda27fd06a9d97a0b0e89d40f

Contents?: true

Size: 1.78 KB

Versions: 12

Compression:

Stored size: 1.78 KB

Contents

# encoding: utf-8
#
module Query
  
  # This class primarily handles switching through similar token constellations.
  #
  class Tokens
    
    # Basically delegates to its internal tokens array.
    #
    self.delegate *[Enumerable.instance_methods, :slice!, :[], :uniq!, :last, :reject!, :length, :size, :empty?, :each, :exit, { :to => :@tokens }].flatten
    
    #
    #
    def initialize tokens = []
      @tokens = tokens
    end
    
    #
    #
    def tokenize_with tokenizer
      @tokens.each { |token| token.tokenize_with(tokenizer) }
    end
    
    # Generates an array in the form of
    # [
    #  [combination],                           # of token 1
    #  [combination, combination, combination], # of token 2
    #  [combination, combination]               # of token 3
    # ]
    #
    # TODO If we want token behaviour defined per Query, we can
    #      compact! here
    #
    def possible_combinations_in type
      @tokens.inject([]) do |combinations, token|
        combinations << token.possible_combinations_in(type)
      end
      # TODO compact! if ignore_unassigned_tokens
    end

    # Makes the last of the tokens partial.
    #
    def partialize_last
      @tokens.last.partial = true unless empty?
    end

    # Caps the tokens to the maximum.
    #
    def cap maximum
      @tokens.slice!(maximum..-1) if cap?(maximum)
    end
    def cap? maximum
      @tokens.size > maximum
    end
    
    # Rejects blank tokens.
    #
    def reject
      @tokens.reject! &:blank?
    end
    
    # Returns a solr query.
    #
    def to_solr_query
      @tokens.map(&:to_solr).join ' '
    end
    
    #
    #
    def originals
      @tokens.map(&:original)
    end
    
    # Just join the token original texts.
    #
    def to_s
      originals.join ' '
    end
    
  end
  
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
picky-0.12.3 lib/picky/query/tokens.rb
picky-0.12.2 lib/picky/query/tokens.rb
picky-0.12.1 lib/picky/query/tokens.rb
picky-0.12.0 lib/picky/query/tokens.rb
picky-0.11.2 lib/picky/query/tokens.rb
picky-0.11.1 lib/picky/query/tokens.rb
picky-0.11.0 lib/picky/query/tokens.rb
picky-0.10.5 lib/picky/query/tokens.rb
picky-0.10.4 lib/picky/query/tokens.rb
picky-0.10.2 lib/picky/query/tokens.rb
picky-0.10.1 lib/picky/query/tokens.rb
picky-0.10.0 lib/picky/query/tokens.rb