diff options
author | Kévin THIERRY <kevin.thierry@open.eurogiciel.org> | 2014-11-05 08:27:15 +0100 |
---|---|---|
committer | Kévin THIERRY <kevin.thierry@open.eurogiciel.org> | 2014-11-05 08:27:15 +0100 |
commit | e15597c3e85dedc015ff923a88febd46a1551f71 (patch) | |
tree | 467fdb092d1fa76bcb63d4db653e8176dae24e62 /gmk-default.h | |
parent | 9789b4dba120180760ec948089fc98ebab6eb28b (diff) | |
download | make-e15597c3e85dedc015ff923a88febd46a1551f71.tar.gz make-e15597c3e85dedc015ff923a88febd46a1551f71.tar.bz2 make-e15597c3e85dedc015ff923a88febd46a1551f71.zip |
Imported Upstream version 4.0upstream/4.0sandbox/kevinthierry/upstream
Diffstat (limited to 'gmk-default.h')
-rw-r--r-- | gmk-default.h | 28 |
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) \ +"; |