This commit is contained in:
Adam Porter 2020-11-22 13:55:03 -06:00
parent 049485b813
commit 919f7fc010

View file

@ -826,25 +826,26 @@ PREDICATES should be the value of `org-ql-predicates'."
(--map (plist-get (cdr it) :normalizers)) (--map (plist-get (cdr it) :normalizers))
(-flatten-n 1)))) (-flatten-n 1))))
(fset 'org-ql--normalize-query (fset 'org-ql--normalize-query
`(lambda (query) (byte-compile
"FIXME" `(lambda (query)
(cl-labels ((rec (element) "FIXME"
(pcase element (cl-labels ((rec (element)
(`(or . ,clauses) `(or ,@(mapcar #'rec clauses))) (pcase element
(`(and . ,clauses) `(and ,@(mapcar #'rec clauses))) (`(or . ,clauses) `(or ,@(mapcar #'rec clauses)))
(`(not . ,clauses) `(not ,@(mapcar #'rec clauses))) (`(and . ,clauses) `(and ,@(mapcar #'rec clauses)))
(`(when ,condition . ,clauses) `(when ,(rec condition) (`(not . ,clauses) `(not ,@(mapcar #'rec clauses)))
,@(mapcar #'rec clauses))) (`(when ,condition . ,clauses) `(when ,(rec condition)
(`(unless ,condition . ,clauses) `(unless ,(rec condition) ,@(mapcar #'rec clauses)))
,@(mapcar #'rec clauses))) (`(unless ,condition . ,clauses) `(unless ,(rec condition)
;; TODO: Combine (regexp) when appropriate (i.e. inside an OR, not an AND). ,@(mapcar #'rec clauses)))
((pred stringp) `(regexp ,element)) ;; TODO: Combine (regexp) when appropriate (i.e. inside an OR, not an AND).
((pred stringp) `(regexp ,element))
,@normalizer-patterns ,@normalizer-patterns
;; Any other form: passed through unchanged. ;; Any other form: passed through unchanged.
(_ element)))) (_ element))))
(rec query)))))) (rec query)))))))
(defun org-ql--define-preamble-fn (predicates) (defun org-ql--define-preamble-fn (predicates)
"Define function `org-ql--query-preamble' for PREDICATES. "Define function `org-ql--query-preamble' for PREDICATES.