絵文字ピッカーでAND検索に対応

This commit is contained in:
syuilo 2020-11-07 21:28:28 +09:00
parent 30c9c3739f
commit 80c490a18b
1 changed files with 90 additions and 46 deletions

View File

@ -190,6 +190,26 @@ export default defineComponent({
const exactMatch = emojis.find(e => e.name === q);
if (exactMatch) matches.add(exactMatch);
if (q.includes(' ')) { // AND
const keywords = q.split(' ');
//
for (const emoji of emojis) {
if (keywords.every(keyword => emoji.name.includes(keyword))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
if (matches.size >= max) return matches;
//
for (const emoji of emojis) {
if (keywords.every(keyword => emoji.name.includes(keyword) || emoji.aliases.some(alias => alias.includes(keyword)))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
} else {
for (const emoji of emojis) {
if (emoji.name.startsWith(q)) {
matches.add(emoji);
@ -220,6 +240,8 @@ export default defineComponent({
if (matches.size >= max) break;
}
}
}
return matches;
};
@ -231,6 +253,26 @@ export default defineComponent({
const exactMatch = emojis.find(e => e.name === q);
if (exactMatch) matches.add(exactMatch);
if (q.includes(' ')) { // AND
const keywords = q.split(' ');
//
for (const emoji of emojis) {
if (keywords.every(keyword => emoji.name.includes(keyword))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
if (matches.size >= max) return matches;
//
for (const emoji of emojis) {
if (keywords.every(keyword => emoji.name.includes(keyword) || emoji.keywords.some(alias => alias.includes(keyword)))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
} else {
for (const emoji of emojis) {
if (emoji.name.startsWith(q)) {
matches.add(emoji);
@ -261,6 +303,8 @@ export default defineComponent({
if (matches.size >= max) break;
}
}
}
return matches;
};