Expand DSL so we can check timestamps on specific properties
Trevoke opened this issue · 1 comments
Trevoke commented
OS/platform
Linux
Emacs version and provenance
29 - compiled from source
Org version and provenance
9.7.5 - from elpa
org-ql package version and provenance
0.8.6 - melpa
Description
I would love to be able to write something like this:
;; find all headings with CUSTOM_PROP where the value is a timestamp in the past
(org-ql-search (org-agenda-files)
'(property :CUSTOM_PROP '(ts-active :to :today)))
I know I can write custom code to match presence of CUSTOM_PROP and then do precise validation but I think it would be amazing if I could do this all within org-ql's DSL!
Etc.
No response
alphapapa commented
That's not a bad idea. It would be somewhere more than trivial but less than difficult to implement. I don't expect to have the time to work on this myself anytime soon.
In the meantime, it wouldn't take much code to do this now. Here are a couple of examples:
(org-ql-select BUFFERS
`(when-let ((ts (property :CUSTOM_PROP)))
(ts< (ts-parse-org ts) ,(ts-fill (ts-parse "2024-07-01")))))
;; With a custom predicate:
(org-ql-defpred property-ts< (property greater-ts)
"Docstring."
:body (when-let ((ts-value (org-entry-get nil property)))
(ts< (ts-parse-org ts-value) greater-ts)))
(org-ql-select BUFFERS
`(property-ts< :CUSTOM_PROP ,(ts-fill (ts-parse "2024-07-01"))))