asksuite-core
Version:
43 lines (36 loc) • 1.2 kB
JavaScript
/* eslint-disable prefer-regex-literals */
const StringUtils = require('./StringUtils');
const IntEncoder = require('./IntEncoder')();
const emojiRegex = new RegExp(
'(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])',
);
class RequestPreprocessor {
constructor() {}
static process(request) {
return new Promise((resolve) => {
try {
const processed = Object.assign({}, request);
processed.text = RequestPreprocessor.processText(processed.text);
resolve(processed);
} catch (e) {
resolve(request);
}
});
}
static processText(text) {
text = this.removeUtilityTexts(text);
return StringUtils.unaccent(text.toLowerCase());
}
static removeUtilityTexts(text) {
const groupId = IntEncoder.extract(text);
if (groupId) {
text = text.replace('#' + groupId, ''); // remove groupId if present
}
text = text.replace(/\s+/g, ' '); // remove multiple spaces
return text.replace(/(Link:\s+?)?fb:\/\/.+?(\s|$)/g, ''); // remove facebook links
}
static removeEmoji(text) {
return text.replace(emojiRegex, '');
}
}
module.exports = RequestPreprocessor;