docs: function(config) {
  
          var defaults = {plugins: []};
          config = typeof config == 'object' && config || {};
  
          if (config.plugins && !Array.isArray(config.plugins)) {
              return { error: 'Error: Invalid plugins list. Provided \'plugins\' in config should be an array.' };
          }
  
          if (config.full) {
              defaults = config;
  
              if (Array.isArray(defaults.plugins)) {
                  defaults.plugins = preparePluginsArray(defaults.plugins);
              }
          } else {
              defaults = {
                plugins: preparePluginsArray(defaults.plugins)
              }
              defaults = extendConfig(defaults, config);
          }
  
          if ('floatPrecision' in config && Array.isArray(defaults.plugins)) {
              defaults.plugins.forEach(function(plugin) {
                  if (plugin.params && ('floatPrecision' in plugin.params)) {
                      // Don't touch default plugin params
                      plugin.params = EXTEND({}, plugin.params, { floatPrecision: config.floatPrecision });
                  }
              });
          }
  
          if (Array.isArray(defaults.plugins)) {
              defaults.plugins = optimizePluginsArray(defaults.plugins);
          }
  
          return defaults;
  
      }