yoastseo
Version:
Yoast client-side content analysis
59 lines (54 loc) • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = checkIfWordIsComplex;
const vowels = "aeiuoyáéíóúñ";
const consonants = "bcdfghjklmnpqrstvwxzñ";
const vowelsSuffix = "[" + vowels + "](s)$";
const vowelsSuffixRegex = new RegExp(vowelsSuffix);
const consonantSuffix = "[" + consonants + "](es)$";
const consonantSuffixRegex = new RegExp(consonantSuffix);
const suffixes = "(s|es)$";
const suffixesRegex = new RegExp(suffixes);
/**
* Checks if a word is complex.
* This is a helper for the Word Complexity assessment. As such, this helper is not bundled in Yoast SEO.
*
* @param {object} config The configuration needed for assessing the word's complexity, e.g., the frequency list.
* @param {string} word The word to check.
* @param {object} premiumData The object that contains data for the assessment including the frequency list.
*
* @returns {boolean} Whether or not a word is complex.
*/
function checkIfWordIsComplex(config, word, premiumData) {
const lengthLimit = config.wordLength;
const frequencyList = premiumData.frequencyList.list;
// The Spanish word is not complex if its length is 7 characters or fewer.
if (word.length <= lengthLimit) {
return false;
}
// The Spanish word starts with a capital and thus is assumed to be a named entity.
if (word[0].toLowerCase() !== word[0]) {
return false;
}
// The word is not complex if it's in the frequency list.
if (frequencyList.includes(word)) {
return false;
}
/*
* If a word is longer than 7 characters and has a plural ending in -es or -s, we remove the ending
* and check if the singular form can be found in the frequency list.
* The word is not complex if the singular form is in the list.
*/
// It's important to check consonant suffixes before vowel suffixes so order should not be altered.
if (consonantSuffixRegex.test(word)) {
word = word.replace(suffixesRegex, "");
return !frequencyList.includes(word);
} else if (vowelsSuffixRegex.test(word)) {
word = word.replace(suffixesRegex, "");
return !frequencyList.includes(word);
}
return true;
}
//# sourceMappingURL=checkIfWordIsComplex.js.map