Documentation ¶
Overview ¶
pathtree implements a tree for fast path lookup.
Restrictions
- Paths must be a '/'-separated list of strings, like a URL or Unix filesystem.
- All paths must begin with a '/'.
- Path elements may not contain a '/'.
- Path elements beginning with a ':' or '*' will be interpreted as wildcards.
- Trailing slashes are inconsequential.
Wildcards ¶
Wildcards are named path elements that may match any strings in that location. Two different kinds of wildcards are permitted:
- :var - names beginning with ':' will match any single path element.
- *var - names beginning with '*' will match one or more path elements. (however, no path elements may come after a star wildcard)
Extensions ¶
Single element wildcards in the last path element can optionally end with an extension. This allows for routes like '/users/:id.json', which will not conflict with '/users/:id'.
Algorithm ¶
Paths are mapped to the tree in the following way:
- Each '/' is a Node in the tree. The root node is the leading '/'.
- Each Node has edges to other nodes. The edges are named according to the possible path elements at that depth in the path.
- Any Node may have an associated Leaf. Leafs are terminals containing the data associated with the path as traversed from the root to that Node.
Edges are implemented as a map from the path element name to the next node in the path.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Leaf ¶
type Leaf struct { Value interface{} // the value associated with this node Wildcards []string // the wildcard names, in order they appear in the path // contains filtered or unexported fields }
Click to show internal directories.
Click to hide internal directories.