UNPKG

woa

Version:

NodeJS module for word analytics

94 lines (74 loc) 2.87 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function woa() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, text = _ref.text, keywords = _ref.keywords; if (arguments.length === 0 || _typeof(arguments[0]) !== 'object') { var msg = 'Expected an Object Argument but received: ' + _typeof(arguments[0]) + '.'; throw new Error(msg); } else if (!text || typeof text !== 'string') { var _msg = '\'text\' is required and it should be a String, but received: ' + (typeof text === 'undefined' ? 'undefined' : _typeof(text)) + '.'; throw new Error(_msg); } var cleanText = sanitizeText(text); var words = cleanText.split(' '); var processedKeywords = getKeywords(keywords, words); var counts = {}; var frecuency = {}; processedKeywords.map(function (kw) { words.map(function (w) { var value = new RegExp(kw); if (value.test(w)) { counts[kw] ? counts[kw] += 1 : counts[kw] = 1; } }); frecuency[kw] = counts[kw] ? counts[kw] / words.length : 'n/a'; }); return frecuency; } function sanitizeText(text) { return text.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]|\u0027/g, '').replace(/\W+/g, ' ').replace(/\s{2,}/g, ' ').trim(); } function getKeywords(defined, auto) { var keywords = []; if (defined && Array.isArray(defined)) { keywords = defined; } else if (defined) { keywords = Array.of(defined); } else { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = auto[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var word = _step.value; if (!keywords.includes(word)) { keywords = [].concat(_toConsumableArray(keywords), [word]); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } return keywords.map(function (kw) { return kw.toLowerCase(); }); } exports.default = woa; module.exports = exports['default'];