Class: Mash
- Inherits:
-
Hash
show all
- Defined in:
- lib/mash.rb
Instance Method Summary
collapse
Constructor Details
#initialize(*args, &block) ⇒ Mash
Returns a new instance of Mash.
2
3
4
|
# File 'lib/mash.rb', line 2
def initialize *args, &block
super
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/mash.rb', line 6
def method_missing name, *args, &block
if name.to_s =~ /(.*)=/
self.[]=($1, *args, &block)
else
if args.empty?
self.[](name, &block)
else
self.[]=(name, *args, &block)
end
end
end
|
Instance Method Details
#[](k) {|v| ... } ⇒ Object
25
26
27
28
29
30
|
# File 'lib/mash.rb', line 25
def [](k)
v = super(k.to_s.downcase.to_sym)
v = getter_filters[k].call v if getter_filters.has_key? k
yield v if block_given?
v
end
|
#[]=(k, *v) ⇒ Object
18
19
20
21
22
23
|
# File 'lib/mash.rb', line 18
def []=(k, *v)
k = k.to_s.downcase.to_sym
v = *v if v.one?
v = setter_filters[k].call v if setter_filters.has_key? k
super k, v
end
|
#getter_filter(key, &block) ⇒ Object
36
37
38
|
# File 'lib/mash.rb', line 36
def getter_filter key, &block
getter_filters[key.to_sym] = block
end
|
#getter_filters ⇒ Object
44
45
46
|
# File 'lib/mash.rb', line 44
def getter_filters
@getter_filters ||= {}
end
|
#setter_filter(key, &block) ⇒ Object
32
33
34
|
# File 'lib/mash.rb', line 32
def setter_filter key, &block
setter_filters[key.to_sym] = block
end
|
#setter_filters ⇒ Object
40
41
42
|
# File 'lib/mash.rb', line 40
def setter_filters
@setter_filters ||= {}
end
|