blob: c71c6004eeeef262036803b1acff238020e75407 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
(module (jimmy util) *
(import scheme (chicken base)
(chicken condition)
(only (chicken irregex) irregex-replace/all)
(chicken string))
(define-syntax define-public
(syntax-rules ()
((define-public (name . arg) forms ...)
(begin (export name)
(define (name . arg) forms ...)))
((define-public (name args ...) forms ...)
(begin (export name)
(define (name args ...) forms ...)))
((define-public name value)
(begin (export name)
(define name value)))))
(define-syntax ignore-errors
(syntax-rules ()
((ignore-errors x)
(handle-exceptions e #f x))))
(define (alist-walk lis . keys)
(if (null? keys)
lis
(let ((kv (assoc (car keys) lis)))
(cond
((not kv) #f)
((atom? (cdr kv))
(and (null? (cdr keys)) ; this shouldn't error...
(cdr kv)))
((list? (cdr kv))
(apply alist-walk (cdr kv) (cdr keys)))))))
(define (string-join ss #!optional (sep " "))
(string-intersperse ss sep))
(define (flush-lines-left lines)
(irregex-replace/all '(: bol (* space))
(string-join lines) ""))
(define (join-lines lines)
(apply string-append lines))
)
|