Class: SugarCube::Anonymous
- Defined in:
- lib/sugarcube-anonymous/anonymous.rb
Overview
A subclass of Hash that allows its keys to be accessed and assigned by
method name. Useful to quickly mock objects. To that end, a
NoMethodError
is raised anytime the key doesn't exist (getter or setter)
You can convert an existing Hash or NSDictionary into a Anonymous using the
constructor SugarCube::Anonymous[hash]
, or you can call to_object
on a
dictionary or hash.
Instance Method Summary collapse
-
#anonymous_each ⇒ Object
replace enumerable methods.
- #each ⇒ Object
- #method_missing(symbol, *args) ⇒ Object
- #to_object ⇒ Object
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(symbol, *args) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/sugarcube-anonymous/anonymous.rb', line 31 def method_missing(symbol, *args) if args.size == 0 if symbol.to_s[-1] == '?' symbol = symbol.to_s[0...-1].to_sym return_bool = true else return_bool = false end key = symbol key = symbol.to_s unless self.include? key if self.include?(key) self[key] = self[key].to_object if return_bool return !! self[key] end return self[key] end elsif args.size == 1 && /(.*)=$/ =~ symbol.to_s key = $1.to_sym key = key.to_s unless self.include? key if self.include?(key) return self[key] = args.first.to_object end end return super end |
Instance Method Details
#anonymous_each ⇒ Object
replace enumerable methods
63 |
# File 'lib/sugarcube-anonymous/anonymous.rb', line 63 alias :anonymous_each :each |
#each ⇒ Object
65 66 67 |
# File 'lib/sugarcube-anonymous/anonymous.rb', line 65 def each anonymous_each {|k,v| yield k, v.to_object} end |
#to_object ⇒ Object
58 59 60 |
# File 'lib/sugarcube-anonymous/anonymous.rb', line 58 def to_object self end |