mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
Merge pull request #147 from hegemonic/jshint-clean-v2
Make JSDoc JSHint-clean (part 4/final)
This commit is contained in:
commit
5e587fbc32
38
.jshintrc
38
.jshintrc
@ -15,31 +15,31 @@
|
||||
"strict": false,
|
||||
"trailing": true,
|
||||
|
||||
"asi": true,
|
||||
"boss": true,
|
||||
"debug": true,
|
||||
"asi": false,
|
||||
"boss": false,
|
||||
"debug": false,
|
||||
"eqnull": true,
|
||||
"es5": true,
|
||||
"esnext": true,
|
||||
"evil": true,
|
||||
"expr": true,
|
||||
"funcscope": true,
|
||||
"globalstrict": true,
|
||||
"iterator": true,
|
||||
"lastsemic": true,
|
||||
"laxbreak": true,
|
||||
"laxcomma": true,
|
||||
"evil": false,
|
||||
"expr": false,
|
||||
"funcscope": false,
|
||||
"globalstrict": false,
|
||||
"iterator": false,
|
||||
"lastsemic": false,
|
||||
"laxbreak": false,
|
||||
"laxcomma": false,
|
||||
"loopfunc": true,
|
||||
"multistr": true,
|
||||
"multistr": false,
|
||||
"onecase": true,
|
||||
"proto": true,
|
||||
"regexdash": true,
|
||||
"proto": false,
|
||||
"regexdash": false,
|
||||
"scripturl": true,
|
||||
"shadow": true,
|
||||
"smarttabs": true,
|
||||
"sub": true,
|
||||
"supernew": true,
|
||||
"validthis": true,
|
||||
"shadow": false,
|
||||
"smarttabs": false,
|
||||
"sub": false,
|
||||
"supernew": false,
|
||||
"validthis": false,
|
||||
|
||||
"browser": false,
|
||||
"couch": false,
|
||||
|
||||
4
jsdoc.js
4
jsdoc.js
@ -89,7 +89,7 @@ include.resolve = function(filepath) {
|
||||
}
|
||||
|
||||
return env.dirname + '/' + filepath;
|
||||
}
|
||||
};
|
||||
|
||||
/** Print string/s out to the console.
|
||||
@param {string} ... String/s to print out to console.
|
||||
@ -172,7 +172,7 @@ app = {
|
||||
parser: new (require('jsdoc/src/parser').Parser)(),
|
||||
name: require('jsdoc/name')
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
@ -29,6 +29,10 @@
|
||||
{
|
||||
"name": "Jannon Frank",
|
||||
"email": "jannon@jannon.net"
|
||||
},
|
||||
{
|
||||
"name": "Jeff Williams",
|
||||
"email": "jeffrey.l.williams@gmail.com"
|
||||
}
|
||||
],
|
||||
"maintainers": [
|
||||
|
||||
@ -39,7 +39,7 @@ function getParser(parser, conf) {
|
||||
|
||||
return function(source) {
|
||||
return parser.renderJsonML(parser.toHTMLTree(source, conf.dialect));
|
||||
}
|
||||
};
|
||||
} else {
|
||||
throw "unknown Markdown parser: '" + parser + "'";
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ exports.copyFile = function(inFile, outDir, fileName) {
|
||||
|
||||
outDir = toDir(outDir);
|
||||
|
||||
var inFile = new java.io.File(inFile);
|
||||
inFile = new java.io.File(inFile);
|
||||
var outFile = new java.io.File(outDir+'/'+fileName);
|
||||
|
||||
var bis = new Packages.java.io.BufferedInputStream(new Packages.java.io.FileInputStream(inFile), 4096);
|
||||
|
||||
@ -18,7 +18,7 @@ var doop = require("jsdoc/util/doop").doop;
|
||||
docs.push(doc);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function mapDependencies(index) {
|
||||
var doclets, doc, len, dependencies = {};
|
||||
|
||||
@ -23,7 +23,7 @@ exports.resolveBorrows = function(docs) {
|
||||
if (doc.borrowed) {
|
||||
doc.borrowed.forEach(function(b, i) {
|
||||
var lent = docs.index[b.from], // lent is an array
|
||||
asName = b['as'] || b.from;
|
||||
asName = b.as || b.from;
|
||||
|
||||
if (lent) {
|
||||
var cloned = doop(lent);
|
||||
@ -48,4 +48,4 @@ exports.resolveBorrows = function(docs) {
|
||||
delete doc.borrowed;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -27,7 +27,7 @@ const defaults = {
|
||||
@param {string} [json] - The contents of config.json.
|
||||
*/
|
||||
function Config(json) {
|
||||
var json = JSON.parse( (json || "{}") );
|
||||
json = JSON.parse( (json || "{}") );
|
||||
|
||||
this._config = util.mergeRecurse(defaults, json);
|
||||
}
|
||||
@ -39,5 +39,4 @@ module.exports = Config;
|
||||
*/
|
||||
Config.prototype.get = function() {
|
||||
return this._config;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
/**
|
||||
@overview
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
*/
|
||||
|
||||
/**
|
||||
@module jsdoc/doclet
|
||||
@requires jsdoc/tag
|
||||
@requires jsdoc/name
|
||||
@requires jsdoc/tag/dictionary
|
||||
@module jsdoc/doclet
|
||||
@requires jsdoc/tag
|
||||
@requires jsdoc/name
|
||||
@requires jsdoc/tag/dictionary
|
||||
*/
|
||||
|
||||
var jsdoc = {
|
||||
@ -51,17 +51,17 @@ function codetypeToKind(type) {
|
||||
function unwrap(docletSrc) {
|
||||
if (!docletSrc) { return ''; }
|
||||
|
||||
// note: keep trailing whitespace for @examples
|
||||
// extra opening/closing stars are ignored
|
||||
// left margin is considered a star and a space
|
||||
// use the /m flag on regex to avoid having to guess what this platform's newline is
|
||||
docletSrc =
|
||||
docletSrc.replace(/^\/\*\*+/, '') // remove opening slash+stars
|
||||
.replace(/\**\*\/$/, "\\Z") // replace closing star slash with end-marker
|
||||
.replace(/^\s*(\* ?|\\Z)/gm, '') // remove left margin like: spaces+star or spaces+end-marker
|
||||
.replace(/\s*\\Z$/g, ''); // remove end-marker
|
||||
// note: keep trailing whitespace for @examples
|
||||
// extra opening/closing stars are ignored
|
||||
// left margin is considered a star and a space
|
||||
// use the /m flag on regex to avoid having to guess what this platform's newline is
|
||||
docletSrc =
|
||||
docletSrc.replace(/^\/\*\*+/, '') // remove opening slash+stars
|
||||
.replace(/\**\*\/$/, "\\Z") // replace closing star slash with end-marker
|
||||
.replace(/^\s*(\* ?|\\Z)/gm, '') // remove left margin like: spaces+star or spaces+end-marker
|
||||
.replace(/\s*\\Z$/g, ''); // remove end-marker
|
||||
|
||||
return docletSrc;
|
||||
return docletSrc;
|
||||
}
|
||||
|
||||
function split(docletSrc) {
|
||||
@ -69,14 +69,14 @@ function split(docletSrc) {
|
||||
tagText,
|
||||
tagTitle;
|
||||
|
||||
// split out the basic tags, keep surrounding whitespace
|
||||
// like: @tagTitle tagBody
|
||||
docletSrc
|
||||
.replace(/^(\s*)@(\S)/gm, '$1\\@$2') // replace splitter ats with an arbitrary sequence
|
||||
.split('\\@') // then split on that arbitrary sequence
|
||||
.forEach(function($) {
|
||||
if ($) {
|
||||
var parsedTag = $.match(/^(\S+)(:?\s+(\S[\s\S]*))?/);
|
||||
// split out the basic tags, keep surrounding whitespace
|
||||
// like: @tagTitle tagBody
|
||||
docletSrc
|
||||
.replace(/^(\s*)@(\S)/gm, '$1\\@$2') // replace splitter ats with an arbitrary sequence
|
||||
.split('\\@') // then split on that arbitrary sequence
|
||||
.forEach(function($) {
|
||||
if ($) {
|
||||
var parsedTag = $.match(/^(\S+)(:?\s+(\S[\s\S]*))?/);
|
||||
|
||||
if (parsedTag) {
|
||||
// we don't need parsedTag[0]
|
||||
@ -91,9 +91,9 @@ function split(docletSrc) {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return tagSrcs;
|
||||
});
|
||||
|
||||
return tagSrcs;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -116,9 +116,9 @@ function toTags(docletSrc) {
|
||||
|
||||
function fixDescription(docletSrc) {
|
||||
if (!/^\s*@/.test(docletSrc)) {
|
||||
docletSrc = '@description ' + docletSrc;
|
||||
}
|
||||
return docletSrc;
|
||||
docletSrc = '@description ' + docletSrc;
|
||||
}
|
||||
return docletSrc;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -144,7 +144,7 @@ exports.Doclet = function(docletSrc, meta) {
|
||||
}
|
||||
|
||||
this.postProcess();
|
||||
}
|
||||
};
|
||||
|
||||
/** Called once after all tags have been added. */
|
||||
exports.Doclet.prototype.postProcess = function() {
|
||||
@ -172,7 +172,7 @@ exports.Doclet.prototype.postProcess = function() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** Add a tag to this doclet.
|
||||
@param {string} title - The title of the tag being added.
|
||||
@ -183,7 +183,7 @@ exports.Doclet.prototype.addTag = function(title, text) {
|
||||
newTag = new jsdoc.tag.Tag(title, text, this.meta);
|
||||
|
||||
if (tagDef && tagDef.onTagged) {
|
||||
tagDef.onTagged(this, newTag)
|
||||
tagDef.onTagged(this, newTag);
|
||||
}
|
||||
|
||||
if (!tagDef) {
|
||||
@ -192,7 +192,7 @@ exports.Doclet.prototype.addTag = function(title, text) {
|
||||
}
|
||||
|
||||
applyTag.call(this, newTag);
|
||||
}
|
||||
};
|
||||
|
||||
/** Set the `memberof` property of this doclet.
|
||||
@param {string} sid - The longname of the symbol that this doclet is a member of.
|
||||
@ -204,7 +204,7 @@ exports.Doclet.prototype.setMemberof = function(sid) {
|
||||
@type string
|
||||
*/
|
||||
this.memberof = sid.replace(/\.prototype/g, '#');
|
||||
}
|
||||
};
|
||||
|
||||
/** Set the `longname` property of this doclet.
|
||||
@param {string} name
|
||||
@ -220,7 +220,7 @@ exports.Doclet.prototype.setLongname = function(name) {
|
||||
if (jsdoc.tag.dictionary.isNamespace(this.kind)) {
|
||||
this.longname = jsdoc.name.applyNamespace(this.longname, this.kind);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** Add a symbol to this doclet's `borrowed` array.
|
||||
@param {string} source - The longname of the symbol that is the source.
|
||||
@ -238,7 +238,7 @@ exports.Doclet.prototype.borrow = function(source, target) {
|
||||
this.borrowed = [];
|
||||
}
|
||||
this.borrowed.push(about);
|
||||
}
|
||||
};
|
||||
|
||||
exports.Doclet.prototype.mix = function(source) {
|
||||
if (!this.mixes) {
|
||||
@ -249,7 +249,7 @@ exports.Doclet.prototype.mix = function(source) {
|
||||
this.mixes = [];
|
||||
}
|
||||
this.mixes.push(source);
|
||||
}
|
||||
};
|
||||
|
||||
/** Add a symbol to this doclet's `augments` array.
|
||||
@param {string} base - The longname of the base symbol.
|
||||
@ -263,7 +263,7 @@ exports.Doclet.prototype.augment = function(base) {
|
||||
this.augments = [];
|
||||
}
|
||||
this.augments.push(base);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Set the `meta` property of this doclet.
|
||||
@ -329,4 +329,4 @@ exports.Doclet.prototype.setMeta = function(meta) {
|
||||
this.meta.code.paramnames = meta.code.paramnames.concat([]);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -91,7 +91,7 @@ exports.resolve = function(doclet) {
|
||||
if (about.variation) {
|
||||
doclet.variation = about.variation;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@inner
|
||||
@ -113,7 +113,7 @@ function quoteUnsafe(name, kind) { // docspaced names may have unsafe characters
|
||||
RegExp.escape = RegExp.escape || function(str) {
|
||||
var specials = new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"); // .*+?|()[]{}\
|
||||
return str.replace(specials, "\\$&");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@method module:jsdoc/name.applyNamespace
|
||||
@ -123,15 +123,15 @@ RegExp.escape = RegExp.escape || function(str) {
|
||||
*/
|
||||
exports.applyNamespace = function(longname, ns) {
|
||||
var nameParts = exports.shorten(longname),
|
||||
name = nameParts.name,
|
||||
longname = nameParts.longname;
|
||||
name = nameParts.name;
|
||||
longname = nameParts.longname;
|
||||
|
||||
if ( !/^[a-zA-Z]+?:.+$/i.test(name) ) {
|
||||
longname = longname.replace( new RegExp(RegExp.escape(name)+'$'), ns + ':' + name );
|
||||
}
|
||||
|
||||
return longname;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Given a longname like "a.b#c(2)", slice it up into ["a.b", "#", 'c', '2'],
|
||||
@ -161,21 +161,22 @@ exports.shorten = function(longname, forcedMemberof) {
|
||||
var name = '',
|
||||
scope = '', // ., ~, or #
|
||||
memberof = '',
|
||||
parts,
|
||||
variation;
|
||||
|
||||
longname = longname.replace( /\.prototype\.?/g, '#' );
|
||||
|
||||
if (typeof forcedMemberof !== 'undefined') {
|
||||
name = longname.substr(forcedMemberof.length);
|
||||
var parts = forcedMemberof.match(/^(.*?)([#.~]?)$/);
|
||||
parts = forcedMemberof.match(/^(.*?)([#.~]?)$/);
|
||||
|
||||
if (parts[1]) { memberof = parts[1] || forcedMemberof; }
|
||||
if (parts[2]) { scope = parts[2]; }
|
||||
}
|
||||
else {
|
||||
var parts = longname?
|
||||
(longname.match( /^(:?(.+)([#.~]))?(.+?)$/ ) || []).reverse()
|
||||
: [''];
|
||||
parts = longname?
|
||||
(longname.match( /^(:?(.+)([#.~]))?(.+?)$/ ) || []).reverse()
|
||||
: [''];
|
||||
|
||||
name = parts[0] || ''; // ensure name is always initialised to avoid error being thrown when calling replace on undefined [gh-24]
|
||||
scope = parts[1] || ''; // ., ~, or #
|
||||
@ -198,7 +199,7 @@ exports.shorten = function(longname, forcedMemberof) {
|
||||
|
||||
////
|
||||
return {longname: longname, memberof: memberof, scope: scope, name: name, variation: variation};
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Split a string that starts with a name and ends with a description, into its parts.
|
||||
@ -241,4 +242,4 @@ exports.splitName = function(nameDesc) {
|
||||
}
|
||||
|
||||
return { name: name, description: desc };
|
||||
}
|
||||
};
|
||||
|
||||
@ -51,14 +51,14 @@ exports.parse = function(args) {
|
||||
ourOptions = argParser.parse(args, defaults);
|
||||
|
||||
return ourOptions;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Display help message for options.
|
||||
*/
|
||||
exports.help = function() {
|
||||
return argParser.help();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Get a named option.
|
||||
@ -75,4 +75,4 @@ exports.get = function(name) {
|
||||
else {
|
||||
return ourOptions[name];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -66,5 +66,4 @@ exports.Package = function(json) {
|
||||
* ]
|
||||
*/
|
||||
this.licenses = json.licenses;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@ function getParser(parser, conf) {
|
||||
|
||||
return function(source) {
|
||||
return parser.renderJsonML(parser.toHTMLTree(source, conf.dialect));
|
||||
}
|
||||
};
|
||||
}
|
||||
else {
|
||||
throw 'unknown Markdown parser: "' + parser + '"';
|
||||
|
||||
@ -20,7 +20,7 @@ exports.Filter = function(opts) {
|
||||
this.excludePattern = opts.excludePattern?
|
||||
typeof opts.excludePattern === 'string'? new RegExp(opts.excludePattern) : opts.excludePattern
|
||||
: null;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@param {string} filepath - The filepath to check.
|
||||
@ -40,4 +40,4 @@ exports.Filter.prototype.isIncluded = function(filepath) {
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@ -83,14 +83,14 @@ exports.Parser.prototype.parse = function(sourceFiles, encoding) {
|
||||
*/
|
||||
exports.Parser.prototype.results = function() {
|
||||
return this._resultBuffer;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Object} o The parse result to add to the result buffer.
|
||||
*/
|
||||
exports.Parser.prototype.addResult = function(o) {
|
||||
this._resultBuffer.push(o);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Empty any accumulated results of calls to parse.
|
||||
@ -99,21 +99,21 @@ exports.Parser.prototype.clear = function() {
|
||||
currentParser = null;
|
||||
currentSourceName = '';
|
||||
this._resultBuffer = [];
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds a node visitor to use in parsing
|
||||
*/
|
||||
exports.Parser.prototype.addNodeVisitor = function(visitor) {
|
||||
this._visitors.push(visitor);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the node visitors used in parsing
|
||||
*/
|
||||
exports.Parser.prototype.getVisitors = function() {
|
||||
return this._visitors;
|
||||
}
|
||||
};
|
||||
|
||||
function pretreat(code) {
|
||||
return code
|
||||
@ -168,7 +168,7 @@ function nodeToString(node) {
|
||||
str = [nodeToString(node.target), node.property.string].join('.');
|
||||
}
|
||||
else if (node.type === Token.VAR) {
|
||||
str = nodeToString(node.target)
|
||||
str = nodeToString(node.target);
|
||||
}
|
||||
else if (node.type === Token.NAME) {
|
||||
str = node.string;
|
||||
@ -281,7 +281,7 @@ function makeVarsFinisher(funcDoc) {
|
||||
if (funcDoc && e.doclet && e.doclet.alias) {
|
||||
funcDoc.meta.vars[e.code.name] = e.doclet.longname;
|
||||
}
|
||||
}
|
||||
};
|
||||
return func;
|
||||
}
|
||||
|
||||
@ -303,6 +303,9 @@ function visitNode(node) {
|
||||
nodeComments,
|
||||
comment,
|
||||
commentSrc,
|
||||
basename,
|
||||
func,
|
||||
funcDoc,
|
||||
i,
|
||||
l;
|
||||
|
||||
@ -316,17 +319,16 @@ function visitNode(node) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (commentSrc = ''+comment.toSource()) {
|
||||
commentSrc = '' + comment.toSource();
|
||||
|
||||
if ( commentSrc && isValidJsdoc(commentSrc) ) {
|
||||
e = {
|
||||
comment: commentSrc,
|
||||
lineno: comment.getLineno(),
|
||||
filename: currentSourceName
|
||||
};
|
||||
|
||||
if ( isValidJsdoc(commentSrc) ) {
|
||||
currentParser.fire('jsdocCommentFound', e, currentParser);
|
||||
}
|
||||
currentParser.fire('jsdocCommentFound', e, currentParser);
|
||||
}
|
||||
}
|
||||
e = null;
|
||||
@ -343,7 +345,7 @@ function visitNode(node) {
|
||||
finishers: [currentParser.addDocletRef]
|
||||
};
|
||||
|
||||
var basename = getBasename(e.code.name);
|
||||
basename = getBasename(e.code.name);
|
||||
|
||||
if (basename !== 'this') {
|
||||
e.code.funcscope = currentParser.resolveVar(node, basename);
|
||||
@ -385,8 +387,8 @@ function visitNode(node) {
|
||||
};
|
||||
|
||||
// keep track of vars in a function or global scope
|
||||
var func = "__global__",
|
||||
funcDoc = null;
|
||||
func = "__global__";
|
||||
funcDoc = null;
|
||||
if (node.enclosingFunction) {
|
||||
func = 'astnode'+node.enclosingFunction.hashCode();
|
||||
}
|
||||
@ -413,8 +415,8 @@ function visitNode(node) {
|
||||
//console.log(':: e.code.name is', e.code.name);
|
||||
|
||||
// keep track of vars in a function or global scope
|
||||
var func = "__global__",
|
||||
funcDoc = null;
|
||||
func = "__global__";
|
||||
funcDoc = null;
|
||||
if (node.enclosingFunction) {
|
||||
func = 'astnode'+node.enclosingFunction.hashCode();
|
||||
}
|
||||
@ -425,12 +427,12 @@ function visitNode(node) {
|
||||
e.finishers.push(makeVarsFinisher(funcDoc));
|
||||
}
|
||||
|
||||
var basename = getBasename(e.code.name)
|
||||
basename = getBasename(e.code.name);
|
||||
e.code.funcscope = currentParser.resolveVar(node, basename);
|
||||
}
|
||||
|
||||
if (!e) { e = {finishers: []}; }
|
||||
for(var i = 0, l = currentParser._visitors.length; i < l; i++) {
|
||||
for(i = 0, l = currentParser._visitors.length; i < l; i++) {
|
||||
currentParser._visitors[i].visitNode(node, e, currentParser, currentSourceName);
|
||||
if (e.stopPropagation) { break; }
|
||||
}
|
||||
@ -439,7 +441,7 @@ function visitNode(node) {
|
||||
currentParser.fire(e.event, e, currentParser);
|
||||
}
|
||||
|
||||
for (var i = 0, l = e.finishers.length; i < l; i++) {
|
||||
for (i = 0, l = e.finishers.length; i < l; i++) {
|
||||
e.finishers[i].call(currentParser, e);
|
||||
}
|
||||
|
||||
@ -470,7 +472,7 @@ exports.Parser.prototype._parseSourceCode = function(sourceCode, sourceName) {
|
||||
this.fire('fileComplete', e);
|
||||
|
||||
currentSourceName = '';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Given a node, determine what the node is a member of.
|
||||
@ -479,7 +481,8 @@ exports.Parser.prototype._parseSourceCode = function(sourceCode, sourceName) {
|
||||
*/
|
||||
exports.Parser.prototype.astnodeToMemberof = function(node) {
|
||||
var id,
|
||||
doclet;
|
||||
doclet,
|
||||
alias;
|
||||
|
||||
if (node.type === Token.VAR || node.type === Token.FUNCTION || node.type == tkn.NAMEDFUNCTIONSTATEMENT) {
|
||||
if (node.enclosingFunction) { // an inner var or func
|
||||
@ -499,7 +502,7 @@ exports.Parser.prototype.astnodeToMemberof = function(node) {
|
||||
id = 'astnode'+scope.enclosingFunction.hashCode();
|
||||
doclet = this.refs[id];
|
||||
if (doclet && doclet.meta.vars && basename in doclet.meta.vars) {
|
||||
var alias = hasOwnProp.call(doclet.meta.vars, basename)? doclet.meta.vars[basename] : false;
|
||||
alias = hasOwnProp.call(doclet.meta.vars, basename)? doclet.meta.vars[basename] : false;
|
||||
if (alias !== false) {
|
||||
return [alias, basename];
|
||||
}
|
||||
@ -508,9 +511,9 @@ exports.Parser.prototype.astnodeToMemberof = function(node) {
|
||||
scope = scope.enclosingFunction;
|
||||
}
|
||||
//First check to see if we have a global scope alias
|
||||
doclet = this.refs["__global__"];
|
||||
doclet = this.refs.__global__;
|
||||
if (doclet && doclet.meta.vars && hasOwnProp.call(doclet.meta.vars, basename)) {
|
||||
var alias = doclet.meta.vars[basename];
|
||||
alias = doclet.meta.vars[basename];
|
||||
if (alias !== false) {
|
||||
return [alias, basename];
|
||||
}
|
||||
@ -523,7 +526,7 @@ exports.Parser.prototype.astnodeToMemberof = function(node) {
|
||||
}
|
||||
return doclet.longname||doclet.name;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Resolve what "this" refers too, relative to a node.
|
||||
@ -579,7 +582,7 @@ exports.Parser.prototype.resolveThis = function(node) {
|
||||
else {
|
||||
return ''; // global?
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Given: foo = { x:1 }, find foo from x.
|
||||
@ -598,7 +601,7 @@ exports.Parser.prototype.resolvePropertyParent = function(node) {
|
||||
|
||||
if (memberof.doclet) { return memberof; }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Resolve what function a var is limited to.
|
||||
@ -617,7 +620,7 @@ exports.Parser.prototype.resolveVar = function(node, basename) {
|
||||
}
|
||||
|
||||
return this.resolveVar(enclosingFunction, basename);
|
||||
}
|
||||
};
|
||||
|
||||
exports.Parser.prototype.addDocletRef = function(e) {
|
||||
var node = e.code.node;
|
||||
@ -630,7 +633,7 @@ exports.Parser.prototype.addDocletRef = function(e) {
|
||||
meta: { code: e.code }
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
exports.Parser.prototype.resolveEnum = function(e) {
|
||||
var doop = require("jsdoc/util/doop").doop,
|
||||
@ -645,7 +648,7 @@ exports.Parser.prototype.resolveEnum = function(e) {
|
||||
// use a copy of the doclet to avoid circular references
|
||||
parent.doclet.properties.push( doop(e.doclet) );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Fired whenever the parser encounters a JSDoc comment in the current source code.
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
/**
|
||||
@module jsdoc/src/scanner
|
||||
@requires module:common/fs
|
||||
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
@module jsdoc/src/scanner
|
||||
@requires module:common/fs
|
||||
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
*/
|
||||
|
||||
|
||||
var common = {
|
||||
mixin: require('common/util').mixin,
|
||||
events: require('common/events')
|
||||
mixin: require('common/util').mixin,
|
||||
events: require('common/events')
|
||||
};
|
||||
|
||||
var fs = require('fs');
|
||||
@ -19,43 +19,42 @@ var fs = require('fs');
|
||||
@mixes module:common.events
|
||||
*/
|
||||
exports.Scanner = function() {
|
||||
}
|
||||
};
|
||||
common.mixin(exports.Scanner.prototype, common.events);
|
||||
|
||||
/**
|
||||
Recursively searches the given searchPaths for js files.
|
||||
@param {Array.<string>} searchPaths
|
||||
@param {number} [depth=1]
|
||||
@fires sourceFileFound
|
||||
Recursively searches the given searchPaths for js files.
|
||||
@param {Array.<string>} searchPaths
|
||||
@param {number} [depth=1]
|
||||
@fires sourceFileFound
|
||||
*/
|
||||
exports.Scanner.prototype.scan = function(searchPaths, depth, filter) {
|
||||
var filePaths = [],
|
||||
that = this;
|
||||
var filePaths = [],
|
||||
that = this;
|
||||
|
||||
searchPaths = searchPaths || [];
|
||||
depth = depth || 1;
|
||||
searchPaths = searchPaths || [];
|
||||
depth = depth || 1;
|
||||
|
||||
searchPaths.forEach(function($) {
|
||||
var filepath = decodeURIComponent($);
|
||||
searchPaths.forEach(function($) {
|
||||
var filepath = decodeURIComponent($);
|
||||
if ( fs.stat(filepath).isFile() ) {
|
||||
filePaths.push(filepath);
|
||||
}
|
||||
else {
|
||||
filePaths = filePaths.concat(fs.ls(filepath, depth));
|
||||
}
|
||||
});
|
||||
|
||||
filePaths = filePaths.filter(function($) {
|
||||
return filter.isIncluded($);
|
||||
});
|
||||
|
||||
filePaths = filePaths.filter(function($) {
|
||||
var e = { fileName: $ };
|
||||
}
|
||||
});
|
||||
|
||||
filePaths = filePaths.filter(function($) {
|
||||
return filter.isIncluded($);
|
||||
});
|
||||
|
||||
filePaths = filePaths.filter(function($) {
|
||||
var e = { fileName: $ };
|
||||
that.fire('sourceFileFound', e);
|
||||
|
||||
return !e.defaultPrevented;
|
||||
});
|
||||
|
||||
return filePaths;
|
||||
}
|
||||
|
||||
return !e.defaultPrevented;
|
||||
});
|
||||
|
||||
return filePaths;
|
||||
};
|
||||
|
||||
@ -70,8 +70,8 @@ function parseParamText(tagText) {
|
||||
@param {object=} meta
|
||||
*/
|
||||
exports.Tag = function(tagTitle, tagBody, meta) {
|
||||
var tagDef = jsdoc.tag.dictionary.lookUp(tagTitle),
|
||||
meta = meta || {};
|
||||
var tagDef = jsdoc.tag.dictionary.lookUp(tagTitle);
|
||||
meta = meta || {};
|
||||
|
||||
this.originalTitle = trim(tagTitle);
|
||||
|
||||
@ -137,4 +137,4 @@ exports.Tag = function(tagTitle, tagBody, meta) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -27,7 +27,7 @@ function TagDefinition(title, etc) {
|
||||
TagDefinition.prototype.synonym = function(synonymName) {
|
||||
_synonyms[synonymName.toLowerCase()] = this.title;
|
||||
return this; // chainable
|
||||
}
|
||||
};
|
||||
|
||||
/** @exports jsdoc/tag/dictionary */
|
||||
dictionary = {
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
/*global app: true, env: true */
|
||||
/**
|
||||
Define tags that are known in JSDoc.
|
||||
@module jsdoc/tag/dictionary/definitions
|
||||
Define tags that are known in JSDoc.
|
||||
@module jsdoc/tag/dictionary/definitions
|
||||
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
*/
|
||||
|
||||
/** @private */
|
||||
@ -66,7 +66,7 @@ function setDocletNameToFilename(doclet, tag) {
|
||||
for (var i = 0, len = env.opts._.length; i < len; i++) {
|
||||
if (name.indexOf(env.opts._[i]) === 0) {
|
||||
name = name.replace(env.opts._[0], '');
|
||||
break
|
||||
break;
|
||||
}
|
||||
}
|
||||
doclet.name = name;
|
||||
@ -224,31 +224,31 @@ exports.defineTags = function(dictionary) {
|
||||
}
|
||||
});
|
||||
|
||||
dictionary.defineTag('default', {
|
||||
dictionary.defineTag('default', {
|
||||
onTagged: function(doclet, tag) {
|
||||
if (tag.value) {
|
||||
doclet.defaultvalue = tag.value;
|
||||
}
|
||||
else if (doclet.meta && doclet.meta.code && typeof doclet.meta.code.value !== 'undefined') {
|
||||
if (doclet.meta.code.type && /STRING|NUMBER|NAME|TRUE|FALSE/.test(doclet.meta.code.type)) {
|
||||
doclet.defaultvalue = doclet.meta.code.value;
|
||||
if (doclet.meta.code.type === 'STRING') {
|
||||
// TODO: handle escaped quotes in values
|
||||
doclet.defaultvalue = '"'+doclet.defaultvalue.replace(/"/g, '\\"')+'"'
|
||||
}
|
||||
|
||||
if (doclet.defaultvalue === 'TRUE' || doclet.defaultvalue == 'FALSE') {
|
||||
doclet.defaultvalue = doclet.defaultvalue.toLowerCase();
|
||||
}
|
||||
}
|
||||
else if (doclet.meta.code.type === 'NULL') {
|
||||
// TODO: handle escaped quotes in values
|
||||
doclet.defaultvalue = 'null'
|
||||
}
|
||||
}
|
||||
doclet.defaultvalue = tag.value;
|
||||
}
|
||||
else if (doclet.meta && doclet.meta.code && typeof doclet.meta.code.value !== 'undefined') {
|
||||
if (doclet.meta.code.type && /STRING|NUMBER|NAME|TRUE|FALSE/.test(doclet.meta.code.type)) {
|
||||
doclet.defaultvalue = doclet.meta.code.value;
|
||||
if (doclet.meta.code.type === 'STRING') {
|
||||
// TODO: handle escaped quotes in values
|
||||
doclet.defaultvalue = '"'+doclet.defaultvalue.replace(/"/g, '\\"')+'"';
|
||||
}
|
||||
|
||||
if (doclet.defaultvalue === 'TRUE' || doclet.defaultvalue == 'FALSE') {
|
||||
doclet.defaultvalue = doclet.defaultvalue.toLowerCase();
|
||||
}
|
||||
}
|
||||
else if (doclet.meta.code.type === 'NULL') {
|
||||
// TODO: handle escaped quotes in values
|
||||
doclet.defaultvalue = 'null';
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.synonym('defaultvalue');
|
||||
.synonym('defaultvalue');
|
||||
|
||||
dictionary.defineTag('deprecated', {
|
||||
// value is optional
|
||||
@ -440,7 +440,9 @@ exports.defineTags = function(dictionary) {
|
||||
onTagged: function(doclet, tag) {
|
||||
setDocletKindToTitle(doclet, tag);
|
||||
setDocletNameToValue(doclet, tag);
|
||||
doclet.name || setDocletNameToFilename(doclet, tag);
|
||||
if (!doclet.name) {
|
||||
setDocletNameToFilename(doclet, tag);
|
||||
}
|
||||
if (tag.value && tag.value.type) {
|
||||
doclet.type = tag.value.type;
|
||||
}
|
||||
@ -645,4 +647,4 @@ exports.defineTags = function(dictionary) {
|
||||
doclet.version = tag.value;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,133 +1,133 @@
|
||||
/**
|
||||
@module jsdoc/tag/type
|
||||
@module jsdoc/tag/type
|
||||
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
@author Michael Mathews <micmath@gmail.com>
|
||||
@license Apache License 2.0 - See file 'LICENSE.md' in this project.
|
||||
*/
|
||||
|
||||
|
||||
function parseOptional(type) {
|
||||
var optional = null;
|
||||
var optional = null;
|
||||
|
||||
// {sometype=} means optional
|
||||
if ( /(.+)=$/.test(type) ) {
|
||||
type = RegExp.$1;
|
||||
optional = true;
|
||||
}
|
||||
// {sometype=} means optional
|
||||
if ( /(.+)=$/.test(type) ) {
|
||||
type = RegExp.$1;
|
||||
optional = true;
|
||||
}
|
||||
|
||||
return { type: type, optional: optional };
|
||||
return { type: type, optional: optional };
|
||||
}
|
||||
|
||||
function parseNullable(type) {
|
||||
var nullable = null;
|
||||
var nullable = null;
|
||||
|
||||
// {?sometype} means nullable, {!sometype} means not-nullable
|
||||
if ( /^([\?\!])(.+)$/.test(type) ) {
|
||||
type = RegExp.$2;
|
||||
nullable = (RegExp.$1 === '?')? true : false;
|
||||
}
|
||||
// {?sometype} means nullable, {!sometype} means not-nullable
|
||||
if ( /^([\?\!])(.+)$/.test(type) ) {
|
||||
type = RegExp.$2;
|
||||
nullable = (RegExp.$1 === '?')? true : false;
|
||||
}
|
||||
|
||||
return { type: type, nullable: nullable };
|
||||
return { type: type, nullable: nullable };
|
||||
}
|
||||
|
||||
function parseVariable(type) {
|
||||
var variable = null;
|
||||
var variable = null;
|
||||
|
||||
// {...sometype} means variable number of that type
|
||||
if ( /^(\.\.\.)(.+)$/.test(type) ) {
|
||||
type = RegExp.$2;
|
||||
variable = true;
|
||||
}
|
||||
// {...sometype} means variable number of that type
|
||||
if ( /^(\.\.\.)(.+)$/.test(type) ) {
|
||||
type = RegExp.$2;
|
||||
variable = true;
|
||||
}
|
||||
|
||||
return { type: type, variable: variable };
|
||||
return { type: type, variable: variable };
|
||||
}
|
||||
|
||||
function parseTypes(type) {
|
||||
var types = [];
|
||||
var types = [];
|
||||
|
||||
if ( type.indexOf('|') !== -1 ) {
|
||||
// remove optional parens, like: { ( string | number ) }
|
||||
// see: http://code.google.com/closure/compiler/docs/js-for-compiler.html#types
|
||||
if ( /^\s*\(\s*(.+)\s*\)\s*$/.test(type) ) {
|
||||
type = RegExp.$1;
|
||||
}
|
||||
types = type.split(/\s*\|\s*/g);
|
||||
}
|
||||
else if (type) {
|
||||
types = [type];
|
||||
}
|
||||
if ( type.indexOf('|') !== -1 ) {
|
||||
// remove optional parens, like: { ( string | number ) }
|
||||
// see: http://code.google.com/closure/compiler/docs/js-for-compiler.html#types
|
||||
if ( /^\s*\(\s*(.+)\s*\)\s*$/.test(type) ) {
|
||||
type = RegExp.$1;
|
||||
}
|
||||
types = type.split(/\s*\|\s*/g);
|
||||
}
|
||||
else if (type) {
|
||||
types = [type];
|
||||
}
|
||||
|
||||
return types;
|
||||
return types;
|
||||
}
|
||||
|
||||
/** @private */
|
||||
function trim(text) {
|
||||
return text.trim();
|
||||
return text.trim();
|
||||
}
|
||||
|
||||
function getTagType(tagValue) {
|
||||
var type = '',
|
||||
text = '',
|
||||
count = 0;
|
||||
var type = '',
|
||||
text = '',
|
||||
count = 0;
|
||||
|
||||
// type expressions start with '{'
|
||||
if (tagValue[0] === '{') {
|
||||
count++;
|
||||
// type expressions start with '{'
|
||||
if (tagValue[0] === '{') {
|
||||
count++;
|
||||
|
||||
// find matching closer '}'
|
||||
for (var i = 1, leni = tagValue.length; i < leni; i++) {
|
||||
if (tagValue[i] === '\\') { i++; continue; } // backslash escapes the next character
|
||||
// find matching closer '}'
|
||||
for (var i = 1, leni = tagValue.length; i < leni; i++) {
|
||||
if (tagValue[i] === '\\') { i++; continue; } // backslash escapes the next character
|
||||
|
||||
if (tagValue[i] === '{') { count++; }
|
||||
else if (tagValue[i] === '}') { count--; }
|
||||
if (tagValue[i] === '{') { count++; }
|
||||
else if (tagValue[i] === '}') { count--; }
|
||||
|
||||
if (count === 0) {
|
||||
type = trim(tagValue.slice(1, i))
|
||||
.replace(/\\\{/g, '{') // unescape escaped curly braces
|
||||
.replace(/\\\}/g, '}');
|
||||
text = trim(tagValue.slice(i+1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return { type: type, text: text };
|
||||
if (count === 0) {
|
||||
type = trim(tagValue.slice(1, i))
|
||||
.replace(/\\\{/g, '{') // unescape escaped curly braces
|
||||
.replace(/\\\}/g, '}');
|
||||
text = trim(tagValue.slice(i+1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return { type: type, text: text };
|
||||
}
|
||||
exports.getTagType = getTagType;
|
||||
|
||||
|
||||
/**
|
||||
@param {string} tagValue
|
||||
@returns {object} Hash with type, text, optional, nullable, and variable properties
|
||||
@param {string} tagValue
|
||||
@returns {object} Hash with type, text, optional, nullable, and variable properties
|
||||
*/
|
||||
exports.parse = function(tagValue) {
|
||||
if (typeof tagValue !== 'string') { tagValue = ''; }
|
||||
var type = '',
|
||||
text = '',
|
||||
tagType,
|
||||
optional,
|
||||
nullable,
|
||||
variable;
|
||||
|
||||
tagType = getTagType(tagValue);
|
||||
if (typeof tagValue !== 'string') { tagValue = ''; }
|
||||
var type = '',
|
||||
text = '',
|
||||
tagType,
|
||||
optional,
|
||||
nullable,
|
||||
variable;
|
||||
|
||||
tagType = getTagType(tagValue);
|
||||
type = tagType.type;
|
||||
if (tagType.type === '') {
|
||||
text = tagValue;
|
||||
} else {
|
||||
text = tagType.text;
|
||||
}
|
||||
|
||||
optional = parseOptional(type);
|
||||
nullable = parseNullable(type);
|
||||
variable = parseVariable(type);
|
||||
type = variable.type || nullable.type || optional.type;
|
||||
|
||||
optional = parseOptional(type);
|
||||
nullable = parseNullable(type);
|
||||
variable = parseVariable(type);
|
||||
type = variable.type || nullable.type || optional.type;
|
||||
|
||||
type = parseTypes(type); // make it into an array
|
||||
type = parseTypes(type); // make it into an array
|
||||
|
||||
return {
|
||||
type: type,
|
||||
text: text,
|
||||
optional: optional.optional,
|
||||
nullable: nullable.nullable,
|
||||
variable: variable.variable
|
||||
};
|
||||
}
|
||||
return {
|
||||
type: type,
|
||||
text: text,
|
||||
optional: optional.optional,
|
||||
nullable: nullable.nullable,
|
||||
variable: variable.variable
|
||||
};
|
||||
};
|
||||
|
||||
@ -48,4 +48,4 @@ exports.validate = function(tag, meta) {
|
||||
throw new TagValueNotPermittedError(tag.title, meta);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -108,7 +108,7 @@ exports.resolve = function() {
|
||||
}
|
||||
|
||||
item = conf[name];
|
||||
current = tutorials[name]
|
||||
current = tutorials[name];
|
||||
|
||||
// set title
|
||||
if (item.title) {
|
||||
|
||||
@ -48,7 +48,7 @@ seen.has = function(object) {
|
||||
if (seen[i] === object) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function stringify(o) {
|
||||
return JSON.stringify(o);
|
||||
@ -90,19 +90,18 @@ function isObject(o) {
|
||||
}
|
||||
|
||||
function walk(object) {
|
||||
var value;
|
||||
|
||||
if ( value = getValue(object) ) {
|
||||
var value = getValue(object);
|
||||
if (value) {
|
||||
output += value + ',\n';
|
||||
}
|
||||
else if ( isUnwalkable(object) ) {
|
||||
output += '<Object>,\n'
|
||||
output += '<Object>,\n';
|
||||
}
|
||||
else if ( isRegExp(object) ) {
|
||||
output += '<RegExp ' + object + '>,\n'
|
||||
output += '<RegExp ' + object + '>,\n';
|
||||
}
|
||||
else if ( isDate(object) ) {
|
||||
output += '<Date ' + object.toUTCString() + '>,\n'
|
||||
output += '<Date ' + object.toUTCString() + '>,\n';
|
||||
}
|
||||
else if ( isFunction(object) ) {
|
||||
output += '<Function' + (object.name? ' '+ object.name : '') + '>,\n';
|
||||
@ -153,4 +152,4 @@ exports.dump = function(object) {
|
||||
walk(object);
|
||||
outdent(false);
|
||||
return output;
|
||||
}
|
||||
};
|
||||
|
||||
@ -46,7 +46,7 @@ function strToFilename(str) {
|
||||
// allow for namespace prefix
|
||||
var basename = str.replace(nsprefix, '$1-');
|
||||
|
||||
if ( /[^$a-z0-9._-]/i.test(basename) ) {
|
||||
if ( /[^$a-z0-9._\-]/i.test(basename) ) {
|
||||
return hash.hex_md5(str).substr(0, 10);
|
||||
}
|
||||
return makeFilenameUnique(basename, str);
|
||||
@ -61,7 +61,7 @@ var linkMap = {
|
||||
exports.registerLink = function(longname, url) {
|
||||
linkMap.longnameToUrl[longname] = url;
|
||||
linkMap.urlToLongname[url] = longname;
|
||||
}
|
||||
};
|
||||
|
||||
function toLink(longname, content) {
|
||||
if (!longname) {
|
||||
@ -81,8 +81,8 @@ function toLink(longname, content) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
url = linkMap.longnameToUrl[longname];
|
||||
}
|
||||
url = linkMap.longnameToUrl[longname];
|
||||
}
|
||||
|
||||
content = content || longname;
|
||||
|
||||
@ -108,7 +108,7 @@ var toTutorial = exports.toTutorial = function(tutorial, content) {
|
||||
content = content || node.title;
|
||||
|
||||
return '<a href="'+exports.tutorialToUrl(tutorial)+'">'+content+'</a>';
|
||||
}
|
||||
};
|
||||
|
||||
/** Find symbol {@link ...} and {@tutorial ...} strings in text and turn into html links */
|
||||
exports.resolveLinks = function(str) {
|
||||
@ -125,27 +125,29 @@ exports.resolveLinks = function(str) {
|
||||
);
|
||||
|
||||
return str;
|
||||
}
|
||||
};
|
||||
|
||||
/** Turn a doclet into a URL. */
|
||||
exports.createLink = function(doclet) {
|
||||
var url = '';
|
||||
var url = '',
|
||||
longname,
|
||||
filename;
|
||||
|
||||
if (containers.indexOf(doclet.kind) < 0) {
|
||||
var longname = doclet.longname,
|
||||
filename = strToFilename(doclet.memberof || exports.globalName);
|
||||
longname = doclet.longname;
|
||||
filename = strToFilename(doclet.memberof || exports.globalName);
|
||||
|
||||
url = filename + exports.fileExtension + '#' + getNamespace(doclet.kind) + doclet.name;
|
||||
}
|
||||
else {
|
||||
var longname = doclet.longname,
|
||||
filename = strToFilename(longname);
|
||||
longname = doclet.longname;
|
||||
filename = strToFilename(longname);
|
||||
|
||||
url = filename + exports.fileExtension;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
};
|
||||
|
||||
exports.longnameToUrl = linkMap.longnameToUrl;
|
||||
|
||||
|
||||
@ -222,7 +222,7 @@
|
||||
addSignatureReturns(doclet);
|
||||
addAttribs(doclet);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// do this after the urls have all been generated
|
||||
data.forEach(function(doclet) {
|
||||
@ -232,12 +232,12 @@
|
||||
|
||||
if (doclet.kind === 'member') {
|
||||
addSignatureType(doclet);
|
||||
addAttribs(doclet)
|
||||
addAttribs(doclet);
|
||||
}
|
||||
|
||||
if (doclet.kind === 'constant') {
|
||||
addSignatureType(doclet);
|
||||
addAttribs(doclet)
|
||||
addAttribs(doclet);
|
||||
}
|
||||
});
|
||||
|
||||
@ -392,7 +392,7 @@
|
||||
|
||||
html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
|
||||
|
||||
fs.writeFileSync(path, html)
|
||||
fs.writeFileSync(path, html);
|
||||
}
|
||||
|
||||
for (var longname in helper.longnameToUrl) {
|
||||
@ -444,7 +444,7 @@
|
||||
// yes, you can use {@link} in tutorials too!
|
||||
html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
|
||||
|
||||
fs.writeFileSync(path, html)
|
||||
fs.writeFileSync(path, html);
|
||||
}
|
||||
|
||||
// tutorials can have only one parent so there is no risk for loops
|
||||
@ -455,7 +455,7 @@
|
||||
});
|
||||
}
|
||||
saveChildren(tutorials);
|
||||
}
|
||||
};
|
||||
|
||||
function hashToLink(doclet, hash) {
|
||||
if ( !/^(#.+)/.test(hash) ) { return hash; }
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
console.log('The only -d destination option currently supported is "console"!');
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
function graft(parentNode, childNodes, parentLongname, parentName) {
|
||||
childNodes
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user