var _ = require('lodash');

module.exports = function generateNavigationDoc() {

  return {
    $runAfter: ['docs-processed'],
    $runBefore: ['rendering-docs'],
    $process: function(docs) {
      var modulesDoc = {
        value: { sections: [] },
        moduleName: 'navigation-modules',
        serviceName: 'MODULES',
        template: 'data-module.template.js',
        outputPath: 'js/navigation-modules.js'
      };

      _.forEach(docs, function(doc) {
        if ( doc.docType === 'module' ) {
          var moduleNavItem = {
            path: doc.path,
            partial: doc.outputPath,
            name: doc.id,
            type: 'module',
            pages: []
          };

          modulesDoc.value.sections.push(moduleNavItem);

          _.forEach(doc.exports, function(exportDoc) {
            if (!exportDoc.private) {
              var exportNavItem = {
                path: exportDoc.path,
                partial: exportDoc.outputPath,
                name: exportDoc.name,
                type: exportDoc.docType
              };
              moduleNavItem.pages.push(exportNavItem);
            }
          });
        }
      });

      docs.push(modulesDoc);


      var guidesDoc = {
        value: { pages: [] },
        moduleName: 'navigation-guides',
        serviceName: 'GUIDES',
        template: 'data-module.template.js',
        outputPath: 'js/navigation-guides.js'
      };

      _.forEach(docs, function(doc) {
        if ( doc.docType === 'guide' ) {
          var guideDoc = {
            path: doc.path,
            partial: doc.outputPath,
            name: doc.name,
            type: 'guide'
          };
          guidesDoc.value.pages.push(guideDoc);
        }
      });
      docs.push(guidesDoc);
    }
  };
};