Module: Clowne::Declarations

Defined in:
lib/clowne/declarations.rb,
lib/clowne/declarations/base.rb,
lib/clowne/declarations/trait.rb,
lib/clowne/declarations/init_as.rb,
lib/clowne/declarations/nullify.rb,
lib/clowne/declarations/finalize.rb,
lib/clowne/declarations/after_clone.rb,
lib/clowne/declarations/after_persist.rb,
lib/clowne/declarations/exclude_association.rb,
lib/clowne/declarations/include_association.rb

Overview

:nodoc:

Defined Under Namespace

Classes: AfterClone, AfterPersist, Base, ExcludeAssociation, Finalize, IncludeAssociation, InitAs, Nullify, Trait

Class Method Summary collapse

Class Method Details

.add(id, declaration = nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/clowne/declarations.rb', line 10

def add(id, declaration = nil)
  declaration = Proc.new if block_given?

  if declaration.is_a?(Class)
    DSL.send(:define_method, id) do |*args, &block|
      declarations.push declaration.new(*args, &block)
    end
  elsif declaration.is_a?(Proc)
    DSL.send(:define_method, id, &declaration)
  else
    raise ArgumentError, "Unsupported declaration type: #{declaration.class}"
  end
end