utils/populateElement.js

/**
 * Populate html element with provided data
 *
 * @module populateElement
 */

const populateElement = ( $target, data ) => {
	const keys = Object.keys( data );

	[].forEach.call( keys, ( key ) => {
		const $elems = $target.querySelectorAll( `[data-map="${key}"]` );
		if ( $elems ) {
			[].forEach.call( $elems, ( $elem ) => {
				const val = data[key];
				if ( 'number' === typeof ( val ) || 'string' === typeof ( val ) ) {
					const regex = new RegExp( '^/' );
					if ( regex.test( val ) ) {
						$elem.setAttribute( 'href', val );
					} else {
						$elem.textContent = val; // eslint-disable-line no-param-reassign
					}
				} else {
					const attributes = Object.keys( val );
					[].forEach.call( attributes, ( attr ) => {
						$elem.setAttribute( attr, val[attr]);
					});
				}
			});
		}
	});
};

export default populateElement;