Module: ClearObject

Defined in:
lib/clear_object.rb,
lib/clear_object/version.rb,
lib/clear_object/attribute.rb,
lib/clear_object/attribute_set.rb

Defined Under Namespace

Classes: Attribute, AttributeSet, Error

Constant Summary collapse

VERSION =
"0.1.0"

Instance Method Summary collapse

Instance Method Details

#clear(*attributes, default: nil, **opts, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/clear_object.rb', line 9

def clear(*attributes, default: nil, **opts, &block)
  attributes.each do |c_attr|
    attr_reader c_attr

    if block_given?
      klass = Class.new do
        extend ClearObject
        class_eval(&block)
      end
      # How come this is working?
      Object.const_set((opts[:clear_name] || c_attr).to_s.capitalize, klass)
    end
    clear_attributes << Attribute.new(name: c_attr, default: default)
  end

  class_eval(custom_initialize_def)
end

#clear_get_default_for(name) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/clear_object.rb', line 27

def clear_get_default_for(name)
  value = clear_attributes.detect { |c_attr| c_attr.name == name }.default
  if value.respond_to?(:call)
    value.call
  else
    value
  end
end