Change: (--query-preamble) Use pcase for clarity

This commit is contained in:
Adam Porter 2019-07-20 22:57:58 -05:00
parent 0fdfa65bef
commit a56d173eb5

View file

@ -261,44 +261,44 @@ a list of defined `org-ql' sorting methods: `date', `deadline',
When QUERY has a clause with a corresponding preamble, and it's When QUERY has a clause with a corresponding preamble, and it's
appropriate to use one (i.e. the clause is not in an `or'), appropriate to use one (i.e. the clause is not in an `or'),
replace the clause with a preamble." replace the clause with a preamble."
(if org-ql-use-preamble (pcase org-ql-use-preamble
(let (org-ql-preamble) ('nil (list query nil))
(cl-labels ((rec (element) (_ (let (org-ql-preamble)
(or (when org-ql-preamble (cl-labels ((rec (element)
;; Only one preamble is allowed (or (when org-ql-preamble
element) ;; Only one preamble is allowed
(pcase element element)
(`(or _) element) (pcase element
(`(regexp . ,regexps) (`(or _) element)
(let* ((regexp (rx-to-string `(or ,@regexps)))) (`(regexp . ,regexps)
(setq org-ql-preamble regexp) (let* ((regexp (rx-to-string `(or ,@regexps))))
;; Return nil (setq org-ql-preamble regexp)
nil)) ;; Return nil
(`(todo . ,(and todo-keywords (guard todo-keywords))) nil))
(let* ((regexps (--map (list 'regexp (`(todo . ,(and todo-keywords (guard todo-keywords)))
(format org-heading-keyword-regexp-format it)) (let* ((regexps (--map (list 'regexp
todo-keywords)) (format org-heading-keyword-regexp-format it))
(regexp (rx-to-string `(or ,@regexps)))) todo-keywords))
(setq org-ql-preamble regexp) (regexp (rx-to-string `(or ,@regexps))))
;; Return nil (setq org-ql-preamble regexp)
nil)) ;; Return nil
(`(level ,num) nil))
(let* ((regexp (rx-to-string `(seq bol (repeat ,num "*") " ")))) (`(level ,num)
(setq org-ql-preamble regexp) (let* ((regexp (rx-to-string `(seq bol (repeat ,num "*") " "))))
nil)) (setq org-ql-preamble regexp)
(`(and . ,rest) nil))
(let ((clauses (mapcar #'rec rest))) (`(and . ,rest)
`(and ,@(-non-nil clauses)))) (let ((clauses (mapcar #'rec rest)))
(_ element))))) `(and ,@(-non-nil clauses))))
(setq query (pcase (mapcar #'rec (list query)) (_ element)))))
((or `(nil) (setq query (pcase (mapcar #'rec (list query))
`((nil)) ((or `(nil)
`((and)) `((nil))
`((or))) `((and))
t) `((or)))
(query (-flatten-n 1 query)))) t)
(list query org-ql-preamble))) (query (-flatten-n 1 query))))
(list query nil))) (list query org-ql-preamble))))))
(defun org-ql--select-cached (&rest args) (defun org-ql--select-cached (&rest args)
"Return results for ARGS and current buffer using cache." "Return results for ARGS and current buffer using cache."