summaryrefslogtreecommitdiffstats
path: root/mpd.scm
blob: 74d297ba1f17f3d495cc34bd2c3dee9699bfeff1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(define-structure mpd (export query)
  (open scheme-with-scsh)
  (begin
    (define-syntax query
      (syntax-rules ()
        ((_ a)
         (mpd-query-1 `a))))

    (define (mpd-query-equals params)
      (apply format #f "~s == ~s" params))

    (define (mpd-query-and params)
      (format #f "~a AND ~a"
              (mpd-query-1 (car params))
              (mpd-query-1 (cadr params))))

    (define (mpd-query-1 query)
      (format #f "(~a)"
              (let ((op (car query)))
                (case op
                  ('= (mpd-query-equals (cdr query)))
                  ('and (mpd-query-and (cdr query)))))))))