class Grape::Router::Pattern

def build_path_from_pattern(pattern, anchor)

def build_path_from_pattern(pattern, anchor)
  return pattern.dup.insert(pattern.rindex('/') + 1, '?') if pattern.end_with?('*path')
  return pattern if anchor
  return "#{pattern}?*path" if pattern.end_with?('/')
  "#{pattern}/?*path"
end

def captures_default

def captures_default
  to_regexp.names
           .delete_if { |n| DEFAULT_CAPTURES.include?(n) }
           .to_h { |k| [k, ''] }
end

def extract_capture(format, version, requirements)

def extract_capture(format, version, requirements)
  capture = {}
  capture[:format] = map_str(format) if format.present?
  capture[:version] = map_str(version) if version.present?
  return capture if requirements.blank?
  requirements.merge(capture)
end

def initialize(origin:, suffix:, anchor:, params:, format:, version:, requirements:)

def initialize(origin:, suffix:, anchor:, params:, format:, version:, requirements:)
  @origin = origin
  @path = PatternCache[[build_path_from_pattern(@origin, anchor), suffix]]
  @pattern = MustermannPattern.new(@path, uri_decode: true, params:, capture: extract_capture(format, version, requirements))
  @to_regexp = @pattern.to_regexp
end

def map_str(value)

def map_str(value)
  Array.wrap(value).map(&:to_s)
end