Implement tasks and plays

This commit is contained in:
Ray Miller 2025-01-05 17:43:09 +00:00
parent d5593f4e3d
commit c290a5caea
Signed by: ray
GPG key ID: 043F786C4CD681B8
6 changed files with 191 additions and 65 deletions

40
modules/ordo/context.scm Normal file
View file

@ -0,0 +1,40 @@
(define-module (ordo context)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-26)
#:export (make-context
context?
get-context-scratch-dir
set-context-scratch-dir!
add-context-triggers!
register-context-var!
context-ref
resolve-context-ref
resolve-context-refs))
(define-record-type <context>
(make-context)
context?
(scratch-dir get-context-scratch-dir set-context-scratch-dir!)
(vars get-context-vars set-context-vars!)
(triggers get-context-triggers set-context-triggers!))
(define-record-type <context-ref>
(context-ref name)
context-ref?
(name var-name))
(define (resolve-context-ref ctx v)
(if (context-ref? v)
(assoc-ref (get-context-vars ctx) (var-name v))
v))
(define (resolve-context-refs ctx args)
(map (cut resolve-context-ref ctx <>) args))
(define (add-context-triggers! ctx triggers)
(when triggers
(set-context-triggers! ctx (fold cons (or (get-context-triggers ctx) '()) triggers))))
(define (register-context-var! ctx var-name val)
(set-context-vars! ctx (assoc-set! (get-context-vars ctx) var-name val)))