Jump To …
nconf/common.html nconf/formats.html nconf/provider.html nconf/stores/file.html nconf/stores/memory.html nconf/stores/system.html nconf/stores.html nconf.html

# common.js

¶

    /*
     * utils.js: Utility functions for the nconf module.
     *
     * (C) 2011, Charlie Robbins
     *
     */

    var fs = require('fs'),
        async = require('async'),
        formats = require('./formats'),
        Memory = require('./stores/Memory').Memory;

    var common = exports;

¶

### function path (key)

#### @key {string} The ':' delimited key to split

Returns a fully-qualified path to a nested nconf key.

    common.path = function (key) {
      return key.split(':');
    };

¶

### function key (arguments)

Returns a `:` joined string from the `arguments`.

    common.key = function () {
      return Array.prototype.slice.call(arguments).join(':');
    };

¶

### function loadFiles (files, callback)

#### @files {Object|Array} List of files (or settings object) to load.

#### @callback {function} Continuation to respond to when complete.

Loads all the data in the specified `files`.

    common.loadFiles = function (files, callback) {
      if (!files) {
        return callback(null, {});
      }

      var options = Array.isArray(files) ? { files: files } : files;

¶

Set the default JSON format if not already specified

      options.format = options.format || formats.json;

      function parseFile (file, next) {
        fs.readFile(file, function (err, data) {
          return !err
            ? next(null, options.format.parse(data.toString()))
            : next(err);
        });
      }

      async.map(files, parseFile, function (err, objs) {
        return err ? callback(err) : callback(null, common.merge(objs));
      });
    };

¶

### function loadFilesSync (files)

#### @files {Object|Array} List of files (or settings object) to load.

Loads all the data in the specified `files` synchronously.

    common.loadFilesSync = function (files) {
      if (!files) {
        return;
      }

¶

Set the default JSON format if not already specified

      var options = Array.isArray(files) ? { files: files } : files;
      options.format = options.format || formats.json;

      return common.merge(files.map(function (file) {
        return options.format.parse(fs.readFileSync(file, 'utf8'));
      }));
    };

¶

### function merge (objs)

#### @objs {Array} Array of object literals to merge

Merges the specified `objs` using a temporary instance of `stores.Memory`.

    common.merge = function (objs) {
      var store = new Memory();

      objs.forEach(function (obj) {
        Object.keys(obj).forEach(function (key) {
          store.merge(key, obj[key]);
        });
      });

      return store.store;
    };

¶

### function capitalize (str)

#### @str {string} String to capitalize

Capitalizes the specified `str`.

    common.capitalize = function (str) {
      return str && str[0].toUpperCase() + str.slice(1);
    };