summaryrefslogtreecommitdiff
path: root/gmk-default.h
diff options
context:
space:
mode:
Diffstat (limited to 'gmk-default.h')
-rw-r--r--gmk-default.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/gmk-default.h b/gmk-default.h
new file mode 100644
index 0000000..9fa09a6
--- /dev/null
+++ b/gmk-default.h
@@ -0,0 +1,28 @@
+static const char *const GUILE_module_defn = " \
+(define (to-string-maybe x) \
+ (cond \
+ ((or (not x) \
+ (unspecified? x) \
+ (variable? x) \
+ (null? x) \
+ (and (string? x) (string-null? x))) \
+ #f) \
+ ((eq? x #t) \"#t\") \
+ ((or (symbol? x) (number? x)) \
+ (object->string x)) \
+ ((char? x) \
+ (string x)) \
+ ((and (string? x) (string-every char-set:printing x)) \
+ x) \
+ (else (error \"Unknown object:\" x)))) \
+(define (obj-to-str x) \
+ (let ((acc '())) \
+ (define (walk x) \
+ (cond ((pair? x) (walk (car x)) (walk (cdr x))) \
+ ((to-string-maybe x) => (lambda (s) (set! acc (cons s acc)))))) \
+ (walk x) \
+ (string-join (reverse! acc)))) \
+(define (gmk-var v) \
+ (gmk-expand (format #f \"$(~a)\" (obj-to-str v)))) \
+(export gmk-expand gmk-eval gmk-var) \
+";