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
|
;;;;; Predicate definition
|
||||||
|
|
||||||
(defvar org-ql-preambles nil)
|
|
||||||
(defvar org-ql-normalizers nil)
|
|
||||||
(defvar org-ql-defpred-defer nil)
|
(defvar org-ql-defpred-defer nil)
|
||||||
(defvar org-ql-predicate-list nil)
|
|
||||||
|
|
||||||
(defun org-ql--define-normalizers (normalizers)
|
(defun org-ql--define-normalize-query (predicates)
|
||||||
"FIXME"
|
"Define function `org-ql--normalize-query' for PREDICATES.
|
||||||
(setf normalizers (mapcar #'car (delq nil normalizers)))
|
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
|
(fset 'org-ql--normalize-query
|
||||||
`(lambda (query)
|
`(lambda (query)
|
||||||
"FIXME"
|
"FIXME"
|
||||||
|
|
@ -272,11 +272,11 @@ Multiple predicates are combined with BOOLEAN."
|
||||||
;; TODO: Combine (regexp) when appropriate (i.e. inside an OR, not an AND).
|
;; TODO: Combine (regexp) when appropriate (i.e. inside an OR, not an AND).
|
||||||
((pred stringp) `(regexp ,element))
|
((pred stringp) `(regexp ,element))
|
||||||
|
|
||||||
,@normalizers
|
,@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)
|
||||||
"FIXME"
|
"FIXME"
|
||||||
|
|
@ -363,9 +363,9 @@ match."
|
||||||
`(:name ,',name :aliases ,',aliases :fn ,',fn-name :docstring ,,docstring :args ,',args
|
`(:name ,',name :aliases ,',aliases :fn ,',fn-name :docstring ,,docstring :args ,',args
|
||||||
:normalizers ,',normalizers :preambles ,',preambles))
|
:normalizers ,',normalizers :preambles ,',preambles))
|
||||||
(unless org-ql-defpred-defer
|
(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!
|
;; 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))
|
(org-ql--def-plain-query-fn))
|
||||||
(cl-defun ,fn-name ,args ,docstring ,predicate)))))
|
(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.
|
;; Predicates defined: stop deferring and call functions to process them.
|
||||||
(cl-eval-when (compile load eval)
|
(cl-eval-when (compile load eval)
|
||||||
(setf org-ql-defpred-defer nil)
|
(setf org-ql-defpred-defer nil)
|
||||||
;; FIXME: Make `org-ql--define-normalizers' take `org-ql-predicate-list' as its argument.
|
;; FIXME: Make `org-ql--define-normalize-query' take `org-ql-predicates' as its argument.
|
||||||
(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!
|
;; 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))
|
(org-ql--def-plain-query-fn))
|
||||||
|
|
||||||
;;;;; Sorting
|
;;;;; Sorting
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue