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."