Function: majutsu-template--sugar-transform
majutsu-template--sugar-transform is a natively compiled function
defined in majutsu-template.el.
Signature
(majutsu-template--sugar-transform FORM)
Documentation
Transform compact FORM into the template AST.
Source Code
;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-template.el
(defun majutsu-template--sugar-transform (form)
"Transform compact FORM into the template AST."
(cond
((majutsu-template-node-p form) form)
((and (consp form) (keywordp (car form)))
(majutsu-template--sugar-apply (car form) (cdr form)))
((numberp form) (majutsu-template-raw (number-to-string form) 'Integer))
((eq form t) (majutsu-template-raw "true" 'Boolean))
((eq form nil) (majutsu-template-raw "false" 'Boolean))
((stringp form) (majutsu-template-str form))
((symbolp form)
(if-let* ((binding (majutsu-template--lookup-binding form)))
(or (majutsu-template--binding-node binding)
(majutsu-template--var-node form (majutsu-template--binding-type binding)))
(majutsu-template-raw (symbol-name form))))
((vectorp form)
(let* ((list-form (append form nil)))
(cond
((null list-form)
(majutsu-template-concat))
((symbolp (car list-form))
(majutsu-template--sugar-transform list-form))
((cdr list-form)
(let ((head (majutsu-template--sugar-transform (car list-form))))
(if (eq (majutsu-template-node-kind head) :lambda)
(apply #'majutsu-template-call head (cdr list-form))
(apply #'majutsu-template-concat head (cdr list-form)))))
(t
(majutsu-template-concat (car list-form))))))
((and (consp form) (eq (car form) 'quote))
(majutsu-template--sugar-transform (cadr form)))
((and (consp form) (symbolp (car form)))
(majutsu-template--sugar-apply (car form) (cdr form)))
((and majutsu-template--allow-eval (consp form))
(majutsu-template--sugar-transform (eval form)))
((consp form)
(user-error "majutsu-template: use vector syntax [:op ...], lists are not accepted: %S" form))
(t
(user-error "majutsu-template: unsupported literal in sugar %S" form))))