diff --git a/lib/nconf/formats.js b/lib/nconf/formats.js index 8ef210d3..c0437ae2 100644 --- a/lib/nconf/formats.js +++ b/lib/nconf/formats.js @@ -6,6 +6,8 @@ */ var ini = require('ini'); +var vm = require('vm'); +var util = require('util'); var formats = exports; @@ -26,3 +28,29 @@ formats.json = { // http://en.wikipedia.org/wiki/INI_file // formats.ini = ini; + +// +// ### @js +// Javascript file in CommonJS module format +// +formats.js = { + stringify: function (obj, replacer, spacing) { + var space = '', + numSpace = (spacing || 2); + for (var i=0; i < numSpace; i++) { + space = space + ' '; + } + var prefix = 'module.exports' + space + '=' + space; + var jsonStr = JSON.stringify(obj, replacer || null , numSpace); + return prefix + jsonStr + ';'; + }, + parse: function (text) { + var context = {module: {exports: {}}}; + vm.runInNewContext(text, context, { + lineOffset: 0, + displayErrors: true + }); + console.log(util.inspect(context)); + return context.module.exports; + } +};