Load WZ ini

Test loading WZ ini from github

HTML

<div id="content"></div>

JavaScript

function parse(data){
    
    //console.log(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;

    function handleSection(sec) {
        var isFloat = /^(?:[1-9]\d*|0)?(?:\.\d+)?$/;
        if(sec.match(isFloat)) {
            return parseFloat(sec);
        } else if(sec=='true') {
            return true;
        } else if(sec=='false') {
            return false;
        }
        return sec.replace(/^['"]/,'').replace(/['"]$/,'');
    }

    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]] = handleSection(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;
}

$.ajax({
    url: 'https://rawgithub.com/Warzone2100/warzone2100/master/data/mp/stats/body.ini',
    type: 'GET',
    dataType : "text",
    async: false,
    success: function(res) {
        $('#content').text(JSON.stringify(parse(res)));
        console.log(parse(res));
    }
});