Sha256: 2404da59593229f4a0811fd7aa2763e9b744be743b39fb3f1507ff4ad092c5e2

Contents?: true

Size: 1.68 KB

Versions: 38

Compression:

Stored size: 1.68 KB

Contents

module Picky

  class Categories

    each_forward :load,
                 :analyze,
                 :to => :categories

    # Gets all similar tokens and puts together the possible combinations
    # for each found similar token.
    #
    def similar_possible_for token
      tokens = similar_tokens_for token
      inject_possible_for tokens
    end

    # Returns all possible similar tokens for the given token.
    #
    def similar_tokens_for token
      categories.inject([]) do |result, category|
        result + token.similar_tokens_for(category)
      end
    end

    #
    #
    def inject_possible_for tokens
      tokens.inject([]) do |result, token|
        possible = possible_categories token
        result + possible_for(token, possible)
      end
    end

    # Returns possible Combinations for the token.
    #
    # Note: The preselected_categories param is an optimization.
    # Note: Returns [] if no categories matched (will produce no result).
    #
    def possible_for token, preselected_categories = nil
      (preselected_categories || possible_categories(token)).inject([]) do |combinations, category|
        combination = token.combination_for category
        combination ? combinations << combination : combinations
      end
    end

    # This returns the possible categories for this token.
    # If the user has already preselected a category for this token,
    # like "artist:moby", if not just return all for the given token,
    # since all are possible.
    #
    # Note: Once I thought this was called too often. But it is not (18.01.2011).
    #
    def possible_categories token
      token.predefined_categories(qualifier_mapper) || categories
    end

  end

end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
picky-4.31.3 lib/picky/categories_indexed.rb
picky-4.31.2 lib/picky/categories_indexed.rb
picky-4.31.1 lib/picky/categories_indexed.rb
picky-4.31.0 lib/picky/categories_indexed.rb
picky-4.30.0 lib/picky/categories_indexed.rb
picky-4.29.0 lib/picky/categories_indexed.rb
picky-4.28.1 lib/picky/categories_indexed.rb
picky-4.27.1 lib/picky/categories_indexed.rb
picky-4.27.0 lib/picky/categories_indexed.rb
picky-4.26.2 lib/picky/categories_indexed.rb
picky-4.26.1 lib/picky/categories_indexed.rb
picky-4.26.0 lib/picky/categories_indexed.rb
picky-4.25.3 lib/picky/categories_indexed.rb
picky-4.25.2 lib/picky/categories_indexed.rb
picky-4.25.1 lib/picky/categories_indexed.rb
picky-4.25.0 lib/picky/categories_indexed.rb
picky-4.24.0 lib/picky/categories_indexed.rb
picky-4.23.2 lib/picky/categories_indexed.rb
picky-4.23.1 lib/picky/categories_indexed.rb
picky-4.23.0 lib/picky/categories_indexed.rb