Sha256: f8b5a4cd4095fb100dfe41a7364a47ae4821e5d4f7e9b70f02b6c44d3ae7f16d

Contents?: true

Size: 1.34 KB

Versions: 25

Compression:

Stored size: 1.34 KB

Contents

module Picky

  # coding: utf-8
  #
  module Query

    # Collection class for qualifiers.
    #
    class QualifierCategoryMapper

      attr_reader :mapping
      
      #
      #
      def initialize indexes
        @mapping = {}
        indexes.each do |index|
          index.each_category do |category|
            add category
          end
        end
      end

      #
      #
      def add category
        category.qualifiers.each do |qualifier|
          sym_qualifier = qualifier.intern
          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

      # Normalizes the given qualifier.
      #
      # Returns nil if it is not allowed, the normalized qualifier if it is.
      #
      def map qualifier
        return nil if qualifier.empty?

        @mapping[qualifier.intern]
      end
      
      # Restricts the given categories.
      #
      def restrict user_qualified
        if @restricted
          user_qualified ? @restricted & user_qualified : @restricted 
        else
          user_qualified
        end
      end
      def restrict_to *qualifiers
        @restricted = qualifiers.map { |qualifier| map qualifier }.compact
      end

    end

  end

end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
picky-4.9.0 lib/picky/query/qualifier_category_mapper.rb
picky-4.8.1 lib/picky/query/qualifier_category_mapper.rb
picky-4.8.0 lib/picky/query/qualifier_category_mapper.rb
picky-4.7.0 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.6 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.5 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.4 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.3 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.2 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.1 lib/picky/query/qualifier_category_mapper.rb
picky-4.6.0 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.12 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.11 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.10 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.9 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.8 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.7 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.6 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.5 lib/picky/query/qualifier_category_mapper.rb
picky-4.5.4 lib/picky/query/qualifier_category_mapper.rb