var _ = require('lodash');

// Cleans up an article/chapter object
// remove 'articles' and '_path' attributes
function clean(obj) {
    return obj && _.omit(obj, ['articles', '_path']);
}

// Returns a map of
/*
    {
        "file/path.html": {
            prev: ...,
            next: ...,
        },
        ...
    }
*/
function navigation(summary, files) {
    // Support single files as well as list
    files = _.isArray(files) ? files : (_.isString(files) ? [files] : null);

    // Mapping of prev/next for a give path
    var mapping = {};

    // Special README nav
    var README_NAV = {
        path: 'README.html',
        title: 'Introdunction',
    };

    // Walk the chapter/article tree and create navigation entires
    _.each(summary.chapters, function(chapter, idx, chapters) {
        var currentChapter = clean(chapter);
        var prevChapter = (idx-1 < 0) ? README_NAV : chapters[idx-1];
        var nextChapter = (idx+1 >= chapters.length) ? null : chapters[idx+1];

        var prev = (!prevChapter || _.isEmpty(prevChapter.articles)) ?
            prevChapter : _.last(prevChapter.articles);
        var next = (!chapter || _.isEmpty(chapter.articles)) ?
            nextChapter : _.first(chapter.articles);

        // Add chapter mapping
        mapping[chapter.path] = {
            prev: clean(prev),
            next: clean(next),
        };

        // Check a chapter's articles
        _.each(chapter.articles, function(article, _idx, articles) {

            var prev = (_idx-1 < 0) ? currentChapter : clean(articles[_idx-1]);
            var next = (_idx+1 >= articles.length) ? nextChapter : clean(articles[_idx+1]);

            mapping[article.path] = {
                prev: clean(prev),
                next: clean(next),
            };
        });
    });

    // Hack for README.html
    mapping['README.html'] = {
        prev: null,
        next: clean(summary.chapters[0]),
    };

    // Filter for only files we want
    if(files) {
        return _.pick(mapping, files);
    }

    return mapping;
}


// Exports
module.exports = navigation;

var _ = require('lodash');

// Cleans up an article/chapter object
// remove 'articles' and '_path' attributes
function clean(obj) {
    return obj && _.omit(obj, ['articles', '_path']);
}

// Returns a map of
/*
    {
        "file/path.html": {
            prev: ...,
            next: ...,
        },
        ...
    }
*/
function navigation(summary, files) {
    // Support single files as well as list
    files = _.isArray(files) ? files : (_.isString(files) ? [files] : null);

    // Mapping of prev/next for a give path
    var mapping = {};

    // Special README nav
    var README_NAV = {
        path: 'README.html',
        title: 'Introduction',
    };

    // Walk the chapter/article tree and create navigation entires
    _.each(summary.chapters, function(chapter, idx, chapters) {
        var currentChapter = clean(chapter);
        var prevChapter = (idx-1 < 0) ? README_NAV : chapters[idx-1];
        var nextChapter = (idx+1 >= chapters.length) ? null : chapters[idx+1];

        var prev = (!prevChapter || _.isEmpty(prevChapter.articles)) ?
            prevChapter : _.last(prevChapter.articles);
        var next = (!chapter || _.isEmpty(chapter.articles)) ?
            nextChapter : _.first(chapter.articles);

        // Add chapter mapping
        mapping[chapter.path] = {
            prev: clean(prev),
            next: clean(next),
        };

        // Check a chapter's articles
        _.each(chapter.articles, function(article, _idx, articles) {

            var prev = (_idx-1 < 0) ? currentChapter : clean(articles[_idx-1]);
            var next = (_idx+1 >= articles.length) ? nextChapter : clean(articles[_idx+1]);

            mapping[article.path] = {
                prev: clean(prev),
                next: clean(next),
            };
        });
    });

    // Hack for README.html
    mapping['README.html'] = {
        prev: null,
        next: clean(summary.chapters[0]),
    };

    // Filter for only files we want
    if(files) {
        return _.pick(mapping, files);
    }

    return mapping;
}


// Exports
module.exports = navigation;

Fix tiny typo