summaryrefslogtreecommitdiff
path: root/src/word_db.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-03-25 20:35:57 +0000
committerMaxime Coste <frrrwww@gmail.com>2016-03-25 20:38:27 +0000
commitc756f8f12465265e95aaab215260c79a7034e429 (patch)
tree313f2a01671b260d10d891679048532b8f4fea68 /src/word_db.cc
parent15b241b9428d25123db4d8bd8cd977fb991735f6 (diff)
Move UsedLetters with RankedMatch
Diffstat (limited to 'src/word_db.cc')
-rw-r--r--src/word_db.cc44
1 files changed, 1 insertions, 43 deletions
diff --git a/src/word_db.cc b/src/word_db.cc
index ed54910a..65685a39 100644
--- a/src/word_db.cc
+++ b/src/word_db.cc
@@ -8,35 +8,8 @@
namespace Kakoune
{
-UsedLetters used_letters(StringView str)
-{
- UsedLetters res;
- for (auto c : str)
- {
- if (c >= 'a' and c <= 'z')
- res.set(c - 'a');
- else if (c >= 'A' and c <= 'Z')
- res.set(c - 'A' + 26);
- else if (c == '_')
- res.set(53);
- else if (c == '-')
- res.set(54);
- else
- res.set(63);
- }
- return res;
-}
-
-constexpr UsedLetters upper_mask = 0xFFFFFFC000000;
-
-UsedLetters to_lower(UsedLetters letters)
-{
- return ((letters & upper_mask) >> 26) | (letters & (~upper_mask));
-}
-
using WordList = Vector<StringView>;
-
static WordList get_words(StringView content)
{
WordList res;
@@ -155,11 +128,6 @@ int WordDB::get_word_occurences(StringView word) const
RankedMatchList WordDB::find_matching(StringView query)
{
- auto matches = [](UsedLetters query, UsedLetters letters)
- {
- return (query & letters) == query;
- };
-
update_db();
const UsedLetters letters = used_letters(query);
RankedMatchList res;
@@ -171,12 +139,7 @@ RankedMatchList WordDB::find_matching(StringView query)
continue;
}
- UsedLetters word_letters = word.second.letters;
- if (not matches(to_lower(letters), to_lower(word_letters)) or
- not matches(letters & upper_mask, word_letters & upper_mask))
- continue;
-
- if (RankedMatch match{word.first, query})
+ if (RankedMatch match{word.first, word.second.letters, query, letters})
res.push_back(match);
}
@@ -219,9 +182,4 @@ UnitTest test_word_db{[]()
kak_assert(eq(res, WordList{ "allo" COMMA "mutch" COMMA "retchou" COMMA "tchou" }));
}};
-UnitTest test_used_letters{[]()
-{
- kak_assert(used_letters("abcd") == to_lower(used_letters("abcdABCD")));
-}};
-
}