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

This commit is contained in:
syuilo 2020-11-07 21:28:28 +09:00
parent 30c9c3739f
commit 80c490a18b

View file

@ -190,6 +190,26 @@ export default defineComponent({
const exactMatch = emojis.find(e => e.name === q); const exactMatch = emojis.find(e => e.name === q);
if (exactMatch) matches.add(exactMatch); 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) { for (const emoji of emojis) {
if (emoji.name.startsWith(q)) { if (emoji.name.startsWith(q)) {
matches.add(emoji); matches.add(emoji);
@ -220,6 +240,8 @@ export default defineComponent({
if (matches.size >= max) break; if (matches.size >= max) break;
} }
} }
}
return matches; return matches;
}; };
@ -231,6 +253,26 @@ export default defineComponent({
const exactMatch = emojis.find(e => e.name === q); const exactMatch = emojis.find(e => e.name === q);
if (exactMatch) matches.add(exactMatch); 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) { for (const emoji of emojis) {
if (emoji.name.startsWith(q)) { if (emoji.name.startsWith(q)) {
matches.add(emoji); matches.add(emoji);
@ -261,6 +303,8 @@ export default defineComponent({
if (matches.size >= max) break; if (matches.size >= max) break;
} }
} }
}
return matches; return matches;
}; };