File "replacement.js"
Full Path: /home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/wp-content/plugins/surerank/src/functions/replacement.js
File size: 1.2 KB
MIME-type: text/x-java
Charset: utf-8
import { getDefaultPageDescription } from '@Global/constants';
const replacement = ( str, data, postDynamicData = {} ) => {
if ( ! str || ! data ) {
return str;
}
const chunks = variables( str );
const replacementArray = [];
chunks.forEach( ( chunk ) => {
if ( ! replacementArray[ chunk ] ) {
// Chunk will be replaced dynamic keys like title, content, excerpt so we need to check if it is available in postDynamicData.
const dynamicKeys = [ 'title', 'excerpt', 'content' ];
// Verify if chunk is available in dynamicKeys and postDynamicData is not empty.
if ( dynamicKeys.includes( chunk ) && postDynamicData?.[ chunk ] ) {
replacementArray[ chunk ] = postDynamicData[ chunk ];
} else {
replacementArray[ chunk ] = data[ chunk ] || '';
}
}
} );
return str.replace( /%([^%\s]+)%/g, ( match, value ) => {
if ( value === 'excerpt' && ! replacementArray[ value ] ) {
return getDefaultPageDescription();
}
return replacementArray[ value ];
} );
};
const variables = ( str ) => {
const regex = /%([^%\s]+)%/g;
const matches = str.match( regex );
if ( ! matches ) {
return [];
}
return matches.map( ( match ) => match.replace( /%/g, '' ) );
};
export default replacement;