- Notifications
You must be signed in to change notification settings - Fork14
kanru/cl-mustache
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation

Inspired byctemplate andet,Mustache is aframework-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.
The different Mustache tags are documented atmustache(5).
Using quicklisp is recommended.
CL-USER> (ql:quickload "cl-mustache")
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)CL-USR> (ql:quickload "cl-mustache-test")CL-USR> (prove:run :cl-mustache-test)
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))
About
Common Lisp Mustache Template Renderer
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors6
Uh oh!
There was an error while loading.Please reload this page.