Code coverage report for lib/index.js

Statements: 50% (16 / 32)      Branches: 43.75% (7 / 16)      Functions: 66.67% (2 / 3)      Lines: 50% (16 / 32)      Ignored: none     

All files » lib/ » index.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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123                                                  1 1   1 14         1 1 1 1   1 2       2       2     1                                                 1                                                                                     1   1  
/**
 * Copyright (c) 2011, Yahoo! Inc. All rights reserved.
 * Code licensed under the BSD License:
 * https://github.com/yui/yuidoc/blob/master/LICENSE
 */
'use strict';
 
/**
Module creates the YUI instance with the required modules, uses them and exports the **Y** to be used
by the _CLI class_ or by extenders: `require('yuidocjs');`
You can use it like this:
 
    var options = {
        paths: [ './lib' ],
        outdir: './out'
    };
 
    var Y = require('yuidocjs');
    var json = (new Y.YUIDoc(options)).run();
 
@class Main
@exports {YUI} Y A YUI instance
@module yuidoc
*/
//Hacking in debug support
var args = process.argv.slice(2);
var debug = false;
 
args.forEach(function (item) {
    Iif (item.toLowerCase() === '--debug') {
        debug = true;
    }
});
 
var YUI = require('yui' + (debug ? '/debug' : '')).YUI;
var path = require('path');
var fs = require('graceful-fs');
var metaPath = path.join(__dirname, '../', 'package.json');
 
function log (message, level) {
    Iif (!message || !level || typeof console[level] !== 'function') {
        return;
    }
 
    Iif (typeof message === 'object') {
        message = JSON.stringify(message);
    }
 
    console[level]('%s: %s', level, message);
}
 
process.on('uncaughtException', function (msg) {
    var meta = JSON.parse(fs.readFileSync(metaPath)),
        inst = YUI(),
        useColor = (Y ? Y.config.useColor : false);
 
    inst.applyConfig({
        debug: true,
        logFn: log,
        useColor: useColor
    });
 
    inst.log('--------------------------------------------------------------------------', 'error');
    inst.log('An uncaught YUIDoc error has occurred, stack trace given below', 'error');
    inst.log('--------------------------------------------------------------------------', 'error');
    inst.log(msg.stack || msg.message || msg, 'error');
    inst.log('--------------------------------------------------------------------------', 'error');
    inst.log('Node.js version: ' + process.version, 'error');
    inst.log('YUI version: ' + YUI.version, 'error');
    inst.log('YUIDoc version: ' + meta.version, 'error');
    inst.log('Please file all tickets here: ' + meta.bugs.url, 'error');
    inst.log('--------------------------------------------------------------------------', 'error');
 
    process.exit(1);
});
 
var Y = YUI({
    modules: {
        help: {
            fullpath: path.join(__dirname, 'help.js')
        },
        options: {
            fullpath: path.join(__dirname, 'options.js')
        },
        docparser: {
            fullpath: path.join(__dirname, 'docparser.js'),
            requires: ['base-base', 'json-stringify']
        },
        yuidoc: {
            fullpath: path.join(__dirname, 'yuidoc.js')
        },
        'doc-builder': {
            fullpath: path.join(__dirname, 'builder.js'),
            requires: ['parallel', 'handlebars']
        },
        utils: {
            fullpath: path.join(__dirname, 'utils.js')
        },
        files: {
            fullpath: path.join(__dirname, 'files.js')
        },
        docview: {
            fullpath: path.join(__dirname, 'docview.js')
        },
        server: {
            fullpath: path.join(__dirname, 'server.js')
        },
        project: {
            fullpath: path.join(__dirname, 'project.js')
        }
    },
    logExclude: {
        attribute: true,
        handlebars: true
    },
    logFn: log,
    useSync: true
}).use('utils', 'docparser', 'yuidoc', 'doc-builder', 'docview', 'files', 'help', 'options', 'server', 'project');
 
Y.packageInfo = Y.Files.getJSON(metaPath);
 
module.exports = Y;