class Grape::Router::Pattern
Constants
- DEFAULT_CAPTURES
Attributes
Public Class Methods
Source
# File lib/grape/router/pattern.rb, line 16 def initialize(origin, suffix, options) @origin = origin @path = build_path(origin, options[:anchor], suffix) @pattern = build_pattern(@path, options[:params], options[:format], options[:version], options[:requirements]) @to_regexp = @pattern.to_regexp end
Public Instance Methods
Source
# File lib/grape/router/pattern.rb, line 23 def captures_default to_regexp.names .delete_if { |n| DEFAULT_CAPTURES.include?(n) } .to_h { |k| [k, ''] } end
Private Instance Methods
Source
# File lib/grape/router/pattern.rb, line 40 def build_path(pattern, anchor, suffix) PatternCache[[build_path_from_pattern(pattern, anchor), suffix]] end
Source
# File lib/grape/router/pattern.rb, line 55 def build_path_from_pattern(pattern, anchor) if pattern.end_with?('*path') pattern.dup.insert(pattern.rindex('/') + 1, '?') elsif anchor pattern elsif pattern.end_with?('/') "#{pattern}?*path" else "#{pattern}/?*path" end end
Source
# File lib/grape/router/pattern.rb, line 31 def build_pattern(path, params, format, version, requirements) Mustermann::Grape.new( path, uri_decode: true, params: params, capture: extract_capture(format, version, requirements) ) end
Source
# File lib/grape/router/pattern.rb, line 44 def extract_capture(format, version, requirements) capture = {}.tap do |h| h[:format] = map_str(format) if format.present? h[:version] = map_str(version) if version.present? end return capture if requirements.blank? requirements.merge(capture) end
Source
# File lib/grape/router/pattern.rb, line 67 def map_str(value) Array.wrap(value).map(&:to_s) end