Class: Mash

Inherits:
Hash
  • Object
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

Yields:

  • (v)


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_filtersObject



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_filtersObject



40
41
42
# File 'lib/mash.rb', line 40

def setter_filters
  @setter_filters ||= {}
end