blob: 0b4875c5555178184d7cebc71cbaa8539aff9f9e [file] [log] [blame]
var _ = require('lodash')
module.exports = function FilterStringServiceFactory() {
var service = {}
/**
* Filters integer
*
* @param {string} searchValue Value to search
* @param {string} str Value to compare
* @returns {boolean} true if matched
*/
service.filterInteger = function(searchValue, str) {
var matched = true
matched = service.filterString(searchValue + '', str + '')
return matched
}
/**
* Filters string
*
* @param {string} searchValue Value to search
* @param {string} str Value to compare
* @returns {boolean} true if matched
*/
service.filterString = function(searchValue, str) {
var matched = true
var searchLowerCase = searchValue.toLowerCase()
var searchContent = searchValue.slice(1)
var searchContentLowerCase = searchLowerCase.slice(1)
switch (searchValue.charAt(0)) {
case '/':
var lastSlash = searchContent.lastIndexOf('/')
if (lastSlash !== -1) {
var pattern = searchContent.substring(0, lastSlash)
var flags = searchContent.substring(lastSlash + 1)
var regex = new RegExp(pattern, flags)
matched = !_.isNull(str.match(regex))
} else {
matched = true // Regex is not complete, don't filter yet
}
break
case '!':
matched = str.toLowerCase().indexOf(searchContentLowerCase) === -1
break
default:
matched = str.toLowerCase().indexOf(searchLowerCase) !== -1
}
return matched
}
return service
}