Module: ContextBuilder

Defined in:
lib/context_builder.rb,
lib/context_builder/version.rb,
lib/context_builder/base_class_definer.rb

Defined Under Namespace

Classes: BaseClassDefiner

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base_mod) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/context_builder.rb', line 7

def self.extended(base_mod)
  base_mod.module_eval do
    @__context_attrs = {}
  end

  orig_included = base_mod.method(:included)
  base_mod.define_singleton_method(:included) do |base_class|
    BaseClassDefiner.new(base_class).define_all(@__context_attrs)
    orig_included.call(base_class)
  end
end

Instance Method Details

#context_attr(*names, &block) ⇒ Object



19
20
21
22
23
# File 'lib/context_builder.rb', line 19

def context_attr(*names, &block)
  names.flatten.each do |name|
    @__context_attrs[name.to_sym] = block
  end
end