Class: Picky::QualifierMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/picky/qualifier_mapper.rb

Overview

Collection class for qualifiers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(categories) ⇒ QualifierMapper

Returns a new instance of QualifierMapper.



11
12
13
14
# File 'lib/picky/qualifier_mapper.rb', line 11

def initialize categories
  @mapping = Hash.new
  categories.each { |category| add category }
end

Instance Attribute Details

#mappingObject (readonly)

Returns the value of attribute mapping.



7
8
9
# File 'lib/picky/qualifier_mapper.rb', line 7

def mapping
  @mapping
end

Instance Method Details

#add(category) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/picky/qualifier_mapper.rb', line 18

def add category
  category.qualifiers.each do |qualifier|
    sym_qualifier = qualifier.intern
    Picky.logger.warn %Q{Warning: Qualifier "#{qualifier}" already mapped to category #{mapping[sym_qualifier].identifier} (ambiguous qualifier mapping).} if mapping.has_key? sym_qualifier
    mapping[sym_qualifier] = category
  end
end

#map(qualifier) ⇒ Object

Normalizes the given qualifier.

Returns nil if it is not allowed, the normalized qualifier if it is.



30
31
32
33
34
# File 'lib/picky/qualifier_mapper.rb', line 30

def map qualifier
  return nil if qualifier.empty?

  mapping[qualifier.intern]
end

#restrict(user_qualified) ⇒ Object

Restricts the given categories.



38
39
40
41
42
43
44
# File 'lib/picky/qualifier_mapper.rb', line 38

def restrict user_qualified
  if @restricted
    user_qualified ? @restricted & user_qualified : @restricted 
  else
    user_qualified
  end
end

#restrict_to(*qualifiers) ⇒ Object



45
46
47
# File 'lib/picky/qualifier_mapper.rb', line 45

def restrict_to *qualifiers
  @restricted = qualifiers.map { |qualifier| map qualifier }.compact
end