Sha256: 683464cc6d051145be5bfea407c76b205157b1575035efc50132afc1c1371549

Contents?: true

Size: 1.54 KB

Versions: 19

Compression:

Stored size: 1.54 KB

Contents

require 'jeanine/path_proxy'

module Jeanine
  module Routing
    module DSL
      extend SingleForwardable

      RouteError = Class.new(StandardError)

      def_delegator :Jeanine, :router

      def get(path = nil, options = {}, &block)
        router.add(:GET, path, options, &block)
      end

      def post(path = nil, options = {}, &block)
        router.add(:POST, path, options, &block)
      end

      def put(path = nil, options = {}, &block)
        router.add(:PUT, path, options, &block)
      end

      def patch(path = nil, options = {}, &block)
        router.add(:PATCH, path, options, &block)
      end

      def head(path = nil, options = {}, &block)
        router.add(:HEAD, path, options, &block)
      end

      def options(path = nil, options = {}, &block)
        router.add(:OPTIONS, path, options, &block)
      end

      def delete(path = nil, options = {}, &block)
        router.add(:DELETE, path, options, &block)
      end

      def path(pathname, options = {}, &block)
        option_merger = Jeanine::PathProxy.new(self, pathname, options)
        option_merger.instance_eval(&block)
      end

      def root(path = "/", options = {}, &block)
        router.add(:GET, path, options, &block)
      end

      def match(path = nil, options = {}, &block)
        via = options.delete(:via)
        unless via.is_a?(Array)
          raise RouteError, "options[:via] must be an array of HTTP verbs"
        end
        via.each do |verb|
          router.add(verb.upcase, path, options, &block)
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
jeanine-0.8.1 lib/jeanine/routing/dsl.rb
jeanine-0.8 lib/jeanine/routing/dsl.rb
jeanine-0.7.8 lib/jeanine/routing/dsl.rb
jeanine-0.7.7 lib/jeanine/routing/dsl.rb
jeanine-0.7.6 lib/jeanine/routing/dsl.rb
jeanine-0.7.5 lib/jeanine/routing/dsl.rb
jeanine-0.7.4 lib/jeanine/routing/dsl.rb
jeanine-0.7.3.2 lib/jeanine/routing/dsl.rb
jeanine-0.7.3.1 lib/jeanine/routing/dsl.rb
jeanine-0.7.3 lib/jeanine/routing/dsl.rb
jeanine-0.7.2 lib/jeanine/routing/dsl.rb
jeanine-0.7.1 lib/jeanine/routing/dsl.rb
jeanine-0.7.0 lib/jeanine/routing/dsl.rb
jeanine-0.6.0 lib/jeanine/routing/dsl.rb
jeanine-0.5.0 lib/jeanine/routing/dsl.rb
jeanine-0.4.0 lib/jeanine/routing/dsl.rb
jeanine-0.3.0 lib/jeanine/routing/dsl.rb
jeanine-0.2.0 lib/jeanine/routing/dsl.rb
jeanine-0.1.0 lib/jeanine/routing/dsl.rb