summaryrefslogtreecommitdiffstats
path: root/undone/main.scm
diff options
context:
space:
mode:
Diffstat (limited to 'undone/main.scm')
-rw-r--r--undone/main.scm37
1 files changed, 9 insertions, 28 deletions
diff --git a/undone/main.scm b/undone/main.scm
index b9ae986..117e2c6 100644
--- a/undone/main.scm
+++ b/undone/main.scm
@@ -2,6 +2,7 @@
#:use-module (ice-9 format)
#:use-module (ice-9 rdelim)
#:use-module (oop goops)
+ #:use-module (undone view)
#:export (main))
(define-syntax get-field
@@ -161,31 +162,6 @@
(string->number (car args)))))
todo-list)))
-(define-class <view> ())
-
-(define-generic print-view)
-(define-generic sort-view)
-(define-generic filter-view)
-
-(define-method (sort-view (v <view>) l)
- l)
-
-(define-method (filter-view (v <view>))
- (lambda (elm)
- (and (assq 'id elm) (assq 'content elm))))
-
-(define-method (print-view (v <view>))
- (for-each
- (lambda (item)
- (let ((id (let ((field (assq 'id item)))
- (and field (cdr field))))
- (content
- (let ((field (assq 'content item)))
- (and field (cdr field)))))
- (if #t (format #t "~2d ~a~%" id content))))
- (filter (filter-view v)
- (sort-view v todo-list))))
-
(define-class <todo-view> (<view>))
(define-method (sort-view (v <todo-view>) l)
@@ -193,8 +169,13 @@
(define-method (filter-view (v <todo-view>))
(lambda (elm)
- (let ((id (assq 'id elm)))
- (and id (> (cdr id) 4)))))
+ (let ((state (assq 'state elm)))
+ (and state (not (string= (cdr state) "done"))))))
+
+(define-method (print-item (v <todo-view>) item)
+ (format #t "~a ~a~%"
+ (cdr (assq 'state item))
+ (cdr (assq 'content item))))
(define-view default
"Default todo-list view, show only the title."
@@ -241,4 +222,4 @@
(car view) (procedure-documentation (cdr view))))
view-list))))
- (print-view (make <todo-view>)))
+ (print-view (make <todo-view> #:todo-list todo-list)))