def insert

bend-kit-router@0.2.0.0 · router.bend:219

import bend-kit-router@0.2.0.0/router.bend as Router
import Base

219# ponytail: preparation merges shapes in O(routes²); replace with a shape index if construction becomes a bottleneck.
220def insert(~A: Data, paths: List<&2, Path<A>>, +entry: Handler<A>, +groups: List<&2, U32>) -> Result<&2, &2, Error, List<&2, Path<A>>>:
221  match paths:
222    case Nil{}:
223      Handler{method, pattern, +ss, action} = entry
224      Done{[Path{ss, [Handler{method, pattern, ss, action}], groups, ""}]}
225    case Path{+ss, +handlers, +old_groups, +allow} <> +t:
226      Handler{+method, +pattern, +es, +action} = entry
227      candidate = {Handler{method, pattern, es, action} : Handler<A>}
228      insert.branch(~A, shape(ss, es), ss, handlers, old_groups, allow, t, candidate, groups, u => insert(~A, t, Handler{method, pattern, es, action}, groups))

Uses (8)

Used by (1)