Support searching for multiple (2) terms
parent
7e9835dd80
commit
5721f5f694
|
@ -1,6 +1,6 @@
|
||||||
import data from '../../data'
|
import data from '../../data'
|
||||||
|
|
||||||
import {getSanitizedData} from '.'
|
import {getSanitizedData, intersect} from '.'
|
||||||
|
|
||||||
var index = {}
|
var index = {}
|
||||||
var emojisList = {}
|
var emojisList = {}
|
||||||
|
@ -24,38 +24,58 @@ function search(value, maxResults = 75) {
|
||||||
var results = null
|
var results = null
|
||||||
|
|
||||||
if (value.length) {
|
if (value.length) {
|
||||||
var aPool = data.emojis,
|
var values = value.toLowerCase().split(/[\s|,]+/),
|
||||||
aIndex = index,
|
allResults = []
|
||||||
i = 0
|
|
||||||
|
|
||||||
value = value.toLowerCase()
|
if (values.length > 2) {
|
||||||
|
values = [values[0], values[1]]
|
||||||
|
}
|
||||||
|
|
||||||
for (let char of value.split('')) {
|
allResults = values.map((value) => {
|
||||||
i++
|
var aPool = data.emojis,
|
||||||
|
aIndex = index,
|
||||||
|
length = 0
|
||||||
|
|
||||||
aIndex[char] || (aIndex[char] = {})
|
for (let char of value.split('')) {
|
||||||
aIndex = aIndex[char]
|
length++
|
||||||
|
|
||||||
if (!aIndex.results) {
|
aIndex[char] || (aIndex[char] = {})
|
||||||
aIndex.results = []
|
aIndex = aIndex[char]
|
||||||
aIndex.pool = {}
|
|
||||||
|
|
||||||
for (let id in aPool) {
|
if (!aIndex.results) {
|
||||||
let emoji = aPool[id],
|
aIndex.results = []
|
||||||
{ search } = emoji
|
aIndex.pool = {}
|
||||||
|
|
||||||
if (search.indexOf(value.substr(0, i)) != -1) {
|
for (let id in aPool) {
|
||||||
aIndex.results.push(emojisList[id])
|
let emoji = aPool[id],
|
||||||
aIndex.pool[id] = emoji
|
{ search } = emoji
|
||||||
|
|
||||||
|
if (search.indexOf(value.substr(0, length)) != -1) {
|
||||||
|
aIndex.results.push(emojisList[id])
|
||||||
|
aIndex.pool[id] = emoji
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aPool = aIndex.pool
|
||||||
}
|
}
|
||||||
|
|
||||||
aPool = aIndex.pool
|
return aIndex.results
|
||||||
results = aIndex.results.slice(0, maxResults)
|
}).filter(a => a)
|
||||||
|
|
||||||
|
if (allResults.length > 1) {
|
||||||
|
results = intersect(...allResults)
|
||||||
|
} else if (allResults.length) {
|
||||||
|
results = allResults[0]
|
||||||
|
} else {
|
||||||
|
results = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (results) {
|
||||||
|
results = results.slice(0, maxResults)
|
||||||
|
}
|
||||||
|
|
||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue