Sha256: 5d7cd31f5868f526ec6b2e971a870833f627f96a101c79bcb776b48f2a4421e1

Contents?: true

Size: 1.13 KB

Versions: 7

Compression:

Stored size: 1.13 KB

Contents

require 'sinatra/base'
require 'sinatra/contrib/version'
require 'backports/rails/string' # for String#underscore

module Sinatra
  module Contrib
    module Loader
      def extensions
        @extensions ||= {:helpers => [], :register => []}
      end

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

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

      def autoload(name, path = nil, method = nil)
        path ||= "sinatra/#{name.to_s.underscore}"
        extensions[method] << name if method
        Sinatra.autoload(name, path)
      end

      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
    end

    module Common
      extend Loader
    end

    module Custom
      extend Loader
    end

    module All
      def self.registered(base)
        base.register Common, Custom
      end
    end

    extend Loader
    def self.registered(base)
      base.register Common, Custom
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
sinatra-contrib-2.0.8.1 lib/sinatra/contrib/setup.rb
sinatra-contrib-2.0.8 lib/sinatra/contrib/setup.rb
sinatra-contrib-2.0.7 lib/sinatra/contrib/setup.rb
sinatra-contrib-2.0.6 lib/sinatra/contrib/setup.rb
sinatra-contrib-2.0.5 lib/sinatra/contrib/setup.rb
sinatra-contrib-2.0.4 lib/sinatra/contrib/setup.rb
sinatra-contrib-2.0.3 lib/sinatra/contrib/setup.rb