'use strict';

var _ = require('lodash');

/**
 * @dgProcessor generateIndexPagesProcessor
 * @description
 * This processor creates docs that will be rendered as the index page for the app
 */
module.exports = function generateIndexPagesProcessor() {
  return {
    deployments: [],
    $validate: {
      deployments: { presence: true }
    },
    $runAfter: ['adding-extra-docs'],
    $runBefore: ['extra-docs-added'],
    $process: function(docs) {

      // Collect up all the areas in the docs
      var areas = {};
      docs.forEach(function(doc) {
        if (doc.area) {
          areas[doc.area] = doc.area;
        }
      });
      areas = _.keys(areas);

      this.deployments.forEach(function(deployment) {

        var indexDoc = _.defaults({
          docType: 'indexPage',
          areas: areas
        }, deployment);

        indexDoc.id = 'index' + (deployment.name === 'default' ? '' : '-' + deployment.name);

        docs.push(indexDoc);
      });
    }
  };
};
