module Ordinary::Builder::Context

Attributes

current[R]
modules[R]

Public Class Methods

new(*args, &block) click to toggle source
# File lib/ordinary/builder.rb, line 44
def self.new(*args, &block)
  @current.new(*args, &block)
end
new(block = nil) click to toggle source
# File lib/ordinary/builder.rb, line 48
def initialize(block = nil)
  @block = block ? Unit.new(nil, &block) : nil
end
register(*modules) click to toggle source
# File lib/ordinary/builder.rb, line 36
def self.register(*modules)
  update(@modules | modules)
end
unregister(*modules) click to toggle source
# File lib/ordinary/builder.rb, line 40
def self.unregister(*modules)
  update(@modules - modules)
end

Private Class Methods

update(modules) click to toggle source
# File lib/ordinary/builder.rb, line 28
def self.update(modules)
  @current = Class.new { include *[*modules, Context] }.freeze
  @modules = modules.freeze
end

Public Instance Methods

block() click to toggle source
# File lib/ordinary/builder.rb, line 52
def block
  unless @block
    e = BlockNotGiven.new("`block' unit cannot use if a block is not given")
    e.set_backtrace(caller)
    raise e
  end

  @block
end
inspect() click to toggle source
# File lib/ordinary/builder.rb, line 68
def inspect
  header      = "#{Context.name}:0x%014x" % (object_id << 1)
  module_list = Context.modules.map(&:name).sort * ', '
  with_block  = @block ? ' with a block' : ''
  "#<#{header} [#{module_list}]#{with_block}>"
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/ordinary/builder.rb, line 62
def method_missing(method_name, *args, &block)
  e = UnitNotDefined.new("`#{method_name}' unit is not defined")
  e.set_backtrace(caller)
  raise e
end