class Ooz::Common::BaseClass
Public Class Methods
overridable_const(method, value)
click to toggle source
# File lib/ooz/common/base_class.rb, line 6 def overridable_const (method, value) method = method.to_s define_singleton_method method do value end define_method method do self.class.send(method) end end
passthrough(*methods, to:)
click to toggle source
# File lib/ooz/common/base_class.rb, line 16 def passthrough(*methods, to:) methods.each do |method| method = method.to_s define_method method do send(to)[method] end define_method "#{method}=" do |value| send(to)[method] = value end end end
passthrough_arr(method, to:, klass:)
click to toggle source
# File lib/ooz/common/base_class.rb, line 43 def passthrough_arr(method, to:, klass:) method = method.to_s var = "@#{method}" define_method method do return instance_variable_get(var) if instance_variable_defined?(var) send(to)[method] = send(to)[method] || [] klass = klass.is_a?(Class)? klass : self.send(klass) arr = send(to)[method].map do |e| klass.new(e, root: self) end instance_variable_set(var, arr) arr end end
passthrough_cls(method, to:, klass:)
click to toggle source
# File lib/ooz/common/base_class.rb, line 28 def passthrough_cls(method, to:, klass:) method = method.to_s var = "@#{method}" define_method method do return instance_variable_get(var) if instance_variable_defined?(var) send(to)[method] = send(to)[method] || {} klass = klass.is_a?(Class)? klass : self.send(klass) obj = klass.new(send(to)[method], root: self) instance_variable_set(var, obj) obj end end