URI Template JS
This is a javascript implementation of RFC6570 - URI Template,
and can expand templates up to and including Level 4 in that specification.
It exposes a constructor function UriTemplate with the two methods:
- (static) parse(uriTemplateText) returning an instance of UriTemplate
- expand(variables) returning an string
Requirements
You can use uritemplate.js in any even not so modern browser (Tested even with IE8 in IE7-Mode), see file demo.html.
But you can also use it with node:
npm install uritemplate
and then in a node application:
var
UriTemplate = require('uritemplate'),
template;
template = UriTemplate.parse('{?query*})';
template.expand({query: {first: 1, second: 2}});
--> "?first=1&second=2"
or within a html document (see also demo.html):
<script type="text/javascript" src="bin/uritemplate.js"></script>
<script type="text/javascript">
var template = UriTemplate.parse('{?query*}');
alert(template.expand({query: {first: 1, second: 2}}));
</script>
If you want to clone the git project, be aware of the submodule uritemplate-test.
So you have to to:
git https://github.com/fxa/uritemplate-js.git
git submodule init
git submodule update
Build
jake clean build
Tests
The integration tests are taken from https://github.com/uri-templates/uritemplate-test as a submodule.
The tests are integrated in the Jakefile.
License
Copyright 2013 Franz Antesberger
MIT License, see http://mit-license.org/
Release Notes
- 0.2.3 fixed bug with empty objects ('{?empty}' with '{empty:{}}' shall expand to '?empty=')
- 0.2.2 fixed pct encoding bug with multibyte utf8 chars
- 0.2.1 fixed a bug in package.json
- 0.2.0 heavy project refactoring, splitting source files, introducing jshint (preparation of next steps)
Next Steps
- Implementing meaningful unit tests (now only dummy test implemented)
- A new method extract(uri), which tries to extract the variables from a given uri.
This is harder, than you might think