emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/denote b76eb3e20f 2/4: Merge pull request #21 from ggjp


From: ELPA Syncer
Subject: [elpa] externals/denote b76eb3e20f 2/4: Merge pull request #21 from ggjp/simplify-denote-retrieve
Date: Sun, 3 Jul 2022 01:57:34 -0400 (EDT)

branch: externals/denote
commit b76eb3e20fdd52f1451faeb93c7fea5ac095090e
Merge: 25e86bf0bc c88d9daaf1
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #21 from ggjp/simplify-denote-retrieve
    
    When a note title ends with `)`, denote-retrieve--title-front-matter-regexp 
does not capture the `)`.
---
 denote-dired.el    |  2 +-
 denote-retrieve.el | 80 ++++++++++++++++++++++++------------------------------
 2 files changed, 37 insertions(+), 45 deletions(-)

diff --git a/denote-dired.el b/denote-dired.el
index 23bd006ff9..727de90109 100644
--- a/denote-dired.el
+++ b/denote-dired.el
@@ -284,7 +284,7 @@ TITLE, DATE, KEYWORDS, FILENAME, ID, and FILETYPE are all 
strings
   "Return likely file type of FILE.
 The return value is for `denote--file-meta-header'."
   (pcase (file-name-extension file)
-    ("md" (if (string-match-p "title\\s-*=" (denote-retrieve--value-title file 
0))
+    ("md" (if (string-match-p "title\\s-*=" (denote-retrieve--value-title file 
t))
               'markdown-toml
             'markdown-yaml))
     ("txt" 'text)
diff --git a/denote-retrieve.el b/denote-retrieve.el
index b3479c210d..ec118d7821 100644
--- a/denote-retrieve.el
+++ b/denote-retrieve.el
@@ -32,23 +32,17 @@
 (require 'denote)
 (require 'xref)
 
-(defconst denote-retrieve--title-front-matter-regexp
-  "^\\(?:#\\+\\)?\\(?:title\\)\\s-*[:=]\\s-*[\"']?\\(?1:.*\\b\\)[\"']?"
-  "Regular expression for title key and value.
-The match that needs to be extracted is explicityly marked as
-group 1.")
-
-(defconst denote-retrieve--id-front-matter-regexp
-  
"^.?.?\\b\\(?:identifier\\|[Ii][Dd]\\)\\s-*[:=]\\s-*[\"']?\\(?1:[0-9T]+\\)[\"']?"
-  "Regular expression for identifier key and value.
-The match that needs to be extracted is explicityly marked as
-group 1.")
-
-(defconst denote-retrieve--date-front-matter-regexp
-  "^\\(?:#\\+\\)?\\(?:date\\)\\s-*[:=]\\s-*[\"']?\\(?1:.*\\b]?\\)[\"']?"
-  "Regular expression for date key and value.
-The match that needs to be extracted is explicityly marked as
-group 1.")
+(defconst denote-retrieve--title-front-matter-key-regexp
+  "^\\(?:#\\+\\)?\\(?:title\\)\\s-*[:=]"
+  "Regular expression for title key.")
+
+(defconst denote-retrieve--id-front-matter-key-regexp
+  "^.?.?\\b\\(?:identifier\\|[Ii][Dd]\\)\\s-*[:=]"
+  "Regular expression for identifier key.")
+
+(defconst denote-retrieve--date-front-matter-key-regexp
+  "^\\(?:#\\+\\)?\\(?:date\\)\\s-*[:=]"
+  "Regular expression for date key.")
 
 (defun denote-retrieve--filename-identifier (file)
   "Extract identifier from FILE name."
@@ -58,35 +52,33 @@ group 1.")
         (match-string 0 file))
     (error "Cannot find `%s' as a file" file)))
 
-(defun denote-retrieve--search (regexp &optional group)
-  "Search for REGEXP in the current buffer.
-With optional GROUP match it, else match group 1."
-  (save-excursion
-    (save-restriction
-      (widen)
-      (goto-char (point-min))
-      (re-search-forward regexp nil t 1)
-      (unless (eq (point) (point-min))
-        (match-string-no-properties (or group 1))))))
-
-(defun denote-retrieve--value (file regexp &optional group)
-  "Return REGEXP value from FILE.
-FILE is a note in the variable `denote-directory'.
-
-Optional GROUP is a regexp construct for
-`denote-retrieve--search'."
+(defun denote-retrieve--search (file key-regexp &optional key)
+  "Return the value associated with the KEY-REGEXP key in the
+current buffer from FILE.
+If optional KEY is non-nil, return the key instead."
   (with-temp-buffer
     (insert-file-contents file)
-    (or (denote-retrieve--search regexp group)
-        nil)))
-
-(defun denote-retrieve--value-title (file &optional group)
-  "Return title from FILE, optionally matching regexp GROUP."
-  (denote-retrieve--value file denote-retrieve--title-front-matter-regexp 
group))
-
-(defun denote-retrieve--value-date (file &optional group)
-  "Return date from FILE, optionally matching regexp GROUP."
-  (denote-retrieve--value file denote-retrieve--date-front-matter-regexp 
group))
+    (save-excursion
+      (save-restriction
+        (widen)
+        (goto-char (point-min))
+        (when (re-search-forward key-regexp nil t 1)
+          (if key
+              (match-string-no-properties 0)
+            (let ((trims "[ \t\n\r\"']+"))
+              (string-trim
+               (buffer-substring-no-properties (point) (point-at-eol))
+               trims trims))))))))
+
+(defun denote-retrieve--value-title (file &optional key)
+  "Return title value from FILE.
+If optional KEY is non-nil, return the key instead."
+  (denote-retrieve--search file denote-retrieve--title-front-matter-key-regexp 
key))
+
+(defun denote-retrieve--value-date (file &optional key)
+  "Return date value from FILE.
+If optional KEY is non-nil, return the key instead."
+  (denote-retrieve--search file denote-retrieve--date-front-matter-key-regexp 
key))
 
 (defun denote-retrieve--read-file-prompt ()
   "Prompt for regular file in variable `denote-directory'."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]