module Tumugi::Mixin::Parameterizable::ClassMethods

Public Instance Methods

dump() click to toggle source
# File lib/tumugi/mixin/parameterizable.rb, line 95
def dump
  parameter_proxy(proxy_id).dump
end
merged_parameter_proxy() click to toggle source
# 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={}) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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() click to toggle source
# 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() click to toggle source
# File lib/tumugi/mixin/parameterizable.rb, line 99
def proxy_id
  self.name || self.object_id.to_s
end
set(name, value) click to toggle source
# File lib/tumugi/mixin/parameterizable.rb, line 77
def set(name, value)
  parameter_proxy(proxy_id).set(name, value)
end