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;
}