sbin/res/app/lib/JSDOC/DocComment.js
branchjsdoc
changeset 520 fe008e95a716
parent 519 46e21d060650
child 521 df716b99c5bb
child 522 2b1a07f1d797
--- a/sbin/res/app/lib/JSDOC/DocComment.js	Fri Dec 23 10:59:23 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-if (typeof JSDOC == "undefined") JSDOC = {};
-
-/**
-	Create a new DocComment. This takes a raw documentation comment,
-	and wraps it in useful accessors.
-	@class Represents a documentation comment object.
- */ 
-JSDOC.DocComment = function(/**String*/comment) {
-	this.init();
-	if (typeof comment != "undefined") {
-		this.parse(comment);
-	}
-}
-
-JSDOC.DocComment.prototype.init = function() {
-	this.isUserComment = true;
-	this.src           = "";
-	this.meta          = "";
-	this.tagTexts      = [];
-	this.tags          = [];
-}
-
-/**
-	@requires JSDOC.DocTag
- */
-JSDOC.DocComment.prototype.parse = function(/**String*/comment) {
-	if (comment == "") {
-		comment = "/** @desc */";
-		this.isUserComment = false;
-	}
-	
-	this.src = JSDOC.DocComment.unwrapComment(comment);
-	
-	this.meta = "";
-	if (this.src.indexOf("#") == 0) {
-		this.src.match(/#(.+[+-])([\s\S]*)$/);
-		if (RegExp.$1) this.meta = RegExp.$1;
-		if (RegExp.$2) this.src = RegExp.$2;
-	}
-	
-	if (typeof JSDOC.PluginManager != "undefined") {
-		JSDOC.PluginManager.run("onDocCommentSrc", this);
-	}
-	
-	this.fixDesc();
-
-	this.src = JSDOC.DocComment.shared+"\n"+this.src;
-	
-	this.tagTexts = 
-		this.src
-		.split(/(^|[\r\n])\s*@/)
-		.filter(function($){return $.match(/\S/)});
-	
-	/**
-		The tags found in the comment.
-		@type JSDOC.DocTag[]
-	 */
-	this.tags = this.tagTexts.map(function($){return new JSDOC.DocTag($)});
-	
-	if (typeof JSDOC.PluginManager != "undefined") {
-		JSDOC.PluginManager.run("onDocCommentTags", this);
-	}
-}
-
-/*t:
-	plan(5, "testing JSDOC.DocComment");
-	requires("../frame/String.js");
-	requires("../lib/JSDOC/DocTag.js");
-	
-	var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/");
-	is(com.tagTexts[0], "foo some\ncomment here", "first tag text is found.");
-	is(com.tags[0].title, "foo", "the title is found in a comment with one tag.");
-	
-	var com = new JSDOC.DocComment("/** @foo first\n* @bar second*"+"/");
-	is(com.getTag("bar").length, 1, "getTag() returns one tag by that title.");
-	
-	JSDOC.DocComment.shared = "@author John Smith";
-	var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/");
-	is(com.tags[0].title, "author", "shared comment is added.");
-	is(com.tags[1].title, "foo", "shared comment is added to existing tag.");
-*/
-
-/**
-	If no @desc tag is provided, this function will add it.
- */
-JSDOC.DocComment.prototype.fixDesc = function() {
-	if (this.meta && this.meta != "@+") return;
-	if (/^\s*[^@\s]/.test(this.src)) {				
-		this.src = "@desc "+this.src;
-	}
-}
-
-/*t:
-	plan(5, "testing JSDOC.DocComment#fixDesc");
-	
-	var com = new JSDOC.DocComment();
-	
-	com.src = "this is a desc\n@author foo";
-	com.fixDesc();
-	is(com.src, "@desc this is a desc\n@author foo", "if no @desc tag is provided one is added.");
-
-	com.src = "x";
-	com.fixDesc();
-	is(com.src, "@desc x", "if no @desc tag is provided one is added to a single character.");
-
-	com.src = "\nx";
-	com.fixDesc();
-	is(com.src, "@desc \nx", "if no @desc tag is provided one is added to return and character.");
-	
-	com.src = " ";
-	com.fixDesc();
-	is(com.src, " ", "if no @desc tag is provided one is not added to just whitespace.");
-
-	com.src = "";
-	com.fixDesc();
-	is(com.src, "", "if no @desc tag is provided one is not added to empty.");
-*/
-
-/**
-	Remove slash-star comment wrapper from a raw comment string.
-	@type String
- */
-JSDOC.DocComment.unwrapComment = function(/**String*/comment) {
-	if (!comment) return "";
-	var unwrapped = comment.replace(/(^\/\*\*|\*\/$)/g, "").replace(/^\s*\* ?/gm, "");
-	return unwrapped;
-}
-
-/*t:
-	plan(5, "testing JSDOC.DocComment.unwrapComment");
-	
-	var com = "/**x*"+"/";
-	var unwrapped = JSDOC.DocComment.unwrapComment(com);
-	is(unwrapped, "x", "a single character jsdoc is found.");
-	
-	com = "/***x*"+"/";
-	unwrapped = JSDOC.DocComment.unwrapComment(com);
-	is(unwrapped, "x", "three stars are allowed in the opener.");
-	
-	com = "/****x*"+"/";
-	unwrapped = JSDOC.DocComment.unwrapComment(com);
-	is(unwrapped, "*x", "fourth star in the opener is kept.");
-	
-	com = "/**x\n * y\n*"+"/";
-	unwrapped = JSDOC.DocComment.unwrapComment(com);
-	is(unwrapped, "x\ny\n", "leading stars and spaces are trimmed.");
-	
-	com = "/**x\n *   y\n*"+"/";
-	unwrapped = JSDOC.DocComment.unwrapComment(com);
-	is(unwrapped, "x\n  y\n", "only first space after leading stars are trimmed.");
-*/
-
-/**
-	Provides a printable version of the comment.
-	@type String
- */
-JSDOC.DocComment.prototype.toString = function() {
-	return this.src;
-}
-
-/*t:
-	plan(1, "testing JSDOC.DocComment#fixDesc");
-	var com = new JSDOC.DocComment();
-	com.src = "foo";
-	is(""+com, "foo", "stringifying a comment returns the unwrapped src.");
-*/
-
-/**
-	Given the title of a tag, returns all tags that have that title.
-	@type JSDOC.DocTag[]
- */
-JSDOC.DocComment.prototype.getTag = function(/**String*/tagTitle) {
-	return this.tags.filter(function($){return $.title == tagTitle});
-}
-
-JSDOC.DocComment.prototype.deleteTag = function(/**String*/tagTitle) {
-	this.tags = this.tags.filter(function($){return $.title != tagTitle})
-}
-
-/*t:
-	plan(1, "testing JSDOC.DocComment#getTag");
-	requires("../frame/String.js");
-	requires("../lib/JSDOC/DocTag.js");
-	
-	var com = new JSDOC.DocComment("/**@foo some\n* @bar\n* @bar*"+"/");
-	is(com.getTag("bar").length, 2, "getTag returns expected number of tags.");
-*/
-
-/**
-	Used to store the currently shared tag text.
-*/
-JSDOC.DocComment.shared = "";
-
-/*t:
-	plan(2, "testing JSDOC.DocComment.shared");
-	requires("../frame/String.js");
-	requires("../lib/JSDOC/DocTag.js");
-	
-	JSDOC.DocComment.shared = "@author Michael";
-	
-	var com = new JSDOC.DocComment("/**@foo\n* @foo*"+"/");
-	is(com.getTag("author").length, 1, "getTag returns shared tag.");
-	is(com.getTag("foo").length, 2, "getTag returns unshared tags too.");
-*/
\ No newline at end of file