Code coverage report for lib/generate.js

Statements: 100% (12 / 12)      Branches: 100% (4 / 4)      Functions: 100% (1 / 1)      Lines: 100% (11 / 11)      Ignored: none     

All files » lib/ » generate.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 421                                 1 15     15   14       14 107 87 87     107     14          
var marked = require('marked'),
    Toc = require('./toc');
 
/**
 * @typedef {Object} TOC
 * @property {Number} index
 * @property {String} data
 */
 
/**
 * Generates a TOC object
 * @param {String} source
 * @param {Object} [options]
 * @param {Number} [options.maxDepth]
 * @param {Char}   [options.bullet]
 * @returns {TOC}
 */
module.exports = function (source, options) {
    var toc = new Toc(source, options),
        tocIndex = toc.getIndex();
 
    if (tocIndex === -1) return { index: -1, data: '' };
 
    var tocSource = source.substring(tocIndex),
        tokens = marked.lexer(tocSource),
        prevToken;
 
    for (var i = 0; i < tokens.length; i++) {
        if (tokens[i].type === 'heading') {
            var header = tokens[i];
            toc.addTocElem(header, prevToken);
        }
 
        prevToken = tokens[i];
    }
 
    return {
        index: toc.getIndex(),
        data: toc.getData()
    };
};