class Navigable::Router::Trie
Constants
- PATH_SEPARATOR
Public Class Methods
new()
click to toggle source
# File lib/navigable/router/trie.rb, line 10 def initialize @root = Node.new end
Public Instance Methods
add_route(path, endpoint)
click to toggle source
# File lib/navigable/router/trie.rb, line 14 def add_route(path, endpoint) traverse(path) { |segment, node| node.add(segment) }.attach(endpoint) end
find_route(path) { |route_params| ... }
click to toggle source
# File lib/navigable/router/trie.rb, line 18 def find_route(path) route_params = {} node = traverse(path) do |segment, node| node.find(segment) { |params| route_params.merge!(params) } end yield(route_params) if node && block_given? node&.endpoint end
print(verb, routes)
click to toggle source
# File lib/navigable/router/trie.rb, line 29 def print(verb, routes) @root.print(verb, routes) end
Private Instance Methods
traverse(path) { |segment, node| ... }
click to toggle source
# File lib/navigable/router/trie.rb, line 35 def traverse(path) _, *segments = path.split(PATH_SEPARATOR) segments.reduce(@root) do |node, segment| break unless node yield(segment, node) end end