diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2017-05-08 12:47:52 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2017-05-08 12:47:52 +0200 |
commit | 00aabb4381d1c7564b3341f8a7e94426237ca041 (patch) | |
tree | 02760e965a14c5efb4c5b127b93a45d4e1eb6354 | |
parent | d036fade731faf57f45acb2fe0129ef0e8207342 (diff) |
Add README.
-rw-r--r-- | README.md | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..454520f --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# JSON Template for Common Lisp + +## Summary + +An implementation of [JSON Template][] in Common Lisp. + +## Implementation Features + + * No dependencies + * Portable Common Lisp (tested + on [SBCL][], [Clozure CL][], [ECL][], [XCL][], [ABCL][]) + * HTML and URI escaping through the use of formatters + * Apache license + +## Missing Things + + * Literals (like `{.space}` and `{.meta-left}`/`{.meta-right}`) + * Multiple-argument formatters + * Options (like changing the meta character or the default formatter) + * Some kind of compilation for efficiency + +## Examples + +```lisp +JSON-TEMPLATE> (defparameter *tmpl* (parse-template-string " +<h1>{title|html}</h1> +{.section people} +<ul> +{.repeated section @} + <li>{name} ({age} years)</li> +{.end} +</ul> +{.or} +<p>No one's registered.</p> +{.end}")) +*TMPL* +``` + +```lisp +JSON-TEMPLATE> (expand-template *tmpl* + '(:title "<Registered People>" + :people ((:name "Nathalie" :age 24) + (:name "Heinrich" :age 28) + (:name "Hans" :age 25)))) +" +<h1><Registered People></h1> +<ul> + <li>Nathalie (24 years)</li> + <li>Heinrich (28 years)</li> + <li>Hans (25 years)</li> +</ul> +" +``` + +```lisp +JSON-TEMPLATE> (expand-template *tmpl* + '(:title "<Registered People>" + :people ())) +" +<h1><Registered People></h1> +<p>No one's registered.</p> +" +``` + + +[JSON Template]: http://jsont.squarespace.com +[SBCL]: http://www.sbcl.org/ +[Clozure CL]: http://ccl.clozure.com/ +[ECL]: http://ecls.sf.net/ +[XCL]: https://github.com/gnooth/xcl +[ABCL]: http://common-lisp.net/project/armedbear/ |