node-normalizer
Advanced tools
Comparing version 1.0.0-alpha3 to 1.0.0-alpha4
@@ -46,52 +46,76 @@ 'use strict'; | ||
var reSet = {}; | ||
var quotemeta = function quotemeta(string) { | ||
var unsafe = '\\.+*?[^]$(){}=!<>|:'; | ||
var cleanString = string; | ||
for (var i = 0; i < unsafe.length; i++) { | ||
string = string.replace(new RegExp('\\' + unsafe.charAt(i), 'g'), '\\' + unsafe.charAt(i)); | ||
cleanString = cleanString.replace(new RegExp('\\' + unsafe.charAt(i), 'g'), '\\' + unsafe.charAt(i)); | ||
} | ||
return string; | ||
return cleanString; | ||
}; | ||
var lineHandle = function lineHandle(task, key, replacer) { | ||
if (reSet[task.key] === undefined) { | ||
reSet[task.key] = {}; | ||
} | ||
var replacements = {}; | ||
var systemReplacements = []; | ||
if (reSet[task.key][key] === undefined) { | ||
reSet[task.key][key] = []; | ||
} | ||
var lineHandle = function lineHandle(task, phrase) { | ||
var replacement = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; | ||
// Add RegEx | ||
var startM = false; | ||
var endM = false; | ||
var lookup = key; | ||
var start = false; | ||
var end = false; | ||
if (key[0] === '<') { | ||
startM = true; | ||
lookup = key.substring(1); | ||
if (phrase[0] === '<') { | ||
start = true; | ||
phrase = phrase.substring(1); | ||
} | ||
if (key.slice(-1) === '>') { | ||
endM = true; | ||
lookup = lookup.substring(0, lookup.length - 1); | ||
if (phrase.slice(-1) === '>') { | ||
end = true; | ||
phrase = phrase.substring(0, phrase.length - 1); | ||
} | ||
var qm = quotemeta(re11.replace(lookup, ' ')); | ||
phrase = re11.replace(phrase, ' '); | ||
var cleanPhrase = quotemeta(phrase); | ||
if (startM && endM) { | ||
reSet[task.key][key].push({ re: new RegExp('^' + qm + '$', 'gi'), r: replacer }); | ||
} else if (startM) { | ||
reSet[task.key][key].push({ re: new RegExp('^' + qm + '(\\W+|$)', 'gi'), r: replacer + '$1' }); | ||
} else if (endM) { | ||
reSet[task.key][key].push({ re: new RegExp('(\\W+|^)' + qm + '$', 'gi'), r: '$1' + replacer }); | ||
phrase.split(' ').forEach(function (word) { | ||
word = word.toLowerCase(); | ||
// TODO: Fuck me, am I right? Should.js won't let you do: | ||
// replacements['should'] = []; | ||
if (word === 'should') { | ||
return; | ||
} | ||
if (replacements[word] === undefined) { | ||
replacements[word] = []; | ||
} | ||
var phraseRegex = void 0; | ||
var replacementRegex = void 0; | ||
if (start && end) { | ||
phraseRegex = new RegExp('^' + cleanPhrase + '$', 'gi'); | ||
replacementRegex = replacement; | ||
} else if (start) { | ||
phraseRegex = new RegExp('^' + cleanPhrase + '(\\W+|$)', 'gi'); | ||
replacementRegex = replacement + '$1'; | ||
} else if (end) { | ||
phraseRegex = new RegExp('(\\W+|^)' + cleanPhrase + '$', 'gi'); | ||
replacementRegex = '$1' + replacement; | ||
if (task.key === '_sys') { | ||
phraseRegex = new RegExp(cleanPhrase + '$', 'i'); | ||
replacementRegex = replacement; | ||
} | ||
} else { | ||
phraseRegex = new RegExp('(\\W+|^)' + cleanPhrase + '(\\W+|$)', 'gi'); | ||
replacementRegex = '$1' + replacement + '$2'; | ||
} | ||
if (task.key === '_sys') { | ||
reSet[task.key][key].push({ re: new RegExp(qm + '$', 'gi'), r: replacer }); | ||
systemReplacements.push({ phraseRegex: phraseRegex, replacementRegex: replacementRegex }); | ||
} else { | ||
// reSet[task.key][key].push({ re: new RegExp(`(\\W+)${qm}(\\W+)`, 'gi'), r: `$1${replacer}$2` }); | ||
replacements[word].push({ phrase: phrase, replacement: replacement, phraseRegex: phraseRegex, replacementRegex: replacementRegex }); | ||
replacements[word].sort(function (a, b) { | ||
return b.phrase.split(' ').length - a.phrase.split(' ').length; | ||
}); | ||
} | ||
} else { | ||
reSet[task.key][key].push({ re: new RegExp('(\\W+|^)' + qm + '(\\W+|$)', 'gi'), r: '$1' + replacer + '$2' }); | ||
} | ||
}); | ||
}; | ||
@@ -141,11 +165,20 @@ | ||
var replacer = function replacer(regex) { | ||
msg = msg.replace(regex.re, regex.r); | ||
}; | ||
systemReplacements.forEach(function (replacement) { | ||
msg = msg.replace(replacement.phraseRegex, replacement.replacementRegex); | ||
}); | ||
Object.keys(reSet).forEach(function (taskKey) { | ||
Object.keys(reSet[taskKey]).forEach(function (key) { | ||
var reArray = reSet[taskKey][key]; | ||
reArray.forEach(replacer); | ||
}); | ||
var splitMsg = msg.toLowerCase(); | ||
splitMsg = splitMsg.split(' '); | ||
splitMsg.forEach(function (word) { | ||
if (word === 'should') { | ||
return; | ||
} | ||
if (replacements[word]) { | ||
replacements[word].forEach(function (phrase) { | ||
// console.log(`Replacing "${phrase.phrase}" with "${phrase.replacement}"`); | ||
msg = msg.replace(phrase.phraseRegex, phrase.replacementRegex); | ||
}); | ||
} | ||
}); | ||
@@ -152,0 +185,0 @@ |
{ | ||
"name": "node-normalizer", | ||
"version": "1.0.0-alpha3", | ||
"version": "1.0.0-alpha4", | ||
"description": "Normalize and clean text", | ||
@@ -5,0 +5,0 @@ "main": "lib/normalizer.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
209655
149