Class: Sass::Util::NormalizedMap
- Inherits:
-
Object
- Object
- Sass::Util::NormalizedMap
show all
- Defined in:
- .ruby-sass/lib/sass/util/normalized_map.rb
Overview
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.
Instance Method Summary
(collapse)
Constructor Details
10
11
12
13
14
15
|
# File '.ruby-sass/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
|
Constructor Details
10
11
12
13
14
15
|
# File '.ruby-sass/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
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
110
111
112
113
114
115
|
# File '.ruby-sass/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
|
Instance Method Details
#[](k) ⇒ Object
42
43
44
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 42
def [](k)
@map[normalize(k)]
end
|
#[]=(k, v) ⇒ Object
34
35
36
37
38
39
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 34
def []=(k, v)
normalized = normalize(k)
@map[normalized] = v
@key_strings[normalized] = k
v
end
|
#as_stored ⇒ Hash
Returns Hash with the keys as they were stored (before normalization).
59
60
61
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 59
def as_stored
Sass::Util.map_keys(@map) {|k| @key_strings[k]}
end
|
#delete(k) ⇒ Object
52
53
54
55
56
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 52
def delete(k)
normalized = normalize(k)
@key_strings.delete(normalized)
@map.delete(normalized)
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.
29
30
31
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 29
def denormalize(key)
@key_strings[normalize(key)] || key
end
|
#dup ⇒ Object
95
96
97
98
99
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 95
def dup
d = super
d.send(:instance_variable_set, "@map", @map.dup)
d
end
|
#each ⇒ Object
75
76
77
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 75
def each
@map.each {|k, v| yield(k, v)}
end
|
#empty? ⇒ Boolean
63
64
65
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 63
def empty?
@map.empty?
end
|
#has_key?(k) ⇒ Boolean
47
48
49
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 47
def has_key?(k)
@map.has_key?(normalize(k))
end
|
#keys ⇒ Object
71
72
73
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 71
def keys
@map.keys
end
|
#map ⇒ Object
91
92
93
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 91
def map
@map.map {|k, v| yield(k, v)}
end
|
#normalize(key) ⇒ Object
Specifies how to transform the key.
This can be overridden to create other normalization behaviors.
20
21
22
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 20
def normalize(key)
key.tr("-", "_")
end
|
#respond_to_missing?(method, include_private = false) ⇒ Boolean
117
118
119
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 117
def respond_to_missing?(method, include_private = false)
@map.respond_to?(method, include_private)
end
|
#size ⇒ Object
79
80
81
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 79
def size
@map.size
end
|
#sort_by ⇒ Object
101
102
103
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 101
def sort_by
@map.sort_by {|k, v| yield k, v}
end
|
#to_a ⇒ Object
87
88
89
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 87
def to_a
@map.to_a
end
|
#to_hash ⇒ Object
83
84
85
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 83
def to_hash
@map.dup
end
|
#update(map) ⇒ Object
105
106
107
108
|
# File '.ruby-sass/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
|
#values ⇒ Object
67
68
69
|
# File '.ruby-sass/lib/sass/util/normalized_map.rb', line 67
def values
@map.values
end
|