Class: Sass::Util::NormalizedMap

Inherits:
Object
  • Object
show all
Defined in:
lib/sass/util/normalized_map.rb

Instance Method Summary collapse

Constructor Details

#initialize(map = nil) ⇒ NormalizedMap

Create a normalized map



12
13
14
15
16
17
# File 'lib/sass/util/normalized_map.rb', line 12

def initialize(map = nil)
  @key_strings = {}
  @map = Util.ruby1_8? ? OrderedHash.new : {}

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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block)



112
113
114
115
116
117
# File 'lib/sass/util/normalized_map.rb', line 112

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

Instance Method Details

#as_storedHash

Returns Hash with the keys as they were stored (before normalization).

Returns:

  • (Hash)

    Hash with the keys as they were stored (before normalization).



61
62
63
# File 'lib/sass/util/normalized_map.rb', line 61

def as_stored
  Sass::Util.map_keys(@map) {|k| @key_strings[k]}
end

#denormalize(key) ⇒ String

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.

Returns:

  • (String)


31
32
33
# File 'lib/sass/util/normalized_map.rb', line 31

def denormalize(key)
  @key_strings[normalize(key)] || key
end

#dup



97
98
99
100
101
# File 'lib/sass/util/normalized_map.rb', line 97

def dup
  d = super
  d.send(:instance_variable_set, "@map", @map.dup)
  d
end

#each



77
78
79
# File 'lib/sass/util/normalized_map.rb', line 77

def each
  @map.each {|k, v| yield(k, v)}
end

#empty?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/sass/util/normalized_map.rb', line 65

def empty?
  @map.empty?
end

#keys



73
74
75
# File 'lib/sass/util/normalized_map.rb', line 73

def keys
  @map.keys
end

#map



93
94
95
# File 'lib/sass/util/normalized_map.rb', line 93

def map
  @map.map {|k, v| yield(k, v)}
end

#normalize(key)

Specifies how to transform the key.

This can be overridden to create other normalization behaviors.



22
23
24
# File 'lib/sass/util/normalized_map.rb', line 22

def normalize(key)
  key.tr("-", "_")
end

#respond_to?(method, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


120
121
122
# File 'lib/sass/util/normalized_map.rb', line 120

def respond_to?(method, include_private = false)
  super || @map.respond_to?(method, include_private)
end

#respond_to_missing?(method, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


125
126
127
# File 'lib/sass/util/normalized_map.rb', line 125

def respond_to_missing?(method, include_private = false)
  @map.respond_to?(method, include_private)
end

#size



81
82
83
# File 'lib/sass/util/normalized_map.rb', line 81

def size
  @map.size
end

#sort_by



103
104
105
# File 'lib/sass/util/normalized_map.rb', line 103

def sort_by
  @map.sort_by {|k, v| yield k, v}
end

#to_a



89
90
91
# File 'lib/sass/util/normalized_map.rb', line 89

def to_a
  @map.to_a
end

#to_hash



85
86
87
# File 'lib/sass/util/normalized_map.rb', line 85

def to_hash
  @map.dup
end

#update(map)



107
108
109
110
# File 'lib/sass/util/normalized_map.rb', line 107

def update(map)
  map = map.as_stored if map.is_a?(NormalizedMap)
  map.each {|k, v| self[k] = v}
end

#values



69
70
71
# File 'lib/sass/util/normalized_map.rb', line 69

def values
  @map.values
end