From d3057ff9d7a7bf3d429f975d97d94c49c947eca2 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 24 Apr 2024 14:36:09 +0200 Subject: [PATCH] forge: add exec-str function --- forge/forge.lisp | 6 +++++- scopes.asd | 2 +- test/test-forge.lisp | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/forge/forge.lisp b/forge/forge.lisp index 31886b8..1d2ab1f 100644 --- a/forge/forge.lisp +++ b/forge/forge.lisp @@ -4,7 +4,7 @@ (defpackage :scopes/forge (:use :common-lisp) - (:export #:forge-env #:data-stack #:exec)) + (:export #:forge-env #:data-stack #:exec #:exec-str)) (in-package :scopes/forge) @@ -20,6 +20,10 @@ (defun forge-env () (make-instance 'forge-env)) +(defun exec-str (fe s) + (exec fe (read-from-string + (concatenate 'string "(" s ")")))) + (defun exec (fe code) (dolist (x code) (if (symbolp x) diff --git a/scopes.asd b/scopes.asd index fcbacae..3b4ca39 100644 --- a/scopes.asd +++ b/scopes.asd @@ -11,7 +11,7 @@ (:file "testing") (:file "test/test-forge" :depends-on ("testing" "forge/forge"))) - :long-description "scopes: generic data processingg facilities") + :long-description "scopes: generic data processing facilities") ;;#.(uiop:read-file-string ;; (uiop:subpathname *load-pathname* "README.md"))) ;;:in-order-to ((test-op (test-op "scopes/test")))) diff --git a/test/test-forge.lisp b/test/test-forge.lisp index 71f2414..eac7f56 100644 --- a/test/test-forge.lisp +++ b/test/test-forge.lisp @@ -16,6 +16,7 @@ (test-exec tst fe) ;(format t "~%data-stack ~a" (data-stack fe)) (test-def tst fe) + (test-exec-str tst fe) (sct:result tst))) (defun test-exec (tst fe) @@ -27,3 +28,7 @@ (scf:exec fe '(7 square)) (sct:assert-eq tst (car (scf:data-stack fe)) 49)) +(defun test-exec-str (tst fe) + (scf:exec-str fe "16 square") + (sct:assert-eq tst (car (scf:data-stack fe)) 256)) +