From 968ff7dec50db7539d8c8225ed7d5169ba903d97 Mon Sep 17 00:00:00 2001 From: yoneal Date: Mon, 23 Jan 2017 22:06:35 +0800 Subject: [PATCH] Add support for loading and saving js files. Javascript files must be in CommonJS module format. --- lib/nconf/formats.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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; + } +};