aboutsummaryrefslogtreecommitdiff
path: root/openrussian.lua
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2019-03-16 18:38:44 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2019-03-16 18:38:44 +0100
commit6618b77947f29748dd65af62c51c47ce94f87860 (patch)
tree1d94f414a0c41ab082aeab087f3abab942acce98 /openrussian.lua
parent7e2ff6435cd1a5a504eab34823a4f63c7a46df1f (diff)
downloadopenrussian-cli-6618b77947f29748dd65af62c51c47ce94f87860.tar.gz
allow lookups containing accentuation character (Unicode 0x0301)
* they are simply ignored * in openrussian.lua, we delegate Unicode handling to SQLite * for Bash completions, we ignore accents during matching but (have to) preserve them in the prefix -- see comments. * also properly escape SQL strings preserving accidental code injection. This means we do not necessarily have to port openrussian-completion.bash to Lua.
Diffstat (limited to 'openrussian.lua')
-rwxr-xr-xopenrussian.lua5
1 files changed, 4 insertions, 1 deletions
diff --git a/openrussian.lua b/openrussian.lua
index 3ca060e..4b37ea3 100755
--- a/openrussian.lua
+++ b/openrussian.lua
@@ -202,9 +202,12 @@ function format.other(word_id, accented)
map_accented(accented), '\n')
end
+-- NOTE: This lets SQL strip the accent char from the input, which
+-- allows users to cut and paste from generated output while we don't
+-- have to deal with Unicode in Lua.
local cur = assert(con:execute(string.format([[
SELECT accented, type, words.id AS word_id
- FROM words WHERE bare = "%s"
+ FROM words WHERE bare = REPLACE("%s", CHAR(0x0301), "")
]], search_word)))
local row = cur:fetch({}, "a")
cur:close()