Sha256: cb1f78062901c6b01c8d38889a6cd6d3317efc12389a735edc266bfdd0235b4d

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

# coding: utf-8
#
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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
picky-2.7.0 lib/picky/query/qualifiers.rb
picky-2.6.0 lib/picky/query/qualifiers.rb