Module: Tumugi::Mixin::Parameterizable::ClassMethods
- Defined in:
- lib/tumugi/mixin/parameterizable.rb
Instance Method Summary collapse
- #dump ⇒ Object
- #merged_parameter_proxy ⇒ Object
- #param(name, opts = {}) ⇒ Object
- #param_auto_bind_enabled(v) ⇒ Object
- #param_set(name, value) ⇒ Object
- #parameter_proxy(mod_name) ⇒ Object
- #parameter_proxy_map ⇒ Object
- #proxy_id ⇒ Object
Instance Method Details
#dump ⇒ Object
86 87 88 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 86 def dump parameter_proxy_map[proxy_id].dump end |
#merged_parameter_proxy ⇒ Object
81 82 83 84 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 81 def merged_parameter_proxy parameterizables = ancestors.reverse.select{ |a| a.respond_to?(:parameter_proxy) } parameterizables.map { |a| a.parameter_proxy(a.proxy_id) }.reduce(:merge) end |
#param(name, opts = {}) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 58 def param(name, opts={}) parameter_proxy(proxy_id).param(name, opts) attr_writer name define_method(name) do val = self.instance_variable_get("@#{name}") if val.instance_of?(Proc) v = self.instance_exec(&val) self.instance_variable_set("@#{name}", v) v else val end end end |
#param_auto_bind_enabled(v) ⇒ Object
77 78 79 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 77 def param_auto_bind_enabled(v) parameter_proxy(proxy_id).param_auto_bind_enabled = v end |
#param_set(name, value) ⇒ Object
73 74 75 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 73 def param_set(name, value) parameter_proxy(proxy_id).param_set(name, value) end |
#parameter_proxy(mod_name) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 49 def parameter_proxy(mod_name) map = parameter_proxy_map unless map[mod_name] proxy = Tumugi::Parameter::ParameterProxy.new(mod_name) map[mod_name] = proxy end map[mod_name] end |
#parameter_proxy_map ⇒ Object
43 44 45 46 47 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 43 def parameter_proxy_map map = {} self.define_singleton_method(:parameter_proxy_map) { map } map end |
#proxy_id ⇒ Object
90 91 92 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 90 def proxy_id self.name || self.object_id.to_s end |