JSFiddle - React, Tailwind, and code Playground
JavaScript
var htmlString = '<html><body> <div class="page"> Custom table example <customTable name="customArray" fields="[\"name\"]" /> </div></body> </html>';
var customArray = [{
name : "Name 1"
}, {
name : "Name 2"
}, {
name : "Name 3"
}];
var customArrays = {
customArray: customArray
};
var customTableRegex = /<customTable .* \/>/gm;
var arrayNameRegex = /name="\S*"/gm;
var fieldsRegex = /fields=".*"/gm
function createTable(arrayName, fields){
var table = '<table>';
var currentArray = customArrays[arrayName];
for (var i = 0, iMax = currentArray.length; i < iMax; i++){
table += '<tr>';
for (var j = 0, jMax = fields.length; j < jMax; j++){
table += '<td>' + currentArray[i][fields[j]] + '</td>';
}
table += '</tr>';
}
table += '</table>';
console.log('Created table : ', table);
return table;
}
function replaceByTable(match){
console.log(match);
var arrayName = arrayNameRegex.exec(match);
arrayName = arrayName[0].substring('name="'.length, arrayName[0].length -1);
var fields = fieldsRegex.exec(match);
fields = JSON.parse(fields[0].substring('fields="'.length, fields[0].length-1));
console.log('Array name : ',arrayName);
console.log('Fields : ', fields);
return createTable(arrayName, fields);
}
htmlString = htmlString.replace(customTableRegex, replaceByTable);
console.log('Final HTML : ', htmlString);