yoastseo-dep
Version:
Yoast clientside page analysis
40 lines (34 loc) • 1.36 kB
JavaScript
import { languageProcessing } from "yoastseo-dep";
const { getWords } = languageProcessing;
import nonPassives from "../config/internal/nonPassiveVerbsStartingDi";
const passivePrefix = "di";
/**
* Checks the passed sentence to see if it contains Indonesian passive verb-forms.
*
* @param {string} sentence The sentence to match against.
*
* @returns {Boolean} Whether the sentence contains Indonesian passive voice.
*/
export default function isPassiveSentence( sentence ) {
const words = getWords( sentence.toLowerCase() );
let matchedPassives = words.filter( word => ( word.length > 4 ) );
matchedPassives = matchedPassives.filter( word => ( word.startsWith( passivePrefix ) ) );
if ( matchedPassives.length === 0 ) {
return false;
}
// Check exception list.
for ( const nonPassive of nonPassives ) {
matchedPassives = matchedPassives.filter( word => ( ! word.startsWith( nonPassive ) ) );
}
// Check direct precedence exceptions.
matchedPassives = matchedPassives.filter( function( matchedPassive ) {
let matchedPassivesShouldStay = true;
const passiveIndex = words.indexOf( matchedPassive );
const wordPrecedingPassive = words[ passiveIndex - 1 ];
if ( wordPrecedingPassive === "untuk" ) {
matchedPassivesShouldStay = false;
}
return matchedPassivesShouldStay;
} );
return matchedPassives.length !== 0;
}