Fix: (org-ql-regexp-part-ts-date) Allow punctuation in day-of-week

Fixes <https://github.com/alphapapa/org-ql/issues/432>.  Closes
<https://github.com/alphapapa/org-ql/pull/435>.

Reported-by: Florian D. <https://github.com/neurolit>
This commit is contained in:
Adam Porter 2024-06-26 10:52:31 -05:00
parent 914e64746f
commit ffc3477013
5 changed files with 76 additions and 52 deletions

View file

@ -557,6 +557,7 @@ Simple links may also be written manually in either sexp or non-sexp form, like:
*Fixes*
+ Timestamps with internal time ranges (e.g. ~<2024-06-26 10:00-11:00>~) are matched for simple queries. (This support is not yet comprehensive, e.g. a query that depends on the specific inner time range may not behave as expected. Previously such timestamps were not matched at all. See [[https://github.com/alphapapa/org-ql/pull/237][#237]] and [[https://github.com/alphapapa/org-ql/issues/371][#371]]. Thanks to [[https://github.com/yantar92][Ihor Radchenko]].)
+ Timestamps with day-of-the-week abbreviations are matched more flexibly (allowing, e.g. a period in French locales). (See [[https://github.com/alphapapa/org-ql/discussions/429][#429]], [[https://github.com/alphapapa/org-ql/issues/432][#432]]. Thanks to [[https://github.com/neurolit][Florian D.]] for reporting.)
+ Command ~org-ql-search~ did not narrow properly when called interactively.
** 0.8.6

View file

@ -157,10 +157,9 @@ This list should not contain any duplicates."))
(defvar org-ql-regexp-part-ts-date
(rx (repeat 4 digit) "-" (repeat 2 digit) "-" (repeat 2 digit)
;; Day of week
(optional " " (1+ alpha)))
(optional " " (1+ (or alpha punct))))
"Matches the inner, date part of an Org timestamp, both active and inactive.
Also matches optional day-of-week. Used to build other timestamp
regexps.")
Used to build other timestamp regexps.")
(defvar org-ql-regexp-part-ts-repeaters
;; Repeaters (not sure if the colon is necessary, but it's in the org.el one)

View file

@ -1089,6 +1089,11 @@ File: README.info, Node: 087-pre, Next: 086, Up: Changelog
(https://github.com/alphapapa/org-ql/pull/237) and #371
(https://github.com/alphapapa/org-ql/issues/371). Thanks to Ihor
Radchenko (https://github.com/yantar92).)
• Timestamps with day-of-the-week abbreviations are matched more
flexibly (allowing, e.g. a period in French locales). (See #429
(https://github.com/alphapapa/org-ql/discussions/429), #432
(https://github.com/alphapapa/org-ql/issues/432). Thanks to
Florian D. (https://github.com/neurolit) for reporting.)
• Command org-ql-search did not narrow properly when called
interactively.
@ -2020,47 +2025,47 @@ Node: Links38911
Node: Tips39598
Node: Changelog39922
Node: 087-pre40844
Node: 08641544
Node: 08541782
Node: 08442438
Node: 08342890
Node: 08243231
Node: 08143624
Node: 0844045
Node: 07446769
Node: 07346992
Node: 07247726
Node: 07148647
Node: 0749458
Node: 06352324
Node: 06252857
Node: 06153164
Node: 0653734
Node: 05256790
Node: 05157092
Node: 0557517
Node: 04959048
Node: 04859330
Node: 04759679
Node: 04660088
Node: 04560496
Node: 04460857
Node: 04361216
Node: 04261419
Node: 04161580
Node: 0461827
Node: 03265928
Node: 03166331
Node: 0366528
Node: 02369828
Node: 02270062
Node: 02170342
Node: 0270547
Node: 0174625
Node: Notes74726
Node: Comparison with Org Agenda searches74888
Node: org-sidebar75777
Node: License76056
Node: 08641879
Node: 08542117
Node: 08442773
Node: 08343225
Node: 08243566
Node: 08143959
Node: 0844380
Node: 07447104
Node: 07347327
Node: 07248061
Node: 07148982
Node: 0749793
Node: 06352659
Node: 06253192
Node: 06153499
Node: 0654069
Node: 05257125
Node: 05157427
Node: 0557852
Node: 04959383
Node: 04859665
Node: 04760014
Node: 04660423
Node: 04560831
Node: 04461192
Node: 04361551
Node: 04261754
Node: 04161915
Node: 0462162
Node: 03266263
Node: 03166666
Node: 0366863
Node: 02370163
Node: 02270397
Node: 02170677
Node: 0270882
Node: 0174960
Node: Notes75061
Node: Comparison with Org Agenda searches75223
Node: org-sidebar76112
Node: License76391

End Tag Table

View file

@ -17,6 +17,12 @@ DEADLINE: <2024-06-25 Tue 08:00-09:00 ++7d>
** Multi-timestamp, without repeater
<2024-06-25 Tue 08:00>--<2024-06-26 Wed 08:00>
* Day-of-week abbreviations
** French
<2024-07-12 Fri>
* Canary
/This entry should never be matched./

View file

@ -1700,16 +1700,16 @@ with keyword arg NOW in PLIST."
(1- (cl-loop while (re-search-forward org-heading-regexp nil t)
sum 1))))))
(org-ql-it "without specified timestamp"
(org-ql-it "without :with-time"
(org-ql-expect ('(ts-active))
'("Single-timestamp, without repeater" "Single-timestamp, with repeater (deadline)" "Multi-timestamp, without repeater")))
(org-ql-it "with specified timestamps"
(org-ql-expect ('(ts-active :on "2024-06-25"))
'("Single-timestamp, without repeater" "Single-timestamp, with repeater (deadline)" "Multi-timestamp, without repeater" "French")))
(org-ql-it ":with-time t"
(org-ql-expect ('(ts-active :on "2024-06-25" :with-time t))
'("Single-timestamp, without repeater" "Single-timestamp, with repeater (deadline)" "Multi-timestamp, without repeater"))
(org-ql-expect ('(ts-active :on "2024-06-26"))
(org-ql-expect ('(ts-active :on "2024-06-26" :with-time t))
'("Multi-timestamp, without repeater")))
(org-ql-it "with specified time values"
(org-ql-expect ('(ts-active :to "2024-06-25 09:00"))
(org-ql-it ":with-time t and with specified time value in :to"
(org-ql-expect ('(ts-active :to "2024-06-25 09:00" :with-time t))
'("Single-timestamp, without repeater" "Single-timestamp, with repeater (deadline)" "Multi-timestamp, without repeater"))
;; FIXME: The test below fails because timestamps with
;; ranges are not yet parsed into multiple timestamps and
@ -1856,7 +1856,20 @@ with keyword arg NOW in PLIST."
'("Visit Mars")))
(org-ql-then (:now "2019-07-07")
(org-ql-expect ('(ts :on today))
nil)))))
nil))))
(describe "Day-of-week abbreviations"
(before-each
(setq org-ql-test-buffer (org-ql-test-data-buffer "data-ts.org")
org-ql-test-num-headings (with-current-buffer org-ql-test-buffer
(org-with-wide-buffer
(goto-char (point-min))
;; Exclude the "Canary" heading.
(1- (cl-loop while (re-search-forward org-heading-regexp nil t)
sum 1))))))
(org-ql-it "matches French abbreviations (with trailing period)"
(org-ql-expect ('(ts :on "2024-07-12"))
'("French")))))
(describe "Compound queries"