+// TODO:
+// 1. Handle quoted strings, including line breaks, so that this:
+// foo = "bar
+// baz"
+// parses to {foo:"bar\n baz"}
+// 2. Escape with \, so that this:
+// foo = bar\
+// \"baz
+// parses to {foo:"bar\n \"baz"}
+
exports.parse = function(d) {
var ini = {'-':{}};
}
return ini;
+};
+
+function safe (val) {
+ return (val+"").replace(/[\n\r]+/g, " ");
}
+
+exports.stringify = function (obj) {
+ // if the obj has a "-" section, then do that first.
+ var ini = "";
+ if ("-" in obj) {
+ for (var key in obj["-"]) {
+ ini += safe(key)+" = "+safe(obj["-"][key])+"\n";
+ }
+ }
+ for (var section in obj) if (section !== "-") {
+ ini += "[" + safe(section) + "]\n";
+ for (var key in obj[section]) {
+
+ ini += safe(key) + ((obj[section][key] === true)
+ ? "\n"
+ : " = "+safe(obj[section][key])+"\n");
+ }
+ }
+ return ini;
+};
+
+exports.encode = exports.stringify;
+exports.decode = exports.parse;
require("../common");
-var path = require('path');
-var fs = require("fs");
-parse = require("ini").parse;
+var path = require('path'),
+ fs = require("fs"),
+ ini = require("ini"),
+ parse = require("ini").parse;
debug("load fixtures/fixture.ini");
var iniContents = parse(data);
assert.equal(typeof iniContents, 'object');
- var expect =
- { "-" :
- { "root" : "something"
- , "url" : "http://example.com/?foo=bar"
- }
- , "the section with whitespace" :
- { "this has whitespace" : "yep"
- , "just a flag, no value." : true
- }
- , "section" :
- { "one" : "two"
- , "Foo" : "Bar"
- , "this" : "Your Mother!"
- , "blank" : ""
- }
- , "Section Two" :
- { "something else" : "blah"
- , "remove" : "whitespace"
- }
- };
-
- assert.deepEqual(iniContents, expect,
- "actual: \n"+inspect(iniContents) +"\n≠\nexpected:\n"+inspect(expect))
+ var expect = { "-" :
+ { "root" : "something"
+ , "url" : "http://example.com/?foo=bar"
+ }
+ , "the section with whitespace" :
+ { "this has whitespace" : "yep"
+ , "just a flag, no value." : true
+ }
+ , "section" :
+ { "one" : "two"
+ , "Foo" : "Bar"
+ , "this" : "Your Mother!"
+ , "blank" : ""
+ }
+ , "Section Two" :
+ { "something else" : "blah"
+ , "remove" : "whitespace"
+ }
+ },
+ expectStr = "root = something\n"+
+ "url = http://example.com/?foo=bar\n"+
+ "[the section with whitespace]\n"+
+ "this has whitespace = yep\n"+
+ "just a flag, no value.\n"+
+ "[section]\n"+
+ "one = two\n"+
+ "Foo = Bar\n"+
+ "this = Your Mother!\n"+
+ "blank = \n"+
+ "[Section Two]\n"+
+ "something else = blah\n"+
+ "remove = whitespace\n";
- assert.equal(iniContents['-']['root'],'something');
- assert.equal(iniContents['section']['blank'],'');
- assert.equal(iniContents['Section Two']['remove'],'whitespace');
+ assert.deepEqual(iniContents, expect,
+ "actual: \n"+inspect(iniContents) +"\n≠\nexpected:\n"+inspect(expect));
+ assert.equal(ini.stringify(iniContents), expectStr,
+ "actual: \n"+inspect(ini.stringify(iniContents)) +"\n≠\nexpected:\n"+inspect(expectStr));
});
+
+