class Sass::Util::NormalizedMap
A hash that normalizes its string keys while still allowing you to get back to the original keys that were stored. If several different values normalize to the same value, whichever is stored last wins.
Public Class Methods
Source
# File lib/sass/util/normalized_map.rb, line 10 def initialize(map = nil) @key_strings = {} @map = {} map.each {|key, value| self[key] = value} if map end
Create a normalized map
Public Instance Methods
Source
# File lib/sass/util/normalized_map.rb, line 42 def [](k) @map[normalize(k)] end
@private
Source
# File lib/sass/util/normalized_map.rb, line 34 def []=(k, v) normalized = normalize(k) @map[normalized] = v @key_strings[normalized] = k v end
@private
Source
# File lib/sass/util/normalized_map.rb, line 59 def as_stored Sass::Util.map_keys(@map) {|k| @key_strings[k]} end
@return [Hash] Hash with the keys as they were stored (before normalization).
Source
# File lib/sass/util/normalized_map.rb, line 52 def delete(k) normalized = normalize(k) @key_strings.delete(normalized) @map.delete(normalized) end
@private
Source
# File lib/sass/util/normalized_map.rb, line 29 def denormalize(key) @key_strings[normalize(key)] || key end
Returns the version of ‘key` as it was stored before normalization. If `key` isn’t in the map, returns it as it was passed in.
@return [String]
Source
# File lib/sass/util/normalized_map.rb, line 95 def dup d = super d.send(:instance_variable_set, "@map", @map.dup) d end
Calls superclass method
Source
# File lib/sass/util/normalized_map.rb, line 75 def each @map.each {|k, v| yield(k, v)} end
Source
# File lib/sass/util/normalized_map.rb, line 47 def has_key?(k) @map.has_key?(normalize(k)) end
@private
Source
# File lib/sass/util/normalized_map.rb, line 91 def map @map.map {|k, v| yield(k, v)} end
Source
# File lib/sass/util/normalized_map.rb, line 110 def method_missing(method, *args, &block) if Sass.tests_running raise ArgumentError.new("The method #{method} must be implemented explicitly") end @map.send(method, *args, &block) end
Source
# File lib/sass/util/normalized_map.rb, line 20 def normalize(key) key.tr("-", "_") end
Specifies how to transform the key.
This can be overridden to create other normalization behaviors.
Source
# File lib/sass/util/normalized_map.rb, line 117 def respond_to_missing?(method, include_private = false) @map.respond_to?(method, include_private) end
Source
# File lib/sass/util/normalized_map.rb, line 101 def sort_by @map.sort_by {|k, v| yield k, v} end
Source
# File lib/sass/util/normalized_map.rb, line 105 def update(map) map = map.as_stored if map.is_a?(NormalizedMap) map.each {|k, v| self[k] = v} end