Sha256: 2bc5b8ee9ff91e1bab8046f1955ea8b31d57d993e0a472d24b2a8124f50554f3

Contents?: true

Size: 1.55 KB

Versions: 10

Compression:

Stored size: 1.55 KB

Contents

# coding: utf-8
#
module Internals

  #
  #
  module Query

    # A single qualifier.
    #
    class Qualifier # :nodoc:all

      attr_reader :normalized_qualifier, :codes

      #
      #
      # codes is an array.
      #
      def initialize normalized_qualifier, codes
        @normalized_qualifier = normalized_qualifier
        @codes                = codes.map &:to_sym
      end

      # Will overwrite if the key is present in the hash.
      #
      def inject_into hash
        codes.each do |code|
          hash[code] = normalized_qualifier
        end
      end

    end

    # Collection class for qualifiers.
    #
    class Qualifiers # :nodoc:all

      attr_reader :qualifiers, :normalization_mapping

      delegate :<<, :to => :qualifiers

      #
      #
      def initialize
        @qualifiers = []
        @normalization_mapping = {}
      end
      def self.instance
        @instanec ||= new
      end

      # TODO Spec.
      #
      def self.add name, qualifiers
        instance << Qualifier.new(name, qualifiers)
      end

      # Uses the qualifiers to prepare (optimize) the qualifier handling.
      #
      def prepare
        qualifiers.each do |qualifier|
          qualifier.inject_into normalization_mapping
        end
      end

      # Normalizes the given qualifier.
      #
      # Returns nil if it is not allowed, the normalized qualifier if it is.
      #
      # Note: Normalizes.
      #
      def normalize qualifier
        return nil if qualifier.blank?

        normalization_mapping[qualifier.to_sym]
      end

    end

  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
picky-2.5.2 lib/picky/internals/query/qualifiers.rb
picky-2.5.1 lib/picky/internals/query/qualifiers.rb
picky-2.5.0 lib/picky/internals/query/qualifiers.rb
picky-2.4.3 lib/picky/internals/query/qualifiers.rb
picky-2.4.2 lib/picky/internals/query/qualifiers.rb
picky-2.4.1 lib/picky/internals/query/qualifiers.rb
picky-2.4.0 lib/picky/internals/query/qualifiers.rb
picky-2.3.0 lib/picky/internals/query/qualifiers.rb
picky-2.2.1 lib/picky/internals/query/qualifiers.rb
picky-2.2.0 lib/picky/internals/query/qualifiers.rb