branch: externals/denote-sequence
commit 5f63137559d5a1c3fead0bdf22d172b078b97a8b
Author: Protesilaos Stavrou <[email protected]>
Commit: Protesilaos Stavrou <[email protected]>

    Rewrite denote-sequence-make-conversion and update its test
---
 denote-sequence.el            | 24 +++++++++---------------
 tests/denote-sequence-test.el | 40 ++++++++++++++++++++--------------------
 2 files changed, 29 insertions(+), 35 deletions(-)

diff --git a/denote-sequence.el b/denote-sequence.el
index 7e699bc85c..479fe097ae 100644
--- a/denote-sequence.el
+++ b/denote-sequence.el
@@ -418,24 +418,18 @@ If SEQUENCE conforms with 
`denote-sequence-alphanumeric-p', return it as-is."
                              parts)))
       (denote-sequence-join converted-parts target-scheme))))
 
-;; TODO 2026-03-24: Add support for the `alphanumeric-delimited'.
-(defun denote-sequence-make-conversion (string &optional string-is-sequence)
-  "Convert STRING to its counterpart sequencing scheme.
-If STRING-IS-SEQUENCE then assume STRING to be a complete sequence, in
-which case convert the entirety of it.  Also see `denote-sequence-scheme'."
+(defun denote-sequence-make-conversion (string target-scheme &optional 
string-is-partial-sequence)
+  "Convert STRING to the given sequencing TARGET-SCHEME.
+With optional STRING-IS-PARTIAL-SEQUENCE interpret STRING accordingly."
   (cond
-   ((and string-is-sequence (denote-sequence-alphanumeric-p string))
+   (string-is-partial-sequence
+    (if (eq target-scheme 'numeric)
+        (denote-sequence--alpha-to-number string)
+      (denote-sequence--number-to-alpha string)))
+   ((eq target-scheme 'numeric)
     (denote-sequence--alpha-to-number-complete string))
-   ((and string-is-sequence (denote-sequence-numeric-p string))
-    (denote-sequence--number-to-alpha-complete string))
-   ((denote-sequence--alphanumeric-partial-p string)
-    (denote-sequence--alpha-to-number string))
-   ((denote-sequence--numeric-partial-p string)
-    (denote-sequence--number-to-alpha string))
    (t
-    (if string-is-sequence
-        (error "String `%s' did not pass `denote-sequence-p'" string)
-      (error "The `%s' must not contain both numbers and letters" string)))))
+    (denote-sequence--number-to-alpha-complete string target-scheme))))
 
 (define-obsolete-function-alias
   'denote-sequence-increment
diff --git a/tests/denote-sequence-test.el b/tests/denote-sequence-test.el
index 224b0b3230..bfae59cfba 100644
--- a/tests/denote-sequence-test.el
+++ b/tests/denote-sequence-test.el
@@ -291,26 +291,26 @@ function `denote-sequence-get-relative'."
 
 (ert-deftest dst-denote-sequence-make-conversion ()
   "Test that `denote-sequence-make-conversion' converts from alpha to numeric 
and vice versa."
-  (should (string= (denote-sequence-make-conversion "3") "c"))
-  (should (string= (denote-sequence-make-conversion "18") "r"))
-  (should (string= (denote-sequence-make-conversion "26") "z"))
-  (should (string= (denote-sequence-make-conversion "27") "za"))
-  (should (string= (denote-sequence-make-conversion "130") "zzzzz"))
-  (should (string= (denote-sequence-make-conversion "131") "zzzzza"))
-  (should (string= (denote-sequence-make-conversion "c") "3"))
-  (should (string= (denote-sequence-make-conversion "r") "18"))
-  (should (string= (denote-sequence-make-conversion "z") "26"))
-  (should (string= (denote-sequence-make-conversion "za") "27"))
-  (should (string= (denote-sequence-make-conversion "zzzzz") "130"))
-  (should (string= (denote-sequence-make-conversion "zzzzza") "131"))
-  (should (string= (denote-sequence-make-conversion "1=1=2" 
:string-is-sequence) "1a2"))
-  (should (string= (denote-sequence-make-conversion "1a2" :string-is-sequence) 
"1=1=2"))
-  (should (string= (denote-sequence-make-conversion "1=27=2=55" 
:string-is-sequence) "1za2zzc"))
-  (should (string= (denote-sequence-make-conversion "1za2zzc" 
:string-is-sequence) "1=27=2=55"))
-  (should (string= (denote-sequence-make-conversion "1=1=2=2=4=1" 
:string-is-sequence) "1a2b4a"))
-  (should (string= (denote-sequence-make-conversion "1a2b4a" 
:string-is-sequence) "1=1=2=2=4=1"))
-  (should-error (denote-sequence-make-conversion "111=a" :string-is-sequence))
-  (should-error (denote-sequence-make-conversion "a1" :string-is-sequence)))
+  (should (string= (denote-sequence-make-conversion "3" 'alphanumeric 
:string-is-partial-sequence) "c"))
+  (should (string= (denote-sequence-make-conversion "18" 'alphanumeric 
:string-is-partial-sequence) "r"))
+  (should (string= (denote-sequence-make-conversion "26" 'alphanumeric 
:string-is-partial-sequence) "z"))
+  (should (string= (denote-sequence-make-conversion "27" 'alphanumeric 
:string-is-partial-sequence) "za"))
+  (should (string= (denote-sequence-make-conversion "130" 'alphanumeric 
:string-is-partial-sequence) "zzzzz"))
+  (should (string= (denote-sequence-make-conversion "131" 'alphanumeric 
:string-is-partial-sequence) "zzzzza"))
+  (should (string= (denote-sequence-make-conversion "c" 'numeric 
:string-is-partial-sequence) "3"))
+  (should (string= (denote-sequence-make-conversion "r" 'numeric 
:string-is-partial-sequence) "18"))
+  (should (string= (denote-sequence-make-conversion "z" 'numeric 
:string-is-partial-sequence) "26"))
+  (should (string= (denote-sequence-make-conversion "za" 'numeric 
:string-is-partial-sequence) "27"))
+  (should (string= (denote-sequence-make-conversion "zzzzz" 'numeric 
:string-is-partial-sequence) "130"))
+  (should (string= (denote-sequence-make-conversion "zzzzza" 'numeric 
:string-is-partial-sequence) "131"))
+  (should (string= (denote-sequence-make-conversion "1=1=2" 'alphanumeric) 
"1a2"))
+  (should (string= (denote-sequence-make-conversion "1a2" 'numeric) "1=1=2"))
+  (should (string= (denote-sequence-make-conversion "1=27=2=55" 'alphanumeric) 
"1za2zzc"))
+  (should (string= (denote-sequence-make-conversion "1=27=2=55" 
'alphanumeric-delimited) "1=za2zzc"))
+  (should (string= (denote-sequence-make-conversion "1za2zzc" 'numeric) 
"1=27=2=55"))
+  (should (string= (denote-sequence-make-conversion "1=1=2=2=4=1" 
'alphanumeric) "1a2b4a"))
+  (should (string= (denote-sequence-make-conversion "1=1=2=2=4=1" 
'alphanumeric-delimited) "1=a2b=4a"))
+  (should (string= (denote-sequence-make-conversion "1a2b4a" 'numeric) 
"1=1=2=2=4=1")))
 
 (ert-deftest dst-denote-sequence-increment-partial ()
   "Test that `denote-sequence-increment-partial' does the right thing."

Reply via email to