exports.debug = false; exports.parse = function(line) { var key = ''; var value = ''; var is_number = true; var in_key = false; var in_value = false; var in_quote = false; var had_quote = false; var object = {}; var debug = exports.debug; if(line[line.length - 1] == '\n'){ line = line.slice(0,line.length - 1) } for(var i=0; i <= line.length; i++){ if((line[i] == ' ' && !in_quote) || i == line.length){ if(in_key && key.length > 0){ object[key] = true; }else if(in_value){ if(value == 'true') value = true; else if(value == 'false') value = false; else if(value === '' && !had_quote) value = null; object[key] = value; value = ''; } if(i == line.length) break; else { in_key = false; in_value = false; in_quote = false; had_quote = false; } } if(line[i] == '=' && !in_quote){ if(debug) console.log('split') //split in_key = false; in_value = true; } else if(line[i] == '\\'){ i ++ ; value += line[i]; if(debug) console.log('escape: ' + line[i]) } else if(line[i] == '"'){ had_quote = true; in_quote = !in_quote; if(debug) console.log('in quote: ' + in_quote) } else if(line[i] != ' ' && !in_value && !in_key){ if(debug) console.log('start key with: ' + line[i]) in_key = true; key = line[i]; } else if(in_key){ if(debug) console.log('add to key: ' + line[i]) key += line[i] } else if(in_value){ if(debug) console.log('add to value: ' + line[i]) value += line[i]; } } return object; }