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