class Contracto::Contract::Request::PathToSinatraPathAdapter

Public Class Methods

new(path) click to toggle source
# File lib/contracto/contract/request.rb, line 15
def initialize(path)
  @path = path
end

Public Instance Methods

sinatra_path() click to toggle source
# File lib/contracto/contract/request.rb, line 19
def sinatra_path
  parse_brackets! if path_with_brackets?
  @path
end

Private Instance Methods

brackets_to_colons!() click to toggle source
# File lib/contracto/contract/request.rb, line 34
def brackets_to_colons!
  @path.gsub!('{', ':')
  @path.gsub!('}', '')
end
brackets_to_named_captures!() click to toggle source
# File lib/contracto/contract/request.rb, line 44
def brackets_to_named_captures!
  matches = @path.scan(/(\{([^\/])*\})/).map(&:first)
  matches.each do |match|
    @path.gsub! match, "(?<#{match}>\\w*)"
  end
  @path.gsub!('{', '')
  @path.gsub!('}', '')
end
fully_dynamic_route?() click to toggle source
# File lib/contracto/contract/request.rb, line 53
def fully_dynamic_route?
  !@path.scan(/\}[^\/]/).empty? || !@path.scan(/[^\/]\{/).empty?
end
parse_brackets!() click to toggle source
# File lib/contracto/contract/request.rb, line 26
def parse_brackets!
  if fully_dynamic_route?
    path_to_regexp!
  else
    brackets_to_colons!
  end
end
path_to_regexp!() click to toggle source
# File lib/contracto/contract/request.rb, line 39
def path_to_regexp!
  brackets_to_named_captures!
  @path = Regexp.new(@path)
end
path_with_brackets?() click to toggle source
# File lib/contracto/contract/request.rb, line 57
def path_with_brackets?
  !!@path.match('{')
end