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
- #set(name, value) ⇒ Object
Instance Method Details
#dump ⇒ Object
95 96 97 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 95 def dump parameter_proxy(proxy_id).dump end |
#merged_parameter_proxy ⇒ Object
90 91 92 93 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 90 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
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 59 def param(name, opts={}) if instance_methods.include?(name) raise Tumugi::ParameterError.new("Parameter '#{name}' cannot use, because it is already defined or override instance method.") end 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
86 87 88 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 86 def param_auto_bind_enabled(v) parameter_proxy(proxy_id).param_auto_bind_enabled = v end |
#param_set(name, value) ⇒ Object
81 82 83 84 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 81 def param_set(name, value) Tumugi::Logger.instance.warn("'param_set' is deprecated and will be removed in a future release. Use 'set' instead.") set(name, value) end |
#parameter_proxy(mod_name) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 50 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
44 45 46 47 48 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 44 def parameter_proxy_map map = {} self.define_singleton_method(:parameter_proxy_map) { map } map end |
#proxy_id ⇒ Object
99 100 101 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 99 def proxy_id self.name || self.object_id.to_s end |
#set(name, value) ⇒ Object
77 78 79 |
# File 'lib/tumugi/mixin/parameterizable.rb', line 77 def set(name, value) parameter_proxy(proxy_id).set(name, value) end |