module Sinatra::Contrib::Loader

def autoload(name, path, method = nil)

def autoload(name, path, method = nil)
  extensions[method] << name if method
  Sinatra.autoload(name, path)
end

def extensions

def extensions
  @extensions ||= { helpers: [], register: [] }
end

def helpers(name, path)

def helpers(name, path)
  autoload name, path, :helpers
end

def register(name, path)

def register(name, path)
  autoload name, path, :register
end

def registered(base)

def registered(base)
  @extensions.each do |method, list|
    list = list.map { |name| Sinatra.const_get name }
    base.send(method, *list) unless base == ::Sinatra::Application
  end
end