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))))