From fb01362a9dd816fc0d0e50052ab4764dd30e46f3 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Thu, 1 May 2025 17:06:41 -0400 Subject: You know we love updating with a horrendous commit message --- src/gizmo/wasp-curse.el | 252 ++++++++++++++++++++++++------------------------ 1 file changed, 126 insertions(+), 126 deletions(-) (limited to 'src/gizmo/wasp-curse.el') diff --git a/src/gizmo/wasp-curse.el b/src/gizmo/wasp-curse.el index 95149fef..2b31214f 100644 --- a/src/gizmo/wasp-curse.el +++ b/src/gizmo/wasp-curse.el @@ -20,148 +20,148 @@ (defconst w/binary-ops '((or . "||") - (and . "&&") - (> . ">") - (>= . ">=") - (< . "<") - (<= . "<=") - (= . "===") - (% . "%") - (/ . "/") - (bit-or . "|") - (bit-and . "&") - (bit-xor . "^"))) + (and . "&&") + (> . ">") + (>= . ">=") + (< . "<") + (<= . "<=") + (= . "===") + (% . "%") + (/ . "/") + (bit-or . "|") + (bit-and . "&") + (bit-xor . "^"))) (defun w/curse-expr (expr) "Translate EXPR according to the nature of the curse." (cond - ((null expr) "(null)") - ((listp expr) - (pcase (car expr) - ((or '+ '- '*) - (format - "(%s)" - (s-join (format "%s" (car expr)) (-map #'w/curse-expr (cdr expr))))) - ((pred (lambda (x) (alist-get x w/binary-ops))) - (format - "(%s)" - (s-join (alist-get (car expr) w/binary-ops) (-map #'w/curse-expr (cdr expr))))) - ((or '<< '>>) - (format - "(%s%s%s)" - (w/curse-expr (cadr expr)) - (format "%s" (car expr)) - (w/curse-expr (caddr expr)))) - ('comment "(null)") - ('lambda - (format - "((%s)=>(%s))" - (s-join "," (-map #'w/curse-name (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))))) - ('async-lambda - (format - "(async(%s)=>(%s))" - (s-join "," (-map #'w/curse-name (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))))) - ('if - (format - "(%s?%s:%s)" - (w/curse-expr (cadr expr)) - (w/curse-expr (caddr expr)) - (w/curse-expr (cadddr expr)))) - ('define - (format - "(globalThis.%s=%s)" - (w/curse-name (cadr expr)) - (w/curse-expr (caddr expr)))) - ('set - (format - "(%s=%s)" - (w/curse-name (cadr expr)) - (w/curse-expr (caddr expr)))) - ('aset - (format - "(%s[%s]=%s)" - (w/curse-name (cadr expr)) - (w/curse-expr (caddr expr)) - (w/curse-expr (cadddr expr)))) - ('new - (format - "(new %s(%s))" - (w/curse-expr (cadr expr)) - (s-join "," (-map #'w/curse-expr (cddr expr))))) - ('await - (format - "(await %s)" - (w/curse-expr (cadr expr)))) - ('not - (format - "(!%s)" - (w/curse-expr (cadr expr)))) - ('let - (format - "(((%s)=>(%s))(%s))" - (s-join "," (--map (w/curse-name (car it)) (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))) - (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) - ('async-let - (format - "((async(%s)=>(%s))(%s))" - (s-join "," (--map (w/curse-name (car it)) (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))) - (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) - ('do - (format - "((()=>(%s))())" - (s-join "," (-map #'w/curse-expr (cdr expr))))) - ('iota - (format - "[...Array(%s).keys()]" - (w/curse-expr (cadr expr)))) - ('array - (format - "[%s]" - (s-join "," (-map #'w/curse-expr (cdr expr))))) - ('object - (format - "{%s}" - (s-join - "," - (--map (format "%s:%s" (w/curse-name (car it)) (w/curse-expr (cadr it))) (cdr expr))))) - ('@ - (format - "((%s)[%s])" - (w/curse-expr (cadr expr)) - (w/curse-expr (caddr expr)))) - (_ - (format - "((%s)(%s))" - (w/curse-expr (car expr)) - (s-join "," (-map #'w/curse-expr (cdr expr))))) - )) - ((symbolp expr) (w/curse-name expr)) - ((numberp expr) (format "%s" expr)) - ((stringp expr) (format "\"%s\"" expr)) - (t "(null)"))) + ((null expr) "(null)") + ((listp expr) + (pcase (car expr) + ((or '+ '- '*) + (format + "(%s)" + (s-join (format "%s" (car expr)) (-map #'w/curse-expr (cdr expr))))) + ((pred (lambda (x) (alist-get x w/binary-ops))) + (format + "(%s)" + (s-join (alist-get (car expr) w/binary-ops) (-map #'w/curse-expr (cdr expr))))) + ((or '<< '>>) + (format + "(%s%s%s)" + (w/curse-expr (cadr expr)) + (format "%s" (car expr)) + (w/curse-expr (caddr expr)))) + ('comment "(null)") + ('lambda + (format + "((%s)=>(%s))" + (s-join "," (-map #'w/curse-name (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))))) + ('async-lambda + (format + "(async(%s)=>(%s))" + (s-join "," (-map #'w/curse-name (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))))) + ('if + (format + "(%s?%s:%s)" + (w/curse-expr (cadr expr)) + (w/curse-expr (caddr expr)) + (w/curse-expr (cadddr expr)))) + ('define + (format + "(globalThis.%s=%s)" + (w/curse-name (cadr expr)) + (w/curse-expr (caddr expr)))) + ('set + (format + "(%s=%s)" + (w/curse-name (cadr expr)) + (w/curse-expr (caddr expr)))) + ('aset + (format + "(%s[%s]=%s)" + (w/curse-name (cadr expr)) + (w/curse-expr (caddr expr)) + (w/curse-expr (cadddr expr)))) + ('new + (format + "(new %s(%s))" + (w/curse-expr (cadr expr)) + (s-join "," (-map #'w/curse-expr (cddr expr))))) + ('await + (format + "(await %s)" + (w/curse-expr (cadr expr)))) + ('not + (format + "(!%s)" + (w/curse-expr (cadr expr)))) + ('let + (format + "(((%s)=>(%s))(%s))" + (s-join "," (--map (w/curse-name (car it)) (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))) + (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) + ('async-let + (format + "((async(%s)=>(%s))(%s))" + (s-join "," (--map (w/curse-name (car it)) (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))) + (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) + ('do + (format + "((()=>(%s))())" + (s-join "," (-map #'w/curse-expr (cdr expr))))) + ('iota + (format + "[...Array(%s).keys()]" + (w/curse-expr (cadr expr)))) + ('array + (format + "[%s]" + (s-join "," (-map #'w/curse-expr (cdr expr))))) + ('object + (format + "{%s}" + (s-join + "," + (--map (format "%s:%s" (w/curse-name (car it)) (w/curse-expr (cadr it))) (cdr expr))))) + ('@ + (format + "((%s)[%s])" + (w/curse-expr (cadr expr)) + (w/curse-expr (caddr expr)))) + (_ + (format + "((%s)(%s))" + (w/curse-expr (car expr)) + (s-join "," (-map #'w/curse-expr (cdr expr))))) + )) + ((symbolp expr) (w/curse-name expr)) + ((numberp expr) (format "%s" expr)) + ((stringp expr) (format "\"%s\"" expr)) + (t "(null)"))) (defun w/curse-current-buffer () "Transmute the current buffer according to the curse." (interactive) (let* ((srcfile (buffer-file-name)) - (jspath (s-concat (f-base srcfile) ".js")) - (src (buffer-string))) + (jspath (s-concat (f-base srcfile) ".js")) + (src (buffer-string))) (with-temp-buffer (insert src) (goto-char (point-min)) (let ((acc "") - (line (read (current-buffer)))) + (line (read (current-buffer)))) (while (and line (not (eobp))) (setf acc (s-concat acc (w/curse-expr line) ";")) (setf - line - (condition-case nil - (read (current-buffer)) - (error nil)))) + line + (condition-case nil + (read (current-buffer)) + (error nil)))) (write-region acc nil jspath))))) (provide 'wasp-curse) -- cgit v1.2.3