WIP
This commit is contained in:
parent
0d0b6bb808
commit
45a0afd3f1
1 changed files with 28 additions and 28 deletions
26
org-ql.el
26
org-ql.el
|
|
@ -249,14 +249,14 @@ Multiple predicates are combined with BOOLEAN."
|
|||
|
||||
;;;;; Predicate definition
|
||||
|
||||
(defvar org-ql-preambles nil)
|
||||
(defvar org-ql-normalizers nil)
|
||||
(defvar org-ql-defpred-defer nil)
|
||||
(defvar org-ql-predicate-list nil)
|
||||
|
||||
(defun org-ql--define-normalizers (normalizers)
|
||||
"FIXME"
|
||||
(setf normalizers (mapcar #'car (delq nil normalizers)))
|
||||
(defun org-ql--define-normalize-query (predicates)
|
||||
"Define function `org-ql--normalize-query' for PREDICATES.
|
||||
PREDICATES should be the value of `org-ql-predicates'."
|
||||
(let ((normalizer-patterns (->> predicates
|
||||
(--map (plist-get (cdr it) :normalizers))
|
||||
(-flatten-n 1))))
|
||||
(fset 'org-ql--normalize-query
|
||||
`(lambda (query)
|
||||
"FIXME"
|
||||
|
|
@ -272,11 +272,11 @@ Multiple predicates are combined with BOOLEAN."
|
|||
;; TODO: Combine (regexp) when appropriate (i.e. inside an OR, not an AND).
|
||||
((pred stringp) `(regexp ,element))
|
||||
|
||||
,@normalizers
|
||||
,@normalizer-patterns
|
||||
|
||||
;; Any other form: passed through unchanged.
|
||||
(_ element))))
|
||||
(rec query)))))
|
||||
(rec query))))))
|
||||
|
||||
(defun org-ql--define-preamble-fn (predicates)
|
||||
"FIXME"
|
||||
|
|
@ -363,9 +363,9 @@ match."
|
|||
`(:name ,',name :aliases ,',aliases :fn ,',fn-name :docstring ,,docstring :args ,',args
|
||||
:normalizers ,',normalizers :preambles ,',preambles))
|
||||
(unless org-ql-defpred-defer
|
||||
(org-ql--define-normalizers (--map (plist-get it :normalizers) (mapcar #'cdr org-ql-predicate-list)))
|
||||
(org-ql--define-normalize-query (reverse org-ql-predicates))
|
||||
;; NOTE: Reversing is important!
|
||||
(org-ql--define-preamble-fn (reverse org-ql-predicate-list))
|
||||
(org-ql--define-preamble-fn (reverse org-ql-predicates))
|
||||
(org-ql--def-plain-query-fn))
|
||||
(cl-defun ,fn-name ,args ,docstring ,predicate)))))
|
||||
|
||||
|
|
@ -2070,10 +2070,10 @@ of the line after the heading."
|
|||
;; Predicates defined: stop deferring and call functions to process them.
|
||||
(cl-eval-when (compile load eval)
|
||||
(setf org-ql-defpred-defer nil)
|
||||
;; FIXME: Make `org-ql--define-normalizers' take `org-ql-predicate-list' as its argument.
|
||||
(org-ql--define-normalizers (--map (plist-get it :normalizers) (mapcar #'cdr org-ql-predicate-list)))
|
||||
;; FIXME: Make `org-ql--define-normalize-query' take `org-ql-predicates' as its argument.
|
||||
(org-ql--define-normalize-query (reverse org-ql-predicates))
|
||||
;; NOTE: Reversing is important!
|
||||
(org-ql--define-preamble-fn (reverse org-ql-predicate-list))
|
||||
(org-ql--define-preamble-fn (reverse org-ql-predicates))
|
||||
(org-ql--def-plain-query-fn))
|
||||
|
||||
;;;;; Sorting
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue