« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/common-util/sort.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/common-util/sort.js')
-rw-r--r--src/common-util/sort.js6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/common-util/sort.js b/src/common-util/sort.js
index b87ef500..d89fa4cc 100644
--- a/src/common-util/sort.js
+++ b/src/common-util/sort.js
@@ -40,11 +40,15 @@ export function normalizeName(s) {
   // punctuation, with a single typical space, then trim the ends.
   s = s
     .replace(
-      /[\p{Separator}\p{Dash_Punctuation}\p{Connector_Punctuation}]+/gu,
+      /[/\p{Separator}\p{Dash_Punctuation}\p{Connector_Punctuation}]+/gu,
       ' '
     )
     .trim();
 
+  // Zero-prefix sequences of digits (bounded by only select characters),
+  // so lesser-value numbers precede greater.
+  s = s.replace(/(?<=[ ({\[<]|^)\d+(?=[ )}\]>]|$)/g, match => match.padStart(5, '0'));
+
   // Discard anything that isn't a letter, number, space, or apostrophe.
   s = s.replace(/[^\p{Letter}\p{Number} ']/gu, '').trim();