Skip to content

Instantly share code, notes, and snippets.

@jmercouris
Created November 21, 2017 23:42
Show Gist options
  • Save jmercouris/a30e65b52c8cfeab79a2fe21f1e7301f to your computer and use it in GitHub Desktop.
Save jmercouris/a30e65b52c8cfeab79a2fe21f1e7301f to your computer and use it in GitHub Desktop.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; MACRO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defmacro defparen (script-name &rest script-body)
`(defparameter ,script-name
(ps:ps ,@script-body)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; USAGE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defparen add-span (let ((element (chain document (create-element "span"))))
(setf (@ element text-content) "some-text")
(chain document body (append-child element))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; OUTPUT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> add-span
"(function () {
var element = chain(document, createElement('span'));
at(element, textContent) = 'some-text';
return chain(document, body, appendChild(element));
})();"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PROBLEM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
chain is a macro which is supposed to expand: see:
https://common-lisp.net/project/parenscript/tutorial.html
Parenscript reference:
https://common-lisp.net/project/parenscript/reference.html#section-ps-compiler
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment