fuzzystringmatch
Version:
a small library that creates a in-memory index for a fast and fuzzy lookup of search terms
52 lines (40 loc) • 1.34 kB
JavaScript
var WHITESPACES_RESPECT = 'respect'
var WHITESPACES_SQUASH = 'squash'
function splitter(identifier, options) {
options = options || {}
if (options.custom) {
return options.custom(identifier)
}
var size = options.size || 2
var whitespsaces = options.whitespaces || WHITESPACES_SQUASH
if (whitespsaces == WHITESPACES_RESPECT) {
identifier = identifier.split(' ')
} else if (whitespsaces == WHITESPACES_SQUASH) {
identifier = [identifier.replace(/ +/g, '')]
}
return identifier.reduce((carry, identifier) => {
var splitted = _splitTerm(identifier, size)
carry = carry.concat(splitted)
return carry
}, [])
}
function _splitTerm(identifier, size) {
var parts = identifier.split('')
if (identifier.length < size) {
return identifier
}
var resultList = []
for (var i = 0; i < parts.length; i++) {
if (i + size <= parts.length) {
var subPart = ''
for (var x = i; x < (i + size); x++) {
subPart += parts[x]
}
resultList.push(subPart)
}
}
return resultList
}
splitter.WHITESPACES_RESPECT = WHITESPACES_RESPECT
splitter.WHITESPACES_SQUASH = WHITESPACES_SQUASH
module.exports = splitter