Class: Ooz::Common::BaseClass

Inherits:
Object
  • Object
show all
Defined in:
lib/ooz/common/base_class.rb

Direct Known Subclasses

BaseFactory, BaseModel

Class Method Summary collapse

Class Method Details

.overridable_const(method, value) ⇒ Object



6
7
8
9
10
11
12
13
14
# 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:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# 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:) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 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:) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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