Changeset 14639 in project


Ignore:
Timestamp:
05/15/09 03:10:11 (11 years ago)
Author:
Ivan Raikov
Message:

added ability to filter by multiple fields

Location:
release/4/neuromorpho
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/neuromorpho/neuromorpho.scm

    r14615 r14639  
    4343(define data-dir                  (make-parameter #f))
    4444(define morphology-file           (make-parameter 'S))
    45 (define meta-filter               (make-parameter '("Note" "")))
     45(define meta-filter               (make-parameter '(("Note" ""))))
    4646(define print-meta?               (make-parameter #f))
    4747(define make-index?               (make-parameter #f))
     
    297297                       "download morphology files (Original, Standard or None, default is standard)"
    298298                       (morphology-file (string->symbol (string-upcase arg))))
    299     ,(args:make-option (fm)       (required: "NAME=VALUE")   
     299    ,(args:make-option (fm)       (required: "NAME1=VALUE1[,NAME2=VALUE2 ...]")   
    300300                       "filter pages based on metadata"
    301                        (meta-filter (string-split arg "=")))
     301                       (meta-filter (map (lambda (x) (string-split x "=")) (string-split arg ","))))
    302302    ,(args:make-option (pm)       #:none
    303303                       "print metadata"
     
    351351          (meta-filtered-list
    352352           (if (and (meta-filter) (pair? (meta-filter)))
    353                (let ((k  (car (meta-filter)))
    354                      (rx (regexp (or (and (pair? (cdr (meta-filter))) (cadr (meta-filter))) ""))))
     353               (let ((ks  (map car (meta-filter)))
     354                     (rxs (map (lambda (str) (regexp str #t))
     355                               (map (lambda (x) (or (and (pair? (cdr x)) (cadr x)) "")) (meta-filter)))))
    355356                 (filter (lambda (x)
    356                            (let* ((detail  (alist-ref 'detail (cdr x)))
    357                                   (propval (alist-ref k detail string=?)))
    358                              (string-match rx (or (and (string? propval) propval) ""))))
     357                           (let ((detail  (alist-ref 'detail (cdr x))))
     358                             (every (lambda (k rx)
     359                                      (let ((propval (alist-ref k detail string-ci=?)))
     360                                        (string-match rx (or (and (string? propval) propval) ""))))
     361                                    ks rxs)))
    359362                         data-list))
    360363               data-list)))
  • release/4/neuromorpho/neuromorpho.setup

    r14615 r14639  
    1010
    1111  ; Assoc list with properties for the program:
    12   '((version 1.2)))
     12  '((version 1.3)))
    1313;    (documentation "neuromorpho.html")))
Note: See TracChangeset for help on using the changeset viewer.