xpcomcore-rubygem 0.3.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. data/README.markdown +14 -0
  2. data/Rakefile +13 -11
  3. data/VERSION +1 -1
  4. data/bin/xpcomcore +7 -0
  5. data/lib/xpcomcore-rubygem.rb +9 -0
  6. data/lib/xpcomcore-rubygem/commands.rb +54 -0
  7. data/lib/xpcomcore-rubygem/commands/generate.rb +23 -0
  8. data/lib/xpcomcore-rubygem/commands/generate/application.rb +63 -0
  9. data/lib/xpcomcore-rubygem/commands/generate/jeweler_builder_command.rb +108 -0
  10. data/lib/xpcomcore-rubygem/commands/generate/library.rb +25 -0
  11. data/lib/xpcomcore-rubygem/commands/generate/template_helpers.rb +78 -0
  12. data/lib/xpcomcore-rubygem/commands/launch.rb +129 -0
  13. data/templates/application/application.ini.erb +12 -0
  14. data/templates/application/chrome/chrome.manifest.erb +1 -0
  15. data/templates/application/chrome/content/xul/main_window.xul.erb +6 -0
  16. data/{extension → templates/application}/components/bootstrapper.js +1 -1
  17. data/templates/application/defaults/preferences/prefs.js.erb +7 -0
  18. data/templates/shared/jsdoc_doc_task.erb +7 -0
  19. data/templates/shared/xultestrunner_test_task.erb +7 -0
  20. data/xpcomcore-rubygem.gemspec +48 -136
  21. data/xpcomcore/Rakefile +42 -19
  22. data/xpcomcore/bootstrapper.js +1 -3
  23. data/xpcomcore/{VERSION.yml → build_properties.yml} +3 -0
  24. data/xpcomcore/components/XPCOMCore.js +0 -2
  25. data/xpcomcore/doc/files.html +10 -10
  26. data/xpcomcore/doc/index.html +17 -17
  27. data/xpcomcore/doc/symbols/_global_.html +10 -9
  28. data/xpcomcore/doc/symbols/{Error.html → error.html} +10 -9
  29. data/xpcomcore/doc/symbols/{File.html → file.html} +13 -12
  30. data/xpcomcore/doc/symbols/{File.NoSuchFileError.html → file.nosuchfileerror.html} +13 -12
  31. data/xpcomcore/doc/symbols/{Kernel.html → kernel.html} +48 -47
  32. data/xpcomcore/doc/symbols/{LoadError.html → loaderror.html} +13 -12
  33. data/xpcomcore/doc/symbols/{SelfConceptError.html → selfconcepterror.html} +13 -12
  34. data/xpcomcore/doc/symbols/{Sys.html → sys.html} +12 -11
  35. data/xpcomcore/doc/symbols/{XPCBuiltins.html → xpcbuiltins.html} +11 -10
  36. metadata +61 -135
  37. data/README.rdoc +0 -18
  38. data/bin/xpcomcore-firefox +0 -4
  39. data/bin/xpcomcore-rubygem-install +0 -205
  40. data/extension/README.txt +0 -1
  41. data/extension/install.rdf +0 -16
  42. data/xpcomcore/etc/jsdoc-toolkit/README.txt +0 -186
  43. data/xpcomcore/etc/jsdoc-toolkit/app/frame.js +0 -33
  44. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Chain.js +0 -102
  45. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Dumper.js +0 -144
  46. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Hash.js +0 -84
  47. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Link.js +0 -153
  48. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Namespace.js +0 -10
  49. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Opt.js +0 -134
  50. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Reflection.js +0 -26
  51. data/xpcomcore/etc/jsdoc-toolkit/app/frame/String.js +0 -93
  52. data/xpcomcore/etc/jsdoc-toolkit/app/frame/Testrun.js +0 -129
  53. data/xpcomcore/etc/jsdoc-toolkit/app/handlers/FOODOC.js +0 -26
  54. data/xpcomcore/etc/jsdoc-toolkit/app/handlers/XMLDOC.js +0 -26
  55. data/xpcomcore/etc/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +0 -159
  56. data/xpcomcore/etc/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +0 -16
  57. data/xpcomcore/etc/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +0 -292
  58. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC.js +0 -104
  59. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +0 -200
  60. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +0 -294
  61. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +0 -126
  62. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +0 -109
  63. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/Lang.js +0 -144
  64. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/Parser.js +0 -145
  65. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +0 -33
  66. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +0 -645
  67. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +0 -241
  68. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +0 -41
  69. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/Token.js +0 -18
  70. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +0 -332
  71. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +0 -133
  72. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/Util.js +0 -32
  73. data/xpcomcore/etc/jsdoc-toolkit/app/lib/JSDOC/Walker.js +0 -474
  74. data/xpcomcore/etc/jsdoc-toolkit/app/main.js +0 -111
  75. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/commentSrcJson.js +0 -20
  76. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/frameworkPrototype.js +0 -16
  77. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/functionCall.js +0 -10
  78. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/publishSrcHilite.js +0 -62
  79. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/symbolLink.js +0 -10
  80. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/tagParamConfig.js +0 -31
  81. data/xpcomcore/etc/jsdoc-toolkit/app/plugins/tagSynonyms.js +0 -43
  82. data/xpcomcore/etc/jsdoc-toolkit/app/run.js +0 -348
  83. data/xpcomcore/etc/jsdoc-toolkit/app/t/TestDoc.js +0 -144
  84. data/xpcomcore/etc/jsdoc-toolkit/app/t/runner.js +0 -13
  85. data/xpcomcore/etc/jsdoc-toolkit/app/test.js +0 -325
  86. data/xpcomcore/etc/jsdoc-toolkit/app/test/addon.js +0 -24
  87. data/xpcomcore/etc/jsdoc-toolkit/app/test/anon_inner.js +0 -14
  88. data/xpcomcore/etc/jsdoc-toolkit/app/test/augments.js +0 -31
  89. data/xpcomcore/etc/jsdoc-toolkit/app/test/augments2.js +0 -26
  90. data/xpcomcore/etc/jsdoc-toolkit/app/test/borrows.js +0 -46
  91. data/xpcomcore/etc/jsdoc-toolkit/app/test/borrows2.js +0 -23
  92. data/xpcomcore/etc/jsdoc-toolkit/app/test/config.js +0 -22
  93. data/xpcomcore/etc/jsdoc-toolkit/app/test/constructs.js +0 -18
  94. data/xpcomcore/etc/jsdoc-toolkit/app/test/encoding.js +0 -10
  95. data/xpcomcore/etc/jsdoc-toolkit/app/test/encoding_other.js +0 -12
  96. data/xpcomcore/etc/jsdoc-toolkit/app/test/event.js +0 -54
  97. data/xpcomcore/etc/jsdoc-toolkit/app/test/exports.js +0 -14
  98. data/xpcomcore/etc/jsdoc-toolkit/app/test/functions_anon.js +0 -39
  99. data/xpcomcore/etc/jsdoc-toolkit/app/test/functions_nested.js +0 -33
  100. data/xpcomcore/etc/jsdoc-toolkit/app/test/global.js +0 -13
  101. data/xpcomcore/etc/jsdoc-toolkit/app/test/globals.js +0 -25
  102. data/xpcomcore/etc/jsdoc-toolkit/app/test/ignore.js +0 -10
  103. data/xpcomcore/etc/jsdoc-toolkit/app/test/inner.js +0 -16
  104. data/xpcomcore/etc/jsdoc-toolkit/app/test/jsdoc_test.js +0 -477
  105. data/xpcomcore/etc/jsdoc-toolkit/app/test/lend.js +0 -33
  106. data/xpcomcore/etc/jsdoc-toolkit/app/test/memberof.js +0 -19
  107. data/xpcomcore/etc/jsdoc-toolkit/app/test/memberof_constructor.js +0 -17
  108. data/xpcomcore/etc/jsdoc-toolkit/app/test/module.js +0 -17
  109. data/xpcomcore/etc/jsdoc-toolkit/app/test/name.js +0 -19
  110. data/xpcomcore/etc/jsdoc-toolkit/app/test/namespace_nested.js +0 -23
  111. data/xpcomcore/etc/jsdoc-toolkit/app/test/nocode.js +0 -13
  112. data/xpcomcore/etc/jsdoc-toolkit/app/test/oblit_anon.js +0 -20
  113. data/xpcomcore/etc/jsdoc-toolkit/app/test/overview.js +0 -20
  114. data/xpcomcore/etc/jsdoc-toolkit/app/test/param_inline.js +0 -37
  115. data/xpcomcore/etc/jsdoc-toolkit/app/test/params_optional.js +0 -8
  116. data/xpcomcore/etc/jsdoc-toolkit/app/test/prototype.js +0 -17
  117. data/xpcomcore/etc/jsdoc-toolkit/app/test/prototype_nested.js +0 -9
  118. data/xpcomcore/etc/jsdoc-toolkit/app/test/prototype_oblit.js +0 -13
  119. data/xpcomcore/etc/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +0 -24
  120. data/xpcomcore/etc/jsdoc-toolkit/app/test/public.js +0 -10
  121. data/xpcomcore/etc/jsdoc-toolkit/app/test/scripts/code.js +0 -5
  122. data/xpcomcore/etc/jsdoc-toolkit/app/test/scripts/notcode.txt +0 -5
  123. data/xpcomcore/etc/jsdoc-toolkit/app/test/shared.js +0 -42
  124. data/xpcomcore/etc/jsdoc-toolkit/app/test/shared2.js +0 -2
  125. data/xpcomcore/etc/jsdoc-toolkit/app/test/shortcuts.js +0 -22
  126. data/xpcomcore/etc/jsdoc-toolkit/app/test/static_this.js +0 -13
  127. data/xpcomcore/etc/jsdoc-toolkit/app/test/synonyms.js +0 -31
  128. data/xpcomcore/etc/jsdoc-toolkit/app/test/tosource.js +0 -23
  129. data/xpcomcore/etc/jsdoc-toolkit/app/test/variable_redefine.js +0 -14
  130. data/xpcomcore/etc/jsdoc-toolkit/changes.txt +0 -96
  131. data/xpcomcore/etc/jsdoc-toolkit/conf/sample.conf +0 -31
  132. data/xpcomcore/etc/jsdoc-toolkit/java/build.xml +0 -36
  133. data/xpcomcore/etc/jsdoc-toolkit/java/build_1.4.xml +0 -36
  134. data/xpcomcore/etc/jsdoc-toolkit/java/classes/js.jar +0 -0
  135. data/xpcomcore/etc/jsdoc-toolkit/java/src/JsDebugRun.java +0 -21
  136. data/xpcomcore/etc/jsdoc-toolkit/java/src/JsRun.java +0 -21
  137. data/xpcomcore/etc/jsdoc-toolkit/jsdebug.jar +0 -0
  138. data/xpcomcore/etc/jsdoc-toolkit/jsrun.jar +0 -0
  139. data/xpcomcore/etc/jsdoc-toolkit/jsrun.sh +0 -52
  140. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +0 -17
  141. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +0 -56
  142. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/class.tmpl +0 -646
  143. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/index.tmpl +0 -39
  144. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/publish.js +0 -200
  145. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/static/default.css +0 -162
  146. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/static/header.html +0 -2
  147. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/static/index.html +0 -19
  148. data/xpcomcore/etc/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +0 -35
@@ -1,104 +0,0 @@
1
- /**
2
- @overview
3
- @date $Date: 2009-06-21 23:36:33 +0100 (Sun, 21 Jun 2009) $
4
- @version $Revision: 801 $
5
- @location $HeadURL: https://jsdoc-toolkit.googlecode.com/svn/trunk/jsdoc-toolkit/app/lib/JSDOC.js $
6
- @name JSDOC.js
7
- */
8
-
9
- /**
10
- This is the main container for the JSDOC application.
11
- @namespace
12
- */
13
- JSDOC = {
14
- };
15
-
16
- /**
17
- @requires Opt
18
- */
19
- if (typeof arguments == "undefined") arguments = [];
20
- JSDOC.opt = Opt.get(
21
- arguments,
22
- {
23
- a: "allfunctions",
24
- c: "conf",
25
- d: "directory",
26
- "D[]": "define",
27
- e: "encoding",
28
- "E[]": "exclude",
29
- h: "help",
30
- n: "nocode",
31
- o: "out",
32
- p: "private",
33
- q: "quiet",
34
- r: "recurse",
35
- S: "securemodules",
36
- s: "suppress",
37
- t: "template",
38
- T: "testmode",
39
- u: "unique",
40
- v: "verbose",
41
- x: "ext"
42
- }
43
- );
44
-
45
- /** The current version string of this application. */
46
- JSDOC.VERSION = "2.3.0";
47
-
48
- /** Print out usage information and quit. */
49
- JSDOC.usage = function() {
50
- print("USAGE: java -jar jsrun.jar app/run.js [OPTIONS] <SRC_DIR> <SRC_FILE> ...");
51
- print("");
52
- print("OPTIONS:");
53
- print(" -a or --allfunctions\n Include all functions, even undocumented ones.\n");
54
- print(" -c or --conf\n Load a configuration file.\n");
55
- print(" -d=<PATH> or --directory=<PATH>\n Output to this directory (defaults to \"out\").\n");
56
- print(" -D=\"myVar:My value\" or --define=\"myVar:My value\"\n Multiple. Define a variable, available in JsDoc as JSDOC.opt.D.myVar.\n");
57
- print(" -e=<ENCODING> or --encoding=<ENCODING>\n Use this encoding to read and write files.\n");
58
- print(" -E=\"REGEX\" or --exclude=\"REGEX\"\n Multiple. Exclude files based on the supplied regex.\n");
59
- print(" -h or --help\n Show this message and exit.\n");
60
- print(" -n or --nocode\n Ignore all code, only document comments with @name tags.\n");
61
- print(" -o=<PATH> or --out=<PATH>\n Print log messages to a file (defaults to stdout).\n");
62
- print(" -p or --private\n Include symbols tagged as private, underscored and inner symbols.\n");
63
- print(" -q or --quiet\n Do not output any messages, not even warnings.\n");
64
- print(" -r=<DEPTH> or --recurse=<DEPTH>\n Descend into src directories.\n");
65
- print(" -s or --suppress\n Suppress source code output.\n");
66
- print(" -S or --securemodules\n Use Secure Modules mode to parse source code.\n");
67
- print(" -t=<PATH> or --template=<PATH>\n Required. Use this template to format the output.\n");
68
- print(" -T or --test\n Run all unit tests and exit.\n");
69
- print(" -u or --unique\n Force file names to be unique, but not based on symbol names.\n");
70
- print(" -v or --verbose\n Provide verbose feedback about what is happening.\n");
71
- print(" -x=<EXT>[,EXT]... or --ext=<EXT>[,EXT]...\n Scan source files with the given extension/s (defaults to js).\n");
72
-
73
- quit();
74
- }
75
-
76
- /*t:
77
- plan(4, "Testing JSDOC namespace.");
78
-
79
- is(
80
- typeof JSDOC,
81
- "object",
82
- "JSDOC.usage is a function."
83
- );
84
-
85
- is(
86
- typeof JSDOC.VERSION,
87
- "string",
88
- "JSDOC.VERSION is a string."
89
- );
90
-
91
- is(
92
- typeof JSDOC.usage,
93
- "function",
94
- "JSDOC.usage is a function."
95
- );
96
-
97
- is(
98
- typeof JSDOC.opt,
99
- "object",
100
- "JSDOC.opt is a object."
101
- );
102
- */
103
-
104
- if (this.IO) IO.includeDir("lib/JSDOC/");
@@ -1,200 +0,0 @@
1
- if (typeof JSDOC == "undefined") JSDOC = {};
2
-
3
- /**
4
- Create a new DocComment. This takes a raw documentation comment,
5
- and wraps it in useful accessors.
6
- @class Represents a documentation comment object.
7
- */
8
- JSDOC.DocComment = function(/**String*/comment) {
9
- this.init();
10
- if (typeof comment != "undefined") {
11
- this.parse(comment);
12
- }
13
- }
14
-
15
- JSDOC.DocComment.prototype.init = function() {
16
- this.isUserComment = true;
17
- this.src = "";
18
- this.meta = "";
19
- this.tagTexts = [];
20
- this.tags = [];
21
- }
22
-
23
- /**
24
- @requires JSDOC.DocTag
25
- */
26
- JSDOC.DocComment.prototype.parse = function(/**String*/comment) {
27
- if (comment == "") {
28
- comment = "/** @desc */";
29
- this.isUserComment = false;
30
- }
31
-
32
- this.src = JSDOC.DocComment.unwrapComment(comment);
33
-
34
- this.meta = "";
35
- if (this.src.indexOf("#") == 0) {
36
- this.src.match(/#(.+[+-])([\s\S]*)$/);
37
- if (RegExp.$1) this.meta = RegExp.$1;
38
- if (RegExp.$2) this.src = RegExp.$2;
39
- }
40
-
41
- if (typeof JSDOC.PluginManager != "undefined") {
42
- JSDOC.PluginManager.run("onDocCommentSrc", this);
43
- }
44
-
45
- this.fixDesc();
46
-
47
- this.src = JSDOC.DocComment.shared+"\n"+this.src;
48
-
49
- this.tagTexts =
50
- this.src
51
- .split(/(^|[\r\n])\s*@/)
52
- .filter(function($){return $.match(/\S/)});
53
-
54
- /**
55
- The tags found in the comment.
56
- @type JSDOC.DocTag[]
57
- */
58
- this.tags = this.tagTexts.map(function($){return new JSDOC.DocTag($)});
59
-
60
- if (typeof JSDOC.PluginManager != "undefined") {
61
- JSDOC.PluginManager.run("onDocCommentTags", this);
62
- }
63
- }
64
-
65
- /*t:
66
- plan(5, "testing JSDOC.DocComment");
67
- requires("../frame/String.js");
68
- requires("../lib/JSDOC/DocTag.js");
69
-
70
- var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/");
71
- is(com.tagTexts[0], "foo some\ncomment here", "first tag text is found.");
72
- is(com.tags[0].title, "foo", "the title is found in a comment with one tag.");
73
-
74
- var com = new JSDOC.DocComment("/** @foo first\n* @bar second*"+"/");
75
- is(com.getTag("bar").length, 1, "getTag() returns one tag by that title.");
76
-
77
- JSDOC.DocComment.shared = "@author John Smith";
78
- var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/");
79
- is(com.tags[0].title, "author", "shared comment is added.");
80
- is(com.tags[1].title, "foo", "shared comment is added to existing tag.");
81
- */
82
-
83
- /**
84
- If no @desc tag is provided, this function will add it.
85
- */
86
- JSDOC.DocComment.prototype.fixDesc = function() {
87
- if (this.meta && this.meta != "@+") return;
88
- if (/^\s*[^@\s]/.test(this.src)) {
89
- this.src = "@desc "+this.src;
90
- }
91
- }
92
-
93
- /*t:
94
- plan(5, "testing JSDOC.DocComment#fixDesc");
95
-
96
- var com = new JSDOC.DocComment();
97
-
98
- com.src = "this is a desc\n@author foo";
99
- com.fixDesc();
100
- is(com.src, "@desc this is a desc\n@author foo", "if no @desc tag is provided one is added.");
101
-
102
- com.src = "x";
103
- com.fixDesc();
104
- is(com.src, "@desc x", "if no @desc tag is provided one is added to a single character.");
105
-
106
- com.src = "\nx";
107
- com.fixDesc();
108
- is(com.src, "@desc \nx", "if no @desc tag is provided one is added to return and character.");
109
-
110
- com.src = " ";
111
- com.fixDesc();
112
- is(com.src, " ", "if no @desc tag is provided one is not added to just whitespace.");
113
-
114
- com.src = "";
115
- com.fixDesc();
116
- is(com.src, "", "if no @desc tag is provided one is not added to empty.");
117
- */
118
-
119
- /**
120
- Remove slash-star comment wrapper from a raw comment string.
121
- @type String
122
- */
123
- JSDOC.DocComment.unwrapComment = function(/**String*/comment) {
124
- if (!comment) return "";
125
- var unwrapped = comment.replace(/(^\/\*\*|\*\/$)/g, "").replace(/^\s*\* ?/gm, "");
126
- return unwrapped;
127
- }
128
-
129
- /*t:
130
- plan(5, "testing JSDOC.DocComment.unwrapComment");
131
-
132
- var com = "/**x*"+"/";
133
- var unwrapped = JSDOC.DocComment.unwrapComment(com);
134
- is(unwrapped, "x", "a single character jsdoc is found.");
135
-
136
- com = "/***x*"+"/";
137
- unwrapped = JSDOC.DocComment.unwrapComment(com);
138
- is(unwrapped, "x", "three stars are allowed in the opener.");
139
-
140
- com = "/****x*"+"/";
141
- unwrapped = JSDOC.DocComment.unwrapComment(com);
142
- is(unwrapped, "*x", "fourth star in the opener is kept.");
143
-
144
- com = "/**x\n * y\n*"+"/";
145
- unwrapped = JSDOC.DocComment.unwrapComment(com);
146
- is(unwrapped, "x\ny\n", "leading stars and spaces are trimmed.");
147
-
148
- com = "/**x\n * y\n*"+"/";
149
- unwrapped = JSDOC.DocComment.unwrapComment(com);
150
- is(unwrapped, "x\n y\n", "only first space after leading stars are trimmed.");
151
- */
152
-
153
- /**
154
- Provides a printable version of the comment.
155
- @type String
156
- */
157
- JSDOC.DocComment.prototype.toString = function() {
158
- return this.src;
159
- }
160
-
161
- /*t:
162
- plan(1, "testing JSDOC.DocComment#fixDesc");
163
- var com = new JSDOC.DocComment();
164
- com.src = "foo";
165
- is(""+com, "foo", "stringifying a comment returns the unwrapped src.");
166
- */
167
-
168
- /**
169
- Given the title of a tag, returns all tags that have that title.
170
- @type JSDOC.DocTag[]
171
- */
172
- JSDOC.DocComment.prototype.getTag = function(/**String*/tagTitle) {
173
- return this.tags.filter(function($){return $.title == tagTitle});
174
- }
175
-
176
- /*t:
177
- plan(1, "testing JSDOC.DocComment#getTag");
178
- requires("../frame/String.js");
179
- requires("../lib/JSDOC/DocTag.js");
180
-
181
- var com = new JSDOC.DocComment("/**@foo some\n* @bar\n* @bar*"+"/");
182
- is(com.getTag("bar").length, 2, "getTag returns expected number of tags.");
183
- */
184
-
185
- /**
186
- Used to store the currently shared tag text.
187
- */
188
- JSDOC.DocComment.shared = "";
189
-
190
- /*t:
191
- plan(2, "testing JSDOC.DocComment.shared");
192
- requires("../frame/String.js");
193
- requires("../lib/JSDOC/DocTag.js");
194
-
195
- JSDOC.DocComment.shared = "@author Michael";
196
-
197
- var com = new JSDOC.DocComment("/**@foo\n* @foo*"+"/");
198
- is(com.getTag("author").length, 1, "getTag returns shared tag.");
199
- is(com.getTag("foo").length, 2, "getTag returns unshared tags too.");
200
- */
@@ -1,294 +0,0 @@
1
- if (typeof JSDOC == "undefined") JSDOC = {};
2
-
3
- /**
4
- @constructor
5
- */
6
- JSDOC.DocTag = function(src) {
7
- this.init();
8
- if (typeof src != "undefined") {
9
- this.parse(src);
10
- }
11
- }
12
-
13
- /**
14
- Create and initialize the properties of this.
15
- */
16
- JSDOC.DocTag.prototype.init = function() {
17
- this.title = "";
18
- this.type = "";
19
- this.name = "";
20
- this.isOptional = false;
21
- this.defaultValue = "";
22
- this.desc = "";
23
-
24
- return this;
25
- }
26
-
27
- /**
28
- Populate the properties of this from the given tag src.
29
- @param {string} src
30
- */
31
- JSDOC.DocTag.prototype.parse = function(src) {
32
- if (typeof src != "string") throw "src must be a string not "+(typeof src);
33
-
34
- try {
35
- src = this.nibbleTitle(src);
36
- if (JSDOC.PluginManager) {
37
- JSDOC.PluginManager.run("onDocTagSynonym", this);
38
- }
39
-
40
- src = this.nibbleType(src);
41
-
42
- // only some tags are allowed to have names.
43
- if (this.title == "param" || this.title == "property" || this.title == "config") { // @config is deprecated
44
- src = this.nibbleName(src);
45
- }
46
- }
47
- catch(e) {
48
- if (LOG) LOG.warn(e);
49
- else throw e;
50
- }
51
- this.desc = src; // whatever is left
52
-
53
- // example tags need to have whitespace preserved
54
- if (this.title != "example") this.desc = this.desc.trim();
55
-
56
- if (JSDOC.PluginManager) {
57
- JSDOC.PluginManager.run("onDocTag", this);
58
- }
59
- }
60
-
61
- /**
62
- Automatically called when this is stringified.
63
- */
64
- JSDOC.DocTag.prototype.toString = function() {
65
- return this.desc;
66
- }
67
-
68
- /*t:
69
- plan(1, "testing JSDOC.DocTag#toString");
70
-
71
- var tag = new JSDOC.DocTag("param {object} date A valid date.");
72
- is(""+tag, "A valid date.", "stringifying a tag returns the desc.");
73
- */
74
-
75
- /**
76
- Find and shift off the title of a tag.
77
- @param {string} src
78
- @return src
79
- */
80
- JSDOC.DocTag.prototype.nibbleTitle = function(src) {
81
- if (typeof src != "string") throw "src must be a string not "+(typeof src);
82
-
83
- var parts = src.match(/^\s*(\S+)(?:\s([\s\S]*))?$/);
84
-
85
- if (parts && parts[1]) this.title = parts[1];
86
- if (parts && parts[2]) src = parts[2];
87
- else src = "";
88
-
89
- return src;
90
- }
91
-
92
- /*t:
93
- plan(8, "testing JSDOC.DocTag#nibbleTitle");
94
-
95
- var tag = new JSDOC.DocTag();
96
-
97
- tag.init().nibbleTitle("aTitleGoesHere");
98
- is(tag.title, "aTitleGoesHere", "a title can be found in a single-word string.");
99
-
100
- var src = tag.init().nibbleTitle("aTitleGoesHere and the rest");
101
- is(tag.title, "aTitleGoesHere", "a title can be found in a multi-word string.");
102
- is(src, "and the rest", "the rest is returned when the title is nibbled off.");
103
-
104
- src = tag.init().nibbleTitle("");
105
- is(tag.title, "", "given an empty string the title is empty.");
106
- is(src, "", "the rest is empty when the tag is empty.");
107
-
108
- var src = tag.init().nibbleTitle(" aTitleGoesHere\n a description");
109
- is(tag.title, "aTitleGoesHere", "leading and trailing spaces are not part of the title.");
110
- is(src, " a description", "leading spaces (less one) are part of the description.");
111
-
112
- tag.init().nibbleTitle("a.Title::Goes_Here foo");
113
- is(tag.title, "a.Title::Goes_Here", "titles with punctuation are allowed.");
114
- */
115
-
116
- /**
117
- Find and shift off the type of a tag.
118
- @requires frame/String.js
119
- @param {string} src
120
- @return src
121
- */
122
- JSDOC.DocTag.prototype.nibbleType = function(src) {
123
- if (typeof src != "string") throw "src must be a string not "+(typeof src);
124
-
125
- if (src.match(/^\s*\{/)) {
126
- var typeRange = src.balance("{", "}");
127
- if (typeRange[1] == -1) {
128
- throw "Malformed comment tag ignored. Tag type requires an opening { and a closing }: "+src;
129
- }
130
- this.type = src.substring(typeRange[0]+1, typeRange[1]).trim();
131
- this.type = this.type.replace(/\s*,\s*/g, "|"); // multiples can be separated by , or |
132
- src = src.substring(typeRange[1]+1);
133
- }
134
-
135
- return src;
136
- }
137
-
138
- /*t:
139
- plan(5, "testing JSDOC.DocTag.parser.nibbleType");
140
- requires("../frame/String.js");
141
-
142
- var tag = new JSDOC.DocTag();
143
-
144
- tag.init().nibbleType("{String[]} aliases");
145
- is(tag.type, "String[]", "type can have non-alpha characters.");
146
-
147
- tag.init().nibbleType("{ aTypeGoesHere } etc etc");
148
- is(tag.type, "aTypeGoesHere", "type is trimmed.");
149
-
150
- tag.init().nibbleType("{ oneType, twoType ,\n threeType } etc etc");
151
- is(tag.type, "oneType|twoType|threeType", "multiple types can be separated by commas.");
152
-
153
- var error;
154
- try { tag.init().nibbleType("{widget foo"); }
155
- catch(e) { error = e; }
156
- is(typeof error, "string", "malformed tag type throws error.");
157
- isnt(error.indexOf("Malformed"), -1, "error message tells tag is malformed.");
158
- */
159
-
160
- /**
161
- Find and shift off the name of a tag.
162
- @requires frame/String.js
163
- @param {string} src
164
- @return src
165
- */
166
- JSDOC.DocTag.prototype.nibbleName = function(src) {
167
- if (typeof src != "string") throw "src must be a string not "+(typeof src);
168
-
169
- src = src.trim();
170
-
171
- // is optional?
172
- if (src.charAt(0) == "[") {
173
- var nameRange = src.balance("[", "]");
174
- if (nameRange[1] == -1) {
175
- throw "Malformed comment tag ignored. Tag optional name requires an opening [ and a closing ]: "+src;
176
- }
177
- this.name = src.substring(nameRange[0]+1, nameRange[1]).trim();
178
- this.isOptional = true;
179
-
180
- src = src.substring(nameRange[1]+1);
181
-
182
- // has default value?
183
- var nameAndValue = this.name.split("=");
184
- if (nameAndValue.length) {
185
- this.name = nameAndValue.shift().trim();
186
- this.defaultValue = nameAndValue.join("=");
187
- }
188
- }
189
- else {
190
- var parts = src.match(/^(\S+)(?:\s([\s\S]*))?$/);
191
- if (parts) {
192
- if (parts[1]) this.name = parts[1];
193
- if (parts[2]) src = parts[2].trim();
194
- else src = "";
195
- }
196
- }
197
-
198
- return src;
199
- }
200
-
201
- /*t:
202
- requires("../frame/String.js");
203
- plan(9, "testing JSDOC.DocTag.parser.nibbleName");
204
-
205
- var tag = new JSDOC.DocTag();
206
-
207
- tag.init().nibbleName("[foo] This is a description.");
208
- is(tag.isOptional, true, "isOptional syntax is detected.");
209
- is(tag.name, "foo", "optional param name is found.");
210
-
211
- tag.init().nibbleName("[foo] This is a description.");
212
- is(tag.isOptional, true, "isOptional syntax is detected when no type.");
213
- is(tag.name, "foo", "optional param name is found when no type.");
214
-
215
- tag.init().nibbleName("[foo=7] This is a description.");
216
- is(tag.name, "foo", "optional param name is found when default value.");
217
- is(tag.defaultValue, 7, "optional param default value is found when default value.");
218
-
219
- //tag.init().nibbleName("[foo= a value] This is a description.");
220
- //is(tag.defaultValue, " a value", "optional param default value is found when default value has spaces (issue #112).");
221
-
222
- tag.init().nibbleName("[foo=[]] This is a description.");
223
- is(tag.defaultValue, "[]", "optional param default value is found when default value is [] (issue #95).");
224
-
225
- tag.init().nibbleName("[foo=a=b] This is a description.");
226
- is(tag.name, "foo", "optional param name is found when default value is a=b.");
227
- is(tag.defaultValue, "a=b", "optional param default value is found when default value is a=b.")
228
- */
229
-
230
- /*t:
231
- plan(32, "Testing JSDOC.DocTag.parser.");
232
- requires("../frame/String.js");
233
-
234
- var tag = new JSDOC.DocTag();
235
-
236
- is(typeof tag, "object", "JSDOC.DocTag.parser with an empty string returns an object.");
237
- is(typeof tag.title, "string", "returned object has a string property 'title'.");
238
- is(typeof tag.type, "string", "returned object has a string property 'type'.");
239
- is(typeof tag.name, "string", "returned object has a string property 'name'.");
240
- is(typeof tag.defaultValue, "string", "returned object has a string property 'defaultValue'.");
241
- is(typeof tag.isOptional, "boolean", "returned object has a boolean property 'isOptional'.");
242
- is(typeof tag.desc, "string", "returned object has a string property 'desc'.");
243
-
244
- tag = new JSDOC.DocTag("param {widget} foo");
245
- is(tag.title, "param", "param title is found.");
246
- is(tag.name, "foo", "param name is found when desc is missing.");
247
- is(tag.desc, "", "param desc is empty when missing.");
248
-
249
- tag = new JSDOC.DocTag("param {object} date A valid date.");
250
- is(tag.name, "date", "param name is found with a type.");
251
- is(tag.type, "object", "param type is found.");
252
- is(tag.desc, "A valid date.", "param desc is found with a type.");
253
-
254
- tag = new JSDOC.DocTag("param aName a description goes\n here.");
255
- is(tag.name, "aName", "param name is found without a type.");
256
- is(tag.desc, "a description goes\n here.", "param desc is found without a type.");
257
-
258
- tag = new JSDOC.DocTag("param {widget}");
259
- is(tag.name, "", "param name is empty when it is not given.");
260
-
261
- tag = new JSDOC.DocTag("param {widget} [foo] This is a description.");
262
- is(tag.name, "foo", "optional param name is found.");
263
-
264
- tag = new JSDOC.DocTag("return {aType} This is a description.");
265
- is(tag.type, "aType", "when return tag has no name, type is found.");
266
- is(tag.desc, "This is a description.", "when return tag has no name, desc is found.");
267
-
268
- tag = new JSDOC.DocTag("author Joe Coder <jcoder@example.com>");
269
- is(tag.title, "author", "author tag has a title.");
270
- is(tag.type, "", "the author tag has no type.");
271
- is(tag.name, "", "the author tag has no name.");
272
- is(tag.desc, "Joe Coder <jcoder@example.com>", "author tag has desc.");
273
-
274
- tag = new JSDOC.DocTag("private \t\n ");
275
- is(tag.title, "private", "private tag has a title.");
276
- is(tag.type, "", "the private tag has no type.");
277
- is(tag.name, "", "the private tag has no name.");
278
- is(tag.desc, "", "private tag has no desc.");
279
-
280
- tag = new JSDOC.DocTag("example\n example(code);\n more();");
281
- is(tag.desc, " example(code);\n more();", "leading whitespace (less one) in examples code is preserved.");
282
-
283
- tag = new JSDOC.DocTag("param theName \n");
284
- is(tag.name, "theName", "name only is found.");
285
-
286
- tag = new JSDOC.DocTag("type theDesc \n");
287
- is(tag.desc, "theDesc", "desc only is found.");
288
-
289
- tag = new JSDOC.DocTag("type {theType} \n");
290
- is(tag.type, "theType", "type only is found.");
291
-
292
- tag = new JSDOC.DocTag("");
293
- is(tag.title, "", "title is empty when tag is empty.");
294
- */