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