lib/picky/internals/indexed/categories.rb in picky-1.5.2 vs lib/picky/internals/indexed/categories.rb in picky-1.5.3
- old
+ new
@@ -1,16 +1,17 @@
module Internals
module Indexed
-
+
class Categories
-
+
attr_reader :categories, :category_hash, :ignore_unassigned_tokens
-
+
each_delegate :load_from_cache,
+ :analyze,
:to => :categories
-
+
# A list of indexed categories.
#
# Options:
# * ignore_unassigned_tokens: Ignore the given token if it cannot be matched to a category.
# The default behaviour is that if a token does not match to
@@ -24,21 +25,25 @@
# display advertisements on the side for the zipcode.
# Nifty! :)
#
def initialize options = {}
clear
-
+
@ignore_unassigned_tokens = options[:ignore_unassigned_tokens] || false
end
-
+
+ def to_s
+ categories.indented_to_s
+ end
+
# Clears both the array of categories and the hash of categories.
#
def clear
@categories = []
@category_hash = {}
end
-
+
# Add the given category to the list of categories.
#
def << category
categories << category
# Note: [category] is an optimization, since I need an array
@@ -46,11 +51,11 @@
# It's faster to just package it in an array on loading
# Picky than doing it over and over with each query.
#
category_hash[category.name] = [category]
end
-
+
# Return all possible combinations for the given token.
#
# This checks if it needs to also search through similar
# tokens, if for example, the token is one with ~.
# If yes, it puts together all solutions.
@@ -58,11 +63,11 @@
def possible_combinations_for token
token.similar? ? similar_possible_for(token) : possible_for(token)
end
# Gets all similar tokens and puts together the possible combinations
# for each found similar token.
- #
+ #
def similar_possible_for token
# Get as many similar tokens as necessary
#
tokens = similar_tokens_for token
# possible combinations
@@ -88,11 +93,11 @@
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).
@@ -120,16 +125,16 @@
end
# This returns the array of categories if the user has defined
# an existing category.
#
# Note: Returns nil if the user did not define one
- # or if he/she has defined a non-existing one.
+ # or if he/she has defined a non-existing one.
#
def user_defined_categories token
category_hash[token.user_defined_category_name]
end
-
+
end
-
+
end
-
+
end
\ No newline at end of file