summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2012-08-14 22:53:43 +0200
committerGravatar Tom Willemsen2012-08-14 22:53:43 +0200
commitd1bc934f9c392334f909889ab9d531efd2379188 (patch)
treef037dfb8ad4958256c86e17287d10a50ac3c50dc
parent8681daf54aeacf85ae83512105f6b151f49ea523 (diff)
downloadundone-d1bc934f9c392334f909889ab9d531efd2379188.tar.gz
undone-d1bc934f9c392334f909889ab9d531efd2379188.zip
Simplify macro
-rw-r--r--undone/main.scm24
1 files changed, 15 insertions, 9 deletions
diff --git a/undone/main.scm b/undone/main.scm
index 8804bde..90db4b1 100644
--- a/undone/main.scm
+++ b/undone/main.scm
@@ -5,8 +5,8 @@
(define-syntax define-view
(lambda (x)
- (syntax-case x ()
- ((_ name doc fmt fields fields* ...)
+ (syntax-case x (where)
+ ((_ name doc fmt fields fields* ... where predicate)
(with-syntax ((viewname
(datum->syntax
x (symbol-append (syntax->datum #'name) '-view))))
@@ -15,16 +15,22 @@
doc
(map (lambda (item)
(let (#,@(map (lambda (field)
- #`(#,field (cdr (assq (quote #,field) item))))
- #'(fields fields* ...)))
- (format #t fmt
- #,@(map (lambda (field)
- field)
- #'(fields fields* ...)))))
+ #`(#,field (cdr (assq (quote #,field) item))))
+ #'(fields fields* ...)))
+ (if predicate
+ (format #t fmt
+ #,@(map (lambda (field)
+ field)
+ #'(fields fields* ...))))))
todo-list))
(set! view-list
(append view-list
- (list (cons 'name viewname))))))))))
+ (list (cons 'name viewname)))))))
+ ((_ name doc fmt fields fields* ...)
+ (with-syntax ((viewname
+ (datum->syntax
+ x (symbol-append (syntax->datum #'name) '-view))))
+ #'(define-view name doc fmt fields fields* ... where #t))))))
(define todo-list-file "todo.scm")