exports['test_object_merge'] = function() { var a = {foo: 1}; var b = {bar: 2}; var c = {foo: 1, bar: 2}; var out = misc.merge(a, b); assert.deepEqual(c, out); out = misc.merge(out, {}); assert.deepEqual(c, out); out = misc.merge({}, out); assert.deepEqual(c, out); };
exports.setup = function(cb) { exports.config_current = merge(exports.config_current, defaults); function dostep() { var p = exports.config_files[poffset]; fs.readFile(p, function(err, data) { if (!err) { var parsed = {}; try { parsed = JSON.parse(data.toString()); } catch(eerr) { cb(eerr); } exports.config_current = merge(exports.config_current, parsed); } poffset++; if (exports.config_files.length == poffset) { cb(null); } else { dostep(); } }); } dostep(); };
exports['test_empty_object_merge'] = function() { var a = {}; var b = {}; var c = {}; var out = misc.merge(a, b); assert.deepEqual(c, out); };
exports.render = function (template, ctx, req, res) { var c = merge(default_ctx, ctx); mu.render(template, c, {}, function(err, output) { if (err) { res.writeHead(500, {'Content-Type': 'text/plain'}); res.end(err+'\n'); throw err; } /* TODO: other content types */ var ct = 'text/html; charset=utf-8'; if (template.indexOf('.txt') != -1) { ct = 'text/plain'; } if (template.indexOf('.xml') != -1) { ct = 'application/xml'; } var headers = merge({'Content-Type': ct}, c.headers ? c.headers : {}); res.writeHead(200, headers); output.addListener('data', function (c) { res.write(c); }); output.addListener('end', function () { res.end(); }); }); };