class Sass::Util::NormalizedMap

Public Class Methods

new(map = nil) click to toggle source

Create a normalized map

# File lib/sass/util/normalized_map.rb, line 11
def initialize(map = nil)
  @key_strings = {}
  @map = Util.ruby1_8? ? OrderedHash.new : {}

  map.each {|key, value| self[key] = value} if map
end

Public Instance Methods

[](k) click to toggle source

@private

# File lib/sass/util/normalized_map.rb, line 43
def [](k)
  @map[normalize(k)]
end
[]=(k, v) click to toggle source

@private

# File lib/sass/util/normalized_map.rb, line 35
def []=(k, v)
  normalized = normalize(k)
  @map[normalized] = v
  @key_strings[normalized] = k
  v
end
as_stored() click to toggle source

@return [Hash] Hash with the keys as they were stored (before normalization).

# File lib/sass/util/normalized_map.rb, line 60
def as_stored
  Sass::Util.map_keys(@map) {|k| @key_strings[k]}
end
delete(k) click to toggle source

@private

# File lib/sass/util/normalized_map.rb, line 53
def delete(k)
  normalized = normalize(k)
  @key_strings.delete(normalized)
  @map.delete(normalized)
end
denormalize(key) click to toggle source

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]

# File lib/sass/util/normalized_map.rb, line 30
def denormalize(key)
  @key_strings[normalize(key)] || key
end
dup() click to toggle source
Calls superclass method
# File lib/sass/util/normalized_map.rb, line 96
def dup
  d = super
  d.send(:instance_variable_set, "@map", @map.dup)
  d
end
each() { |k, v| ... } click to toggle source
# File lib/sass/util/normalized_map.rb, line 76
def each
  @map.each {|k, v| yield(k, v)}
end
empty?() click to toggle source
# File lib/sass/util/normalized_map.rb, line 64
def empty?
  @map.empty?
end
has_key?(k) click to toggle source

@private

# File lib/sass/util/normalized_map.rb, line 48
def has_key?(k)
  @map.has_key?(normalize(k))
end
keys() click to toggle source
# File lib/sass/util/normalized_map.rb, line 72
def keys
  @map.keys
end
map() { |k, v| ... } click to toggle source
# File lib/sass/util/normalized_map.rb, line 92
def map
  @map.map {|k, v| yield(k, v)}
end
method_missing(method, *args, &block) click to toggle source
# File lib/sass/util/normalized_map.rb, line 111
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
normalize(key) click to toggle source

Specifies how to transform the key.

This can be overridden to create other normalization behaviors.

# File lib/sass/util/normalized_map.rb, line 21
def normalize(key)
  key.tr("-", "_")
end
respond_to?(method, include_private = false) click to toggle source
Calls superclass method
# File lib/sass/util/normalized_map.rb, line 119
def respond_to?(method, include_private = false)
  super || @map.respond_to?(method, include_private)
end
respond_to_missing?(method, include_private = false) click to toggle source
# File lib/sass/util/normalized_map.rb, line 124
def respond_to_missing?(method, include_private = false)
  @map.respond_to?(method, include_private)
end
size() click to toggle source
# File lib/sass/util/normalized_map.rb, line 80
def size
  @map.size
end
sort_by() { |k, v| ... } click to toggle source
# File lib/sass/util/normalized_map.rb, line 102
def sort_by
  @map.sort_by {|k, v| yield k, v}
end
to_a() click to toggle source
# File lib/sass/util/normalized_map.rb, line 88
def to_a
  @map.to_a
end
to_hash() click to toggle source
# File lib/sass/util/normalized_map.rb, line 84
def to_hash
  @map.dup
end
update(map) click to toggle source
# File lib/sass/util/normalized_map.rb, line 106
def update(map)
  map = map.as_stored if map.is_a?(NormalizedMap)
  map.each {|k, v| self[k] = v}
end
values() click to toggle source
# File lib/sass/util/normalized_map.rb, line 68
def values
  @map.values
end