@ryo33/path-template v1.0.2
@ryo33/path-template
Match and build paths from rails/sinatra-style url path templates.
Installation
npm install --save @ryo33/path-templateUsage
var PathTemplate = require("@ryo33/path-template");PathTemplate.parse(string)
Returns a new path template, generated from the given string.
var template = PathTemplate.parse("/users/:userID");PathTemplate.inspect(template)
Returns the string representation of the given path template.
PathTemplate.inspect(template); // => "/users/:userID"PathTemplate.variables(template)
Returns an array of the variable names used in the given path template as strings.
var template = PathTemplate.parse("/*tree/photos/:name(.:format)");
PathTemplate.variables(template); // => ["tree", "name", "format"]PathTemplate.format(template, obj)
Returns a path as a string built by combining the template and the parameters in obj
PathTemplate.format(template, {userID: 1}); // => "/users/1"PathTemplate.match(template, string)
If string is a path matching the format of template, returns a match object
containing the parameters found in the path, otherwise returns undefined.
PathTemplate.match(template, "/users/1"); // => {userID: "1"}
PathTemplate.match(template, "/photos/1"); // => undefinedPathTemplate.add(template, string)
Returns a new path template by appending the path described by string.
var userPhoto = PathTemplate.add(template, "/photos/:photoID");
PathTemplate.inspect(userPhoto); // => "/users/:userID/photos/:photoID"PathTemplate.without(template, string)
Returns a new path without the path segments described by string.
var template = PathTemplate.parse("/groups/:groupID/users/:userID/photos"),
groupPhotos = PathTemplate.without(template, "/users/:userID");
PathTemplate.inspect(groupPhotos); // => "/groups/:groupID/photos"Template syntax
The characters :, *, (, and ) have special meanings.
: indicates the following segment is the name of a variable
* indicates the following segment is the splat/glob
( starts an optional segment
) ends an optional segment
additionally / and . will start a new segment.
Static Segments
"/foo/bar.baz"
^ ^ ^
| | Starts a segment, matching ".baz"
| |
| Starts a segment, matching "/bar"
|
Starts a segment, matching "/foo"Variables
"/foo/:bar.baz"
^ ^ ^
| | Starts a new segment, that matches ".baz"
| |
| Matches anything up to the start of the next segment, with the value
| being stored in the "bar" parameter of the returned match object
|
Starts a segment, matching "/foo"Splat/Glob
"/foo/*bar"
^ ^
| Matches any number of segments, the values being stored as an array
| in the "bar" parameter of the returned match object
|
Starts a segment, matching "/foo"Anonymous Splat/Glob
"/foo/*"
^ ^
| Matches any number of segments, the values will not appear in the
| returned match object
|
Starts a segment, matching "/foo"Optional Segments
"/foo(/baz)/baz"
^ ^ ^^
| | |Starts a new segment, that matches "/baz"
| | |
| | Ends the optional segment
| |
| Starts an optional segment, this segment need not be in the path being
| matched for the match to be successful
|
Starts a segment, matching "/foo"