Module: ClassX::Declare
- Defined in:
- lib/classx/declare.rb
Overview
you can define classx base class using DSL
require 'classx'
require 'classx/declare'
include ClassX::Declare
classx :Klass do
has :x
end
Klass.new(:x => 10)
or you can define nested.
classx :Klass do
classx :Klass2 do
has :x
end
end
#=> define Klass::Klass2
Instance Method Summary collapse
Instance Method Details
#classx(name, options = [], ctx = _guess_parent_namespace(), &block) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/classx/declare.rb', line 25 def classx name, =[] , ctx=_guess_parent_namespace(), &block .push(:Declare) klass = Class.new klass.class_eval do .each do |mod| __send__ ::ClassX::MODULE_USAGE_MAP_OF[mod], ::ClassX.const_get(mod) end include(ClassX) end klass.class_eval(&block) ctx.module_eval do const_set(name.to_s.capitalize, klass) end end |