cl-mustache

2024-10-12

Mustache Template Renderer

Upstream URL

github.com/kanru/cl-mustache

Author

Kan-Ru Chen <kanru@kanru.info>

License

MIT/Expat
README
======== CL-MUSTACHE ======== .. image:: https://travis-ci.org/kanru/cl-mustache.png?branch=master :target: https://travis-ci.org/kanru/cl-mustache Inspired by ctemplate_ and et_, Mustache_ is a framework-agnostic way to render logic-free views. As ctemplates says, "It emphasizes separating logic from presentation: it is impossible to embed application logic in this template language." CL-MUSTACHE is a Common Lisp implementation of Mustache v1.1.2+λ. Tested with: - SBCL 1.0.55 - CLISP 2.49 CL-MUSTACHE is semantically versioned: http://semver.org. Documentation ============= The different Mustache tags are documented at `mustache(5)`_. Install It ========== Using quicklisp is recommended. :: CL-USER> (ql:quickload "cl-mustache") Use It ====== Currently accepts context data in alist format, for example: :: `((:tag . "string") (:array . #(1 2 3 4)) (:lambda ,(lambda () "world")) (:nested . ((:data . t)))) To render the template: :: CL-USER> (mustache:render* "Hi {{person}}!" '((:person . "Mom"))) "Hi Mom!" Or save the renderer for later use: :: CL-USER> (setf view (mustache:compile-template "Hi {{person}}!")) Or define static renderer function: :: CL-USER> (mustache:define view "Hi {{person}}!") CL-USER> (view context) Test It ======= :: CL-USR> (ql:quickload "cl-mustache-test") CL-USR> (prove:run :cl-mustache-test) Extend It (Experimental) ======================== Define your tag classes, tag character and render function: :: (in-package :mustache) (defclass exec-tag (non-standalone-tag) ((command :initarg :command :accessor command))) (set-mustache-character #\$ (lambda (raw-text arg-text escapep start end) (make-instance 'exec-tag :command arg-text))) ;; or ;; (define-mustache-character #\$ ;; (make-instance 'exec-tag :command arg-text)) (defmethod render-token ((token exec-tag) context template) (print-data (run-program-output (command token)) t context)) .. _ctemplate: http://code.google.com/p/google-ctemplate/ .. _et: http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html .. _Mustache: http://mustache.github.com/ .. _mustache(5): http://mustache.github.com/mustache.5.html

Dependencies (2)

  • prove
  • uiop
  • GitHub
  • Quicklisp