aboutsummaryrefslogtreecommitdiff
path: root/scm
diff options
context:
space:
mode:
Diffstat (limited to 'scm')
-rw-r--r--scm/extant-input.scm15
-rw-r--r--scm/guile.xml6
2 files changed, 21 insertions, 0 deletions
diff --git a/scm/extant-input.scm b/scm/extant-input.scm
new file mode 100644
index 0000000..d50a7fe
--- /dev/null
+++ b/scm/extant-input.scm
@@ -0,0 +1,15 @@
+(define-module (extant input)
+ #:export (register-handler!))
+
+(define *handlers* '())
+
+(define (register-handler! proc)
+ (set! *handlers* (cons proc *handlers*)))
+
+(define (dispatch-input text)
+ (let loop ((handlers *handlers*))
+ (if (null? handlers)
+ `((text . "No handlers found!")
+ (style . "error"))
+ (let ((result ((car handlers) text)))
+ (or result (loop (cdr handlers)))))))
diff --git a/scm/guile.xml b/scm/guile.xml
new file mode 100644
index 0000000..8a5368d
--- /dev/null
+++ b/scm/guile.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/ski/frog/extant/guile">
+ <file>extant-input.scm</file>
+ </gresource>
+</gresources>