URI Template Lite –
URI Template RFC 6570 expansion and extraction.
Usage
npm install uri-template-lite
var UriTemplate = require("uri-template-lite")
// Call `expand` directly
var data = {"domain":"example.com", "user":"fred", "query":"mycelium"}
UriTemplate.expand("http://{domain}/~{user}/foo{?query,number}", data)
// Returns http://example.com/~fred/foo?query=mycelium
// ..or use `Template` constructor
var template = new UriTemplate("http://{domain}/~{user}/foo{?query,number}")
template.expand({"domain":"example.com", "user":"fred", "query":"mycelium", "number": 3})
// Returns http://example.com/~fred/foo?query=mycelium&number=3
// Extract variables
template.match("http://example.com/~fred/foo?query=mycelium&number=3")
// Returns {"domain":"example.com", "user":"fred", "query":"mycelium", "number": "3"}
template.match("http://other.com/?query=mycelium")
// Returns null
About error handling
This implementation tries to do a best effort template expansion and leaves erroneous expressions in the returned URI instead of throwing errors. So for example, the incorrect expression {unclosed will return {unclosed as output.
Browser Support
It should work IE6 and up but automated testing is currently broken.
- For older browsers it requires
browser-upgrade-lite
package or other ES5 polyfill. - FF3-4
escape
should be patched to remove non-standard 2nd param,browser-upgrade-lite
does that.
External links
GitHub repo |
npm package |
URI Template RFC 6570 and
Tests |
Coveralls coverage
Buy Me A Tea
Licence
Copyright (c) 2014-2022 Lauri Rooden <lauri@rooden.ee>
The MIT License