diff options
| author | Fuwn <[email protected]> | 2023-12-24 23:48:06 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-24 23:48:06 -0800 |
| commit | 48a6a16f1aa546f6bbdf80efbc5e72aa783acf4b (patch) | |
| tree | 7520ee7af6d7b11e00f1cf103b36baa24c5a40be /src | |
| parent | feat(error): route predict (diff) | |
| download | due.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.ts | 17 | ||||
| -rw-r--r-- | src/routes/+error.svelte | 38 |
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> |