Javascript

js 解析 ini 文件

2017-11-12  本文已影响0人  ccw1078
// 解析 ini 文件
// 忽略分号开头的行和空行
// 中括号括起来的行是一个新章节
// 等号行是当前章节的内容
function splitLines(string){
    return string.split(/\r?\n/);
}


function parseINI(string){
    var lines = splitLines(string);
    var categories = [];
    
    function newCategory(name){
        var cat = {name: name, fields: []};
        categories.push(cat);
        return cat;
    }
    
    var currentCategory = newCategory("TOP");
    
    forEach(lines, function(line){
        var match;
        if (/^\s*(;.*)?$/.test(line)){
            return;
        }
        else if (match = line.match(/^\[(.*)\]$/)){
            currentCategory = newCategory(match[1]);
        }
        else if (match = line.match(/^(\w+)=(.*)$/)){
            currentCategory.fields.puch({name: match[1], value: match[2]});
        }
        else{
            throw new Error("Invalid line: " + line);
        }
    });
    
    return categories;
}
上一篇 下一篇

猜你喜欢

热点阅读