function render(url,id)
{
const div = document.getElementById(id)
var request = new XMLHttpRequest()
request.open("get",url)
request.send()
var data = request.responseText
var ini = parseIni(data)
generateHTML(ini,div)
}
function parseIni(data) {
var regex = {
section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
param: /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,
comment: /^\s*;.*$/
};
var value = {};
var lines = data.split(/\r\n|\r|\n/);
var section = null;
lines.forEach(function (line) {
if (regex.comment.test(line)) {
return;
} else if (regex.param.test(line)) {
var match = line.match(regex.param);
if (section) {
value[section][match[1]] = match[2];
} else {
value[match[1]] = match[2];
}
} else if (regex.section.test(line)) {
var match = line.match(regex.section);
value[match[1]] = {};
section = match[1];
} else if (line.length === 0 && section) {
section = null;
}
});
return value;
}
function generateHTML(ini,root) {
var container = document.createElement('div');
container.id = 'ini-container';
for (var section in ini) {
if (ini.hasOwnProperty(section)) {
var sectionDiv = document.createElement('div');
sectionDiv.className = 'section';
var sectionHeader = document.createElement('h2');
sectionHeader.textContent = section;
sectionDiv.appendChild(sectionHeader);
var paramsDiv = document.createElement('div');
paramsDiv.className = 'params';
for (var param in ini[section]) {
if (ini[section].hasOwnProperty(param)) {
var paramDiv = document.createElement('div');
paramDiv.className = 'param';
var paramName = document.createElement('span');
paramName.className = 'param-name';
paramName.textContent = param + ': ';
var paramValue = document.createElement('span');
paramValue.className = 'param-value';
paramValue.textContent = ini[section][param];
paramDiv.appendChild(paramName);
paramDiv.appendChild(paramValue);
paramsDiv.appendChild(paramDiv);
}
}
sectionDiv.appendChild(paramsDiv);
container.appendChild(sectionDiv);
}
}
root.appendChild(container)
}