Итак, у меня возникло умственное расстройство с помощью следующего кода, я пытаюсь проанализировать простой текстовый файл со следующим содержимым:
name = rattlesnake
alias = snake,rattle
health = 50
flee = 45
attacks
bite = [3, 8, 30]
punch = [5, 12, 90]
name = bear
alias = bear
health = 100
flee = 15
attacks
claw = [10, 15, 60]
У меня есть следующий код, который у меня есть написано до сих пор, но я ненавижу это, и он не делает то, что должен. Я пытался часами Вот функция:
var parseModFile = function(contents) {
var hasTab = /(?<=\t).*$/;
var split = contents.split("\r\n");
var pushIt = "{";
var numExtraBraces = 0;
var closeBrace = 0;
for (var l = 0; l < split.length; l++) {
var doIt = "";
if (split[l]) {
if (split[l].length > 1) {
if (hasTab.test(split)) {
doIt = split[l].replace(/\t/g, "");
if (doIt.indexOf(" = ") > -1) {
doIt = doIt.split(" = ");
var key = doIt[0];
var val = doIt[1];
if (key.length > 0 && val.length > 0) {
if (closeBrace == 2) {
doIt = "},\"" + key + "\": \"" + val + "\",";
closeBrace = 0;
} else {
doIt = "\"" + key + "\": \"" + val + "\",";
}
if (closeBrace == 1) {
closeBrace++;
}
}
} else {
doIt = doIt.split(" = ");
var key = doIt[0];
doIt = "\"" + key + "\": {";
numExtraBraces++;
closeBrace = 1;
}
}
}
pushIt += doIt;
}
}
for (var b = 0; b < numExtraBraces; b++) {
pushIt += "}";
}
pushIt += "}";
return pushIt
}
Что ПОЧТИ правильно, но возвращает это:
{
"n": "rattlesnake",
"a": "snake,rattle",
"h": "50",
"flee": "45",
"attacks": {
"bite": "[3, 8, 30]",
},
"n": "bear",
"a": "bear",
"h": "100",
"flee": "15",
"attacks": {
"claw": "[10, 15, 60]",
}
}
}
Что, очевидно, не совсем правильно, я хотел бы, чтобы это было:
{
"n": "rattlesnake",
"a": "snake,rattle",
"h": "50",
"flee": "45",
"attacks": {
"bite": "[3, 8, 30]",
}
},
{
"n": "bear",
"a": "bear",
"h": "100",
"flee": "15",
"attacks": {
"claw": "[10, 15, 60]",
}
}
Но я не могу заставить его соответствовать. Что мне здесь не хватает?