UNPKG

yoastseo

Version:

Yoast client-side content analysis

58 lines (56 loc) 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _lodash = require("lodash"); var _addWordboundary = _interopRequireDefault(require("../word/addWordboundary.js")); var _stripSpaces = _interopRequireDefault(require("../sanitize/stripSpaces.js")); var _transliterate = _interopRequireDefault(require("../transliterate/transliterate.js")); var _transliterateWPstyle = _interopRequireDefault(require("../transliterate/transliterateWPstyle.js")); var _specialCharacterMappings = require("../transliterate/specialCharacterMappings"); var _index = require("../../index"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * Creates a regex from the keyword with included wordboundaries. * * @param {string} keyword The keyword to create a regex from. * @param {string} language The language used to determine the word boundary. * * @returns {RegExp} Regular expression of the keyword with word boundaries. */ const toRegex = function (keyword, language) { keyword = (0, _addWordboundary.default)(keyword, false, "", language); return new RegExp(keyword, "ig"); }; /** * Matches a string with and without transliteration. * @param {string} text The text to match. * @param {string} keyword The keyword to match in the text. * @param {string} locale The locale used for transliteration. * @returns {Array} All matches from the original as the transliterated text and keyword. */ function _default(text, keyword, locale) { const language = (0, _index.getLanguage)(locale); let keywordRegex = toRegex(keyword, language); if (language === "tr") { const turkishMappings = (0, _specialCharacterMappings.replaceTurkishIsMemoized)(keyword); keywordRegex = new RegExp(turkishMappings.map(x => (0, _addWordboundary.default)(x)).join("|"), "ig"); } const matches = text.match(keywordRegex) || []; text = text.replace(keywordRegex, ""); const transliterateKeyword = (0, _transliterate.default)(keyword, locale); const transliterateKeywordRegex = toRegex(transliterateKeyword, language); const transliterateMatches = text.match(transliterateKeywordRegex) || []; let combinedArray = matches.concat(transliterateMatches); const transliterateWPKeyword = (0, _transliterateWPstyle.default)(keyword, locale); if (!(transliterateWPKeyword === transliterateKeyword)) { const transliterateWPKeywordRegex = toRegex(transliterateWPKeyword, language); const transliterateWPMatches = text.match(transliterateWPKeywordRegex) || []; combinedArray = combinedArray.concat(transliterateWPMatches); } return (0, _lodash.map)(combinedArray, function (match) { return (0, _stripSpaces.default)(match); }); } //# sourceMappingURL=matchTextWithTransliteration.js.map