Class: Module
Instance Method Summary collapse
- #attr_accessor_delegate(*method_names, &delegate) ⇒ Object
- #block_delegate(*method_names, &delegate) ⇒ Object
- #delegate(target, *mnames) ⇒ Object
- #delegate_accessor(target, *mnames) ⇒ Object
- #ivar_accessor_delegate(ivar_name, *method_names) ⇒ Object
- #ivar_delegate(ivar_name, *method_names) ⇒ Object
- #touching(touch_method_name, *mnames) ⇒ Object
- #touching_accessor(*names) ⇒ Object
Instance Method Details
#attr_accessor_delegate(*method_names, &delegate) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/glimr/util.rb', line 40 def attr_accessor_delegate(*method_names, &delegate) method_names.each{|mn| define_method(mn){|*args| instance_eval(&delegate).__send__(mn,*args) } setter = "#{mn}=".to_sym define_method(setter){|*args| instance_eval(&delegate).__send__(setter,*args) } } end |
#block_delegate(*method_names, &delegate) ⇒ Object
82 83 84 85 86 87 88 |
# File 'lib/glimr/util.rb', line 82 def block_delegate(*method_names, &delegate) method_names.each{|mn| define_method(mn){|*args| instance_eval(&delegate).__send__(mn,*args) } } end |
#delegate(target, *mnames) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/glimr/util.rb', line 66 def delegate(target, *mnames) mnames.each{|mn| args = "*a, &b" args = "a" if mn.to_s[-1,1] == "=" class_eval <<-EOF def #{mn}(#{args}) #{target}.#{mn}(#{args}) end EOF } end |
#delegate_accessor(target, *mnames) ⇒ Object
78 79 80 |
# File 'lib/glimr/util.rb', line 78 def delegate_accessor(target, *mnames) delegate(target, *mnames.map{|mn| [mn, "#{mn}="] }.flatten) end |
#ivar_accessor_delegate(ivar_name, *method_names) ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/glimr/util.rb', line 56 def ivar_accessor_delegate(ivar_name, *method_names) method_names.each{|mn| define_method(mn){|*args| instance_variable_get(ivar_name).__send__(mn,*args) } setter = "#{mn}=".to_sym define_method(setter){|*args| instance_variable_get(ivar_name).__send__(setter,*args) } } end |
#ivar_delegate(ivar_name, *method_names) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/glimr/util.rb', line 48 def ivar_delegate(ivar_name, *method_names) method_names.each{|mn| define_method(mn){|*args| instance_variable_get(ivar_name).__send__(mn, *args) } } end |
#touching(touch_method_name, *mnames) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/glimr/util.rb', line 90 def touching(touch_method_name, *mnames) mnames.each{|mn| non_touching_mn = "__non_touching_#{mn}" alias_method non_touching_mn, mn private(non_touching_mn) define_method(mn){|*args| rv = __send__(non_touching_mn,*args) __send__(touch_method_name) rv } } end |
#touching_accessor(*names) ⇒ Object
103 104 105 106 |
# File 'lib/glimr/util.rb', line 103 def touching_accessor *names attr_accessor *names touching :touch!, *names.map{|n| n.to_s+"=" } end |