diff options
| author | unwox <me@unwox.com> | 2024-10-15 14:48:16 +0600 |
|---|---|---|
| committer | unwox <me@unwox.com> | 2024-10-15 14:49:36 +0600 |
| commit | 1204496efa2fcd495bd74ba8ca249b7f082f3ba5 (patch) | |
| tree | 57f908c7bae9ff1194ccb68328ec59ef5be00872 /lib | |
| parent | 1520d83acccdcad2d7f87aec073b48d5f4995bf6 (diff) | |
WIP try to fix spelling mistakes in search querie
currently works very slowly and uses a lot of CPU
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/array.fnl | 6 | ||||
| -rw-r--r-- | lib/string.fnl | 29 |
2 files changed, 26 insertions, 9 deletions
diff --git a/lib/array.fnl b/lib/array.fnl index 6dc0780..8b81c5c 100644 --- a/lib/array.fnl +++ b/lib/array.fnl @@ -1,5 +1,9 @@ (import-macros {: reduce} :lib.macro) +(fn sort [a less-fn] + (table.sort a less-fn) + a) + (fn concat [a b] (local copy (fn [a b] @@ -51,4 +55,4 @@ (local join table.concat) -{: concat : diff : unique : flatten : join : contains} +{: sort : concat : diff : unique : flatten : join : contains} diff --git a/lib/string.fnl b/lib/string.fnl index 9ac6edd..ca29da0 100644 --- a/lib/string.fnl +++ b/lib/string.fnl @@ -1,12 +1,25 @@ -(fn split [string] - (accumulate [res [] v _ - (string:gmatch "%S+")] +(local {: must} (require :lib.utils)) + +(fn empty? [str] + (or (= str nil) (= (# str) 0))) + +(fn letters [str] + (assert + (= "string" (type str)) + (string.format "letters(): str must be string, %s given" (type str))) + (var result []) + (for [i 1 (must (luna.utf.len str))] + (table.insert result (must (luna.utf.sub str i 1)))) + result) + +(fn split [str] + (accumulate [res [] v _ (str:gmatch "%S+")] (do (table.insert res v) res))) -(fn ends-with [string end] - (= (string.sub string (- (# end))) end)) +(fn ends-with [str end] + (= (string.sub str (- (# end))) end)) (fn trim [str] (str:match "^%s*(.-)%s*$")) @@ -14,9 +27,9 @@ (fn truncate [str len ellipsis] (if (and (= (type str) "string") (< 0 (# str))) - (if (< (# str) len) + (if (< (must (luna.utf.len str)) len) str - (.. (trim (luna.utf.sub str 1 len)) (or ellipsis "..."))) + (.. (trim (must (luna.utf.sub str 1 len))) (or ellipsis "..."))) "")) -{: split : ends-with : trim : truncate} +{: letters : empty? : split : ends-with : trim : truncate} |
