« get me outta code hell

sugar, wiki-data: simplify re tool bigtime - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/common-util/sugar.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-03-31 09:00:55 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-03-31 09:00:55 -0300
commitef6899009050d9036651162c17a8e7572552c558 (patch)
tree030842051ccb7fd0209d0157929bc8bafecd392b /src/common-util/sugar.js
parenta0924d447a53511c96945873a3ec996b5800d9a9 (diff)
sugar, wiki-data: simplify re tool bigtime
Diffstat (limited to 'src/common-util/sugar.js')
-rw-r--r--src/common-util/sugar.js47
1 files changed, 18 insertions, 29 deletions
diff --git a/src/common-util/sugar.js b/src/common-util/sugar.js
index 4dd34785..c988156c 100644
--- a/src/common-util/sugar.js
+++ b/src/common-util/sugar.js
@@ -418,39 +418,28 @@ export function escapeRegex(string) {
 }
 
 // Adapted from here: https://emnudge.dev/notes/multiline-regex/
+// ...with a lot of changes
 export function re(...args) {
-  let flags = '';
-
-  const fn = (strings, ...substitutions) => {
-    strings = strings
-      .map(str => str.replace(/(?:\/\/.+)/gm, ''))
-      .map(str => str.replace(/\s+/g, ''));
-
-    substitutions = substitutions
-      .map(sub => [sub].flat(Infinity))
-      .map(sub => sub
-        .map(item =>
-          (item instanceof RegExp
-            ? item.source
-            : item.toString())))
-      .map(sub => sub.join(''));
-
-    const source =
-      String.raw({raw: strings}, ...substitutions);
-
-    return new RegExp(source, flags);
-  };
-
-  if (
-    args.length === 1 &&
-    typeof args[0] === 'string' &&
-    args[0].match(/^[a-z]+$/)
-  ) {
+  let flags, parts;
+  if (args.length === 2) {
     flags = args[0];
-    return fn;
+    parts = args[1];
+  } else if (args.length === 1) {
+    flags = '';
+    parts = args[0];
   } else {
-    return fn(...args);
+    throw new Error(`Expected 1 or 2 arguments`);
   }
+
+  const source = parts
+    .flat(Infinity)
+    .map(item =>
+      (item instanceof RegExp
+        ? item.source
+        : item.toString()))
+    .join('');
+
+  return new RegExp(source, flags);
 }
 
 export function splitKeys(key) {