class Amber::Route
Attributes
root[R]
Public Class Methods
new()
click to toggle source
# File lib/amber/route.rb, line 4 def initialize @root = Amber::RoutePath.new end
Public Instance Methods
find(url)
click to toggle source
# File lib/amber/route.rb, line 45 def find(url) layers = self.parse_url(url) current_layer = @root if layers.length > 0 layers.delete "" layers.each do |layer| if current_layer.child.has_key? layer current_layer = current_layer.child[layer] else return nil end end end current_layer end
map(url, method = nil, &callback)
click to toggle source
# File lib/amber/route.rb, line 8 def map(url, method = nil, &callback) layers = self.parse_url(url) if layers.length > 0 layers.delete "" current_layer = @root layers.each do |layer| if layer == layers.last if current_layer.child.has_key? layer path = current_layer.child[layer] path.callback = callback path.method = method if method next end new_path = Amber::RoutePath.new new_path.callback = callback new_path.method = method if method current_layer.add_child(layer, new_path) else if current_layer.child.has_key? layer current_layer = current_layer.child[layer] next end new_path = Amber::RoutePath.new current_layer.add_child(layer, new_path) current_layer = new_path end end else @root.callback = callback end end
parse_url(url)
click to toggle source
# File lib/amber/route.rb, line 63 def parse_url(url) url.split('/') end