class RodaRouteParser
Public Class Methods
parse(input)
click to toggle source
# File lib/roda-route_parser.rb 2 def self.parse(input) 3 new.parse(input) 4 end
Public Instance Methods
parse(input)
click to toggle source
# File lib/roda-route_parser.rb 6 def parse(input) 7 if input.is_a?(String) 8 require 'stringio' 9 return parse(StringIO.new(input)) 10 end 11 12 routes = [] 13 regexp = /\A\s*#\s*route(?:\[(\w+)\])?:\s+(?:([A-Z|]+)?\s+)?(\S+)\s*\z/ 14 input.each_line do |line| 15 if md = regexp.match(line) 16 name, methods, route = md.captures 17 route = {'path'=>route} 18 19 if methods 20 route['methods'] = methods.split('|').compact 21 end 22 23 if name 24 route['name'] = name 25 end 26 27 routes << route 28 end 29 end 30 31 routes 32 end