branch: externals/denote
commit 2f9ef0cad8c157cb5efb99c9bc4ce1482b257d69
Author: Jean-Philippe Gagné Guay <jeanphilippe...@gmail.com>
Commit: Jean-Philippe Gagné Guay <jeanphilippe...@gmail.com>

    Rename denote-sluggify function
---
 README.org | 28 +++++++++++++++-------------
 denote.el  | 28 ++++++++++++++++++----------
 2 files changed, 33 insertions(+), 23 deletions(-)

diff --git a/README.org b/README.org
index b304f64958..363d4caf3a 100644
--- a/README.org
+++ b/README.org
@@ -5172,16 +5172,17 @@ there will be no corresponding prompt.
   as a helper function to construct ~denote-file-name-slug-functions~
   ([[#h:d1e4eb5b-e7f2-4a3b-9243-e1c653817a4a][Custom sluggification to remove 
non-ASCII characters]]).
 
-#+findex: denote-sluggify
-+ Function ~denote-sluggify~ :: Make =STR= an appropriate slug for
-  file name =COMPONENT= 
([[#h:ae8b19a1-7f67-4258-96b3-370a72c43f4e][Sluggification of file name 
components]]).
-  Apply the function specified in ~denote-file-name-slug-function~ to
-  =COMPONENT= which is one of =title=, =signature=, =keyword=. If the
-  resulting string still contains consecutive =-=,=_= or ~=~, they are
-  replaced by a single occurence of the character, if necessary
-  according to =COMPONENT=. If =COMPONENT= is ~keyword~, remove
-  underscores from =STR= as they are used as the keywords separator in
-  file names.
+#+findex: denote-sluggify-and-apply-rules
++ Function ~denote-sluggify-and-apply-rules~ :: Make =STR= an
+  appropriate slug for file name =COMPONENT=
+  ([[#h:ae8b19a1-7f67-4258-96b3-370a72c43f4e][Sluggification of file name 
components]]). Apply the function
+  specified in ~denote-file-name-slug-function~ to =COMPONENT= which
+  is one of =title=, =signature=, =keyword=. If the resulting string
+  still contains consecutive =-=,=_= or ~=~, they are replaced by a
+  single occurence of the character, if necessary according to
+  =COMPONENT=. If =COMPONENT= is ~keyword~, remove underscores from
+  =STR= as they are used as the keywords separator in file names. Also
+  enforce the rules of the file-naming scheme.
 
 #+findex: denote-sluggify-keyword
 + Function ~denote-sluggify-keyword~ :: Sluggify =STR= while joining
@@ -5191,9 +5192,10 @@ there will be no corresponding prompt.
 + Function ~denote-sluggify-signature~ :: Make =STR= an appropriate
   slug for signatures 
([[#h:ae8b19a1-7f67-4258-96b3-370a72c43f4e][Sluggification of file name 
components]]).
 
-#+findex: denote-sluggify-keywords
-+ Function ~denote-sluggify-keywords~ :: Sluggify =KEYWORDS=, which is
-  a list of strings ([[#h:ae8b19a1-7f67-4258-96b3-370a72c43f4e][Sluggification 
of file name components]]).
+#+findex: denote-sluggify-keywords-and-apply-rules
++ Function ~denote-sluggify-keywords-and-apply-rules~ :: Sluggify
+  =KEYWORDS=, which is a list of strings
+  ([[#h:ae8b19a1-7f67-4258-96b3-370a72c43f4e][Sluggification of file name 
components]]).
 
 #+findex: denote-format-file-name
 + Function ~denote-format-file-name~ :: Format file name. =DIR-PATH=,
diff --git a/denote.el b/denote.el
index 7b2fd0d783..edd30d07dc 100644
--- a/denote.el
+++ b/denote.el
@@ -1060,7 +1060,7 @@ a single one in str, if necessary according to COMPONENT."
       (replace-regexp-in-string
        "-\\{2,\\}" "-" str))))
 
-(defun denote-sluggify (component str)
+(defun denote-sluggify-and-apply-rules (component str)
   "Make STR an appropriate slug for file name COMPONENT.
 
 Apply the function specified in `denote-file-name-slug-function' to
@@ -1068,7 +1068,9 @@ COMPONENT which is one of `title', `signature', 
`keyword'.  If the
 resulting string still contains consecutive -, _, =, or @, they are
 replaced by a single occurence of the character, if necessary according
 to COMPONENT.  If COMPONENT is `keyword', remove underscores from STR as
-they are used as the keywords separator in file names."
+they are used as the keywords separator in file names.
+
+Also enforce the rules of the file-naming scheme."
   (let* ((slug-function (alist-get component denote-file-name-slug-functions))
          (str-slug (cond ((eq component 'title)
                           (funcall (or slug-function #'denote-sluggify-title) 
str))
@@ -1082,6 +1084,9 @@ they are used as the keywords separator in file names."
      (denote--replace-consecutive-token-characters
       (denote--remove-dot-characters str-slug) component) component)))
 
+(defalias 'denote-sluggify 'denote-sluggify-and-apply-rules
+  "Alias for the function `denote-sluggify-and-apply-rules'.")
+
 (defun denote-sluggify-title (str)
   "Make STR an appropriate slug for title."
   (downcase
@@ -1099,12 +1104,15 @@ they are used as the keywords separator in file names."
   (downcase
    (replace-regexp-in-string "[][{}!@#$%^&*()+'\"?,.\|;:~`‘’“”/_ =-]*" "" 
str)))
 
-(defun denote-sluggify-keywords (keywords)
+(defun denote-sluggify-keywords-and-apply-rules (keywords)
   "Sluggify KEYWORDS, which is a list of strings."
   (mapcar (lambda (keyword)
-            (denote-sluggify 'keyword keyword))
+            (denote-sluggify-and-apply-rules 'keyword keyword))
           keywords))
 
+(defalias 'denote-sluggify-keywords 'denote-sluggify-keywords-and-apply-rules
+  "Alias for the function `denote-sluggify-keywords-and-apply-rules'.")
+
 ;;;;; Common helper functions
 
 (defun denote--file-empty-p (file)
@@ -2281,9 +2289,9 @@ is a list of strings.  FILETYPE is one of the values of 
variable
          (signature-value-function (denote--signature-value-function filetype))
          (title-string (if title-value-function (funcall title-value-function 
title) ""))
          (date-string (denote--format-front-matter-date date filetype))
-         (keywords-string (if keywords-value-function (funcall 
keywords-value-function (denote-sluggify-keywords keywords)) ""))
+         (keywords-string (if keywords-value-function (funcall 
keywords-value-function (denote-sluggify-keywords-and-apply-rules keywords)) 
""))
          (id-string (if id-value-function (funcall id-value-function id) ""))
-         (signature-string (if signature-value-function (funcall 
signature-value-function (denote-sluggify 'signature signature)) ""))
+         (signature-string (if signature-value-function (funcall 
signature-value-function (denote-sluggify-and-apply-rules 'signature 
signature)) ""))
          (new-front-matter (if fm (format fm title-string date-string 
keywords-string id-string signature-string) "")))
     ;; Remove lines with empty values if the corresponding component
     ;; is not in `denote-front-matter-components-present-even-if-empty-value'.
@@ -2584,11 +2592,11 @@ which case it is not added to the base file name."
       (cond ((and (eq component 'identifier) id (not (string-empty-p id)))
              (setq file-name (concat file-name "@@" id)))
             ((and (eq component 'title) title (not (string-empty-p title)))
-             (setq file-name (concat file-name "--" (denote-sluggify 'title 
title))))
+             (setq file-name (concat file-name "--" 
(denote-sluggify-and-apply-rules 'title title))))
             ((and (eq component 'keywords) keywords)
-             (setq file-name (concat file-name "__" (denote-keywords-combine 
(denote-sluggify-keywords keywords)))))
+             (setq file-name (concat file-name "__" (denote-keywords-combine 
(denote-sluggify-keywords-and-apply-rules keywords)))))
             ((and (eq component 'signature) signature (not (string-empty-p 
signature)))
-             (setq file-name (concat file-name "==" (denote-sluggify 
'signature signature))))))
+             (setq file-name (concat file-name "==" 
(denote-sluggify-and-apply-rules 'signature signature))))))
     (when (string-empty-p file-name)
       (error "There should be at least one file name component"))
     (setq file-name (concat file-name extension))
@@ -3536,7 +3544,7 @@ identifier.  It also returns nil given a nil date or nil 
keywords."
   (pcase component
     ('title (not (string-empty-p value)))
     ('keywords (not (null value)))
-    ('signature (not (string-empty-p (denote-sluggify 'signature value))))
+    ('signature (not (string-empty-p (denote-sluggify-and-apply-rules 
'signature value))))
     ('date (not (null value)))
     ('identifier (not (string-empty-p value)))))
 

Reply via email to