diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-03-25 20:35:57 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-03-25 20:38:27 +0000 |
| commit | c756f8f12465265e95aaab215260c79a7034e429 (patch) | |
| tree | 313f2a01671b260d10d891679048532b8f4fea68 /src/word_db.cc | |
| parent | 15b241b9428d25123db4d8bd8cd977fb991735f6 (diff) | |
Move UsedLetters with RankedMatch
Diffstat (limited to 'src/word_db.cc')
| -rw-r--r-- | src/word_db.cc | 44 |
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"))); -}}; - } |
