diff options
author | Joris | 2023-09-17 12:23:47 +0200 |
---|---|---|
committer | Joris | 2023-09-17 12:23:47 +0200 |
commit | 1ebc55c72a1a17293bbf4ad86e0177a10a794750 (patch) | |
tree | 5fce0ea3a011ccbae85b0d3927f8ac33099585fb /library/client/lib/search.ts | |
parent | c236facb4d4c277773c83f1a4ee85b48833d7e67 (diff) |
Make app packageable
Diffstat (limited to 'library/client/lib/search.ts')
-rw-r--r-- | library/client/lib/search.ts | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/library/client/lib/search.ts b/library/client/lib/search.ts new file mode 100644 index 0000000..026cb94 --- /dev/null +++ b/library/client/lib/search.ts @@ -0,0 +1,17 @@ +export function match(search: string, ...targets: Array<string | undefined>): boolean { + const formattedTargets = targets + .filter(t => t !== undefined) + .map(format) + + return search.split(/\s+/).every(subSearch => + formattedTargets.some(target => target.includes(format(subSearch))) + ) +} + +export function format(str: string): string { + return unaccent(str.toLowerCase()) +} + +function unaccent(str: string): string { + return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "") +} |