Module: Sinatra::Namespace::ModularMethods

Included in:
Sinatra::Namespace
Defined in:
lib/sinatra/namespace.rb

Instance Method Summary collapse

Instance Method Details

#setup(base, prefix = nil, options = {}, mixin = nil, &block) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/sinatra/namespace.rb', line 97

def setup(base, prefix = nil, options = {}, mixin = nil, &block)
  prefix, options = nil, prefix if options.empty? and prefix.respond_to? :key?
  prefix ||= ""
  mixin  ||= self
  mixin.class_eval { @prefix, @options, @base = prefix, options, base }
  mixin.extend ClassMethods, NestedMethods
  mixin.send(:define_method, :error_block!) do |*keys|
    if block = keys.inject(nil) { |b,k| b ||= mixin.errors[k] }
      instance_eval(&block)
    else
      super(*keys)
    end
  end
  mixin.before { extend mixin }
  mixin.class_eval(&block) if block
  mixin
end