yuidoc-asp
Version:
YUIDoc, YUI's JavaScript Documentation engine tweaked to work with VB/VBScript comments.
179 lines (170 loc) • 5.59 kB
JavaScript
/**
* Copyright (c) 2011, Yahoo! Inc. All rights reserved.
* Code licensed under the BSD License:
* https://github.com/yui/yuidoc/blob/master/LICENSE
*/
YUI.add('options', function (Y) {
var path = require('path');
/**
* Handles argument parsing
* @module yuidoc
* @class Options
*/
/**
* Parses arguments and returns an Object of config options
* @method Options
* @param {Array} args Arguments to parse
* @return {Object} The config object
*/
Y.Options = function (args) {
/*jshint onevar:false */
var options = {
port: 3000,
nocode: false
};
while (args.length > 0) {
var v = args.shift();
// options.* defined in ./builder.js
switch (v) {
case '--lint':
options.lint = true;
options.parseOnly = true;
options.writeJSON = false;
options.quiet = true;
break;
case "--debug":
Y.applyConfig({
debug: true,
filter: 'debug'
});
break;
case "--charset":
Y.charset = args.shift() || 'utf8';
Y.log('Setting default charset to ' + Y.charset, 'yuidoc', 'warn');
break;
case "-c":
case "--config":
case "--configfile":
options.configfile = args.shift();
break;
case "-e":
case "--extension":
options.extension = args.shift();
break;
case "-x":
case "--exclude":
options.exclude = args.shift();
break;
case "-v":
case "--version":
console.error(Y.packageInfo.version);
process.exit(1);
break;
case "--project-version":
options.version = args.shift();
break;
case "-N":
case "--no-color":
Y.config.useColor = false;
options.nocolor = true;
break;
case "-D":
case "--no-delete-out":
options.nodeleteout = true;
break;
case "-C":
case "--no-code":
options.nocode = true;
break;
case "-n":
case "--norecurse":
options.norecurse = true;
break;
case "-S":
case "--selleck":
options.selleck = true;
break;
case "-V":
case "--view":
options.dumpview = true;
break;
case "-p":
case "--parse-only":
options.parseOnly = true;
break;
case "-o":
case "--outdir":
options.outdir = args.shift();
break;
case "-t":
case "--themedir":
options.themedir = args.shift();
break;
case "--server":
options.server = true;
var a = args.shift();
var p = parseInt(a, 10);
if (isNaN(p) || !p) {
if (a) {
args.unshift(a);
}
Y.log('Failed to extract port, setting to the default :3000', 'warn', 'yuidoc');
} else {
options.port = p;
}
break;
case "-h":
case "--help":
Y.showHelp();
break;
case "-H":
case "--helpers":
var list = args.shift();
if (list) {
options.helpers = list.split(',');
} else {
throw ('Failed to pass a helper file.');
}
break;
case "-T":
case "--theme":
var theme = args.shift();
options.themedir = path.join(__dirname, '../', 'themes', theme);
break;
case "-q":
case "--quiet":
options.quiet = true;
break;
case "--syntaxtype":
options.syntaxtype = args.shift();
break;
case "--tab-to-space":
options.tabtospace = parseInt(args.shift(), 10);
if (typeof options.tabtospace === 'number') {
options.tabspace = '';
for (var s = 0; s < options.tabtospace; s++) {
options.tabspace += ' ';
}
}
break;
case "--no-sort":
options.dontsortfields = true;
break;
default:
if (!options.paths) {
options.paths = [];
}
if (v && v.indexOf('-') === 0) {
throw ('Unknown option: ' + v);
}
options.paths.push(v);
}
}
if (options.quiet) {
Y.applyConfig({
debug: false
});
}
return options;
};
});