Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tag: v4.12.11
Fetching contributors…

Cannot retrieve contributors at this time

80 lines (66 sloc) 1.942 kb
module Picky
class Categories
attr_reader :categories, :category_hash
forward :each,
:first,
:map,
:map!,
:include?,
:to => :categories
each_forward :cache,
:dump,
:empty,
:inject,
:reindex,
:reset_backend,
:to => :categories
# A list of indexed categories.
#
def initialize options = {}
clear_categories
end
# Clears both the array of categories and the hash of categories.
#
def clear_categories
@categories = []
@category_hash = {}
end
# Updates the qualifier ("qualifier:searchterm") mapping.
#
# Example:
# You dynamically add a new category to an index.
# To add the qualifiers to a search, you call this
# method.
#
def qualifier_mapper
@qualifier_mapper ||= QualifierMapper.new self
end
# Resets the qualifier mapper used.
#
def reset_qualifier_mapper
@qualifier_mapper = nil
end
# Add the given category to the list of categories.
#
def << category
reset_qualifier_mapper # TODO Have an add method on QualifierMapper?
categories << category unless categories.include? category # This is wrong, and needs to be handled in index.rb
category_hash[category.name] = category
end
# Find a given category in the categories.
#
def [] category_name
category_name = category_name.intern
category_hash[category_name] || raise_not_found(category_name)
end
def raise_not_found category_name
raise %Q{Index category "#{category_name}" not found. Possible categories: "#{categories.map(&:name).join('", "')}".}
end
def to_stats
map(&:name).join(', ')
end
def to_s
"#{self.class}(#{categories.join(', ')})"
end
end
end
Jump to Line
Something went wrong with that request. Please try again.