Sha256: 75a1444b2470fd1c9d2953e823ae1c90db9f3d073c358185ec79e672811f64c1
Contents?: true
Size: 1.89 KB
Versions: 11
Compression:
Stored size: 1.89 KB
Contents
module Praxis class RoutingConfig attr_reader :routes attr_reader :version attr_reader :base def initialize(version:'n/a'.freeze, base: '', prefix:[], &block) @version = version @base = base @prefix_segments = Array(prefix) @routes = [] if block_given? instance_eval(&block) end end def clear! @prefix_segments = [] end def prefix(prefix=nil) return @prefix_segments.join.gsub('//','/') if prefix.nil? case prefix when '' @prefix_segments = [] when ABSOLUTE_PATH_REGEX @prefix_segments = Array(prefix[1..-1]) else @prefix_segments << prefix end end def options(path, opts={}) add_route 'OPTIONS', path, opts end def get(path, opts={}) add_route 'GET', path, opts end def head(path, opts={}) add_route 'HEAD', path, opts end def post(path, opts={}) add_route 'POST', path, opts end def put(path, opts={}) add_route 'PUT', path, opts end def delete(path, opts={}) add_route 'DELETE', path, opts end def trace(path, opts={}) add_route 'TRACE', path, opts end def connect(path, opts={}) add_route 'CONNECT', path, opts end def patch(path, opts={}) add_route 'PATCH', path, opts end def any(path, opts={}) add_route 'ANY', path, opts end ABSOLUTE_PATH_REGEX = %r|^//| def add_route(verb, path, options={}) unless path =~ ABSOLUTE_PATH_REGEX path = prefix + path end prefixed_path = path.gsub('//','/') path = (base + path).gsub('//','/') # Reject our own options route_name = options.delete(:name); pattern = Mustermann.new(path, {ignore_unknown_options: true}.merge( options )) route = Route.new(verb, pattern, version, name: route_name, prefixed_path: prefixed_path, **options) @routes << route route end end end
Version data entries
11 entries across 11 versions & 1 rubygems