Skip to content

intronic/cl-uri-templates

 
 

Repository files navigation

PROJECT

CL-URI-TEMPLATES is an extensive Common-Lisp implementation of the URI-Templates draft proposed to the W3C.

It is currently developped by Thomas de Grivel

USAGE

If you want simple expansion of a template string using the current lexical environment, use EXPAND-URI-TEMPLATE.

There is also a reader macro parsing forms like #U{foo}/{bar} which you can enable with ENABLE-URI-TEMPLATE-SYNTAX.

Destructuring URIs according to a template is provided by WITH-DESTRUCTURED-URI, or if you want more persistent variables you can bind *URI-ENVIRONMENT* and use DESTRUCTURE-URI to populate it.

When writing URI templates please note that some expansions do not have reciprocal deconstructions, for instance

(equal '("" "foobar")
       (with-destructured-uri "foobar" "{foo}{bar}" (foo bar)
          (list foo bar)))

PROGRESS

Standard (draft) is fully implemented. Templates can be parsed at run-time, expansion of URIs with variables and operators is fully supported.

Beyond standard, destructuring URIs works with simple variables, destructuring templates using operators is under development.

Provided tests should all pass, they are run with test.sh or test.lisp Please report any bug you encounter, test cases and patches are also highly appreciated.

REFERENCE

This implementation is based on the URI-Templates draft proposed by Joe Gregorio to the W3C.

HISTORY

This package is originally a fork from uri-template from Vladimir Sedach.

Goal was to contribute the missing operator parsers, and further extend the URI deconstruction with these same operators.

Moreover run-time destructuring of URI was added, previous code would only allow uri-templates as a reader macro.

LICENSE

For license and copyright information (BSD), see the file COPYING included with the distribution.

About

Extensive implementation of URI-Templates for Common-Lisp.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published