aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-24 23:48:06 -0800
committerFuwn <[email protected]>2023-12-24 23:48:06 -0800
commit48a6a16f1aa546f6bbdf80efbc5e72aa783acf4b (patch)
tree7520ee7af6d7b11e00f1cf103b36baa24c5a40be /src
parentfeat(error): route predict (diff)
downloaddue.moe-48a6a16f1aa546f6bbdf80efbc5e72aa783acf4b.tar.xz
due.moe-48a6a16f1aa546f6bbdf80efbc5e72aa783acf4b.zip
refactor(error): move closest path to module
Diffstat (limited to 'src')
-rw-r--r--src/lib/Error/path.ts17
-rw-r--r--src/routes/+error.svelte38
2 files changed, 29 insertions, 26 deletions
diff --git a/src/lib/Error/path.ts b/src/lib/Error/path.ts
new file mode 100644
index 00000000..50874a12
--- /dev/null
+++ b/src/lib/Error/path.ts
@@ -0,0 +1,17 @@
+import levenshtein from 'fast-levenshtein';
+
+export const closest = (path: string, suggestions: string[]) => {
+ let closest = '';
+ let lowestDistance = Infinity;
+
+ suggestions.forEach((suggestion) => {
+ const distance = levenshtein.get(path, suggestion);
+
+ if (distance < lowestDistance) {
+ lowestDistance = distance;
+ closest = suggestion;
+ }
+ });
+
+ return closest;
+};
diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte
index a5cd1dee..584d4ec0 100644
--- a/src/routes/+error.svelte
+++ b/src/routes/+error.svelte
@@ -1,32 +1,18 @@
<script lang="ts">
import { browser } from '$app/environment';
- import levenshtein from 'fast-levenshtein';
+ import { closest } from '$lib/Error/path';
- $: suggestion = (() => {
- let closest = '';
- let lowestDistance = Infinity;
-
- [
- 'birthdays',
- 'completed',
- 'schedule',
- 'settings',
- 'tools',
- 'updates',
- 'user',
- 'wrapped',
- '...'
- ].forEach((path) => {
- let distance = levenshtein.get(browser ? window.location.pathname : '...', path);
-
- if (distance < lowestDistance) {
- lowestDistance = distance;
- closest = path;
- }
- });
-
- return closest;
- })();
+ $: suggestion = closest(browser ? window.location.pathname : '...', [
+ 'birthdays',
+ 'completed',
+ 'schedule',
+ 'settings',
+ 'tools',
+ 'updates',
+ 'user',
+ 'wrapped',
+ '...'
+ ]);
</script>
<p>Page not found.</p>