quentonc-jsdoc_helper 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. data/History.txt +13 -0
  2. data/README.rdoc +64 -0
  3. data/Rakefile +46 -0
  4. data/TODO.rdoc +5 -0
  5. data/bin/jsdoc_helper +8 -0
  6. data/ext/jsdoc-toolkit/README.txt +146 -0
  7. data/ext/jsdoc-toolkit/app/frame/Chain.js +102 -0
  8. data/ext/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  9. data/ext/jsdoc-toolkit/app/frame/Hash.js +84 -0
  10. data/ext/jsdoc-toolkit/app/frame/Link.js +148 -0
  11. data/ext/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  12. data/ext/jsdoc-toolkit/app/frame/Opt.js +134 -0
  13. data/ext/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  14. data/ext/jsdoc-toolkit/app/frame/String.js +93 -0
  15. data/ext/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  16. data/ext/jsdoc-toolkit/app/frame.js +33 -0
  17. data/ext/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  18. data/ext/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  19. data/ext/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  20. data/ext/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  21. data/ext/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  22. data/ext/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +200 -0
  23. data/ext/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
  24. data/ext/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  25. data/ext/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  26. data/ext/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  27. data/ext/jsdoc-toolkit/app/lib/JSDOC/Parser.js +107 -0
  28. data/ext/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  29. data/ext/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +643 -0
  30. data/ext/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +229 -0
  31. data/ext/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  32. data/ext/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  33. data/ext/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  34. data/ext/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  35. data/ext/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  36. data/ext/jsdoc-toolkit/app/lib/JSDOC/Walker.js +459 -0
  37. data/ext/jsdoc-toolkit/app/lib/JSDOC.js +101 -0
  38. data/ext/jsdoc-toolkit/app/main.js +111 -0
  39. data/ext/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  40. data/ext/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  41. data/ext/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  42. data/ext/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
  43. data/ext/jsdoc-toolkit/app/plugins/symbolLink.js +9 -0
  44. data/ext/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  45. data/ext/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  46. data/ext/jsdoc-toolkit/app/run.js +348 -0
  47. data/ext/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  48. data/ext/jsdoc-toolkit/app/t/runner.js +13 -0
  49. data/ext/jsdoc-toolkit/app/test/addon.js +24 -0
  50. data/ext/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  51. data/ext/jsdoc-toolkit/app/test/augments.js +31 -0
  52. data/ext/jsdoc-toolkit/app/test/augments2.js +26 -0
  53. data/ext/jsdoc-toolkit/app/test/borrows.js +41 -0
  54. data/ext/jsdoc-toolkit/app/test/borrows2.js +23 -0
  55. data/ext/jsdoc-toolkit/app/test/config.js +22 -0
  56. data/ext/jsdoc-toolkit/app/test/constructs.js +18 -0
  57. data/ext/jsdoc-toolkit/app/test/encoding.js +10 -0
  58. data/ext/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  59. data/ext/jsdoc-toolkit/app/test/event.js +54 -0
  60. data/ext/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  61. data/ext/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  62. data/ext/jsdoc-toolkit/app/test/global.js +13 -0
  63. data/ext/jsdoc-toolkit/app/test/globals.js +25 -0
  64. data/ext/jsdoc-toolkit/app/test/ignore.js +10 -0
  65. data/ext/jsdoc-toolkit/app/test/inner.js +16 -0
  66. data/ext/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  67. data/ext/jsdoc-toolkit/app/test/lend.js +33 -0
  68. data/ext/jsdoc-toolkit/app/test/memberof.js +19 -0
  69. data/ext/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  70. data/ext/jsdoc-toolkit/app/test/name.js +19 -0
  71. data/ext/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  72. data/ext/jsdoc-toolkit/app/test/nocode.js +13 -0
  73. data/ext/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  74. data/ext/jsdoc-toolkit/app/test/overview.js +20 -0
  75. data/ext/jsdoc-toolkit/app/test/param_inline.js +37 -0
  76. data/ext/jsdoc-toolkit/app/test/params_optional.js +8 -0
  77. data/ext/jsdoc-toolkit/app/test/prototype.js +17 -0
  78. data/ext/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  79. data/ext/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  80. data/ext/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  81. data/ext/jsdoc-toolkit/app/test/public.js +10 -0
  82. data/ext/jsdoc-toolkit/app/test/shared.js +42 -0
  83. data/ext/jsdoc-toolkit/app/test/shared2.js +2 -0
  84. data/ext/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  85. data/ext/jsdoc-toolkit/app/test/static_this.js +13 -0
  86. data/ext/jsdoc-toolkit/app/test/synonyms.js +31 -0
  87. data/ext/jsdoc-toolkit/app/test/tosource.js +23 -0
  88. data/ext/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  89. data/ext/jsdoc-toolkit/app/test.js +307 -0
  90. data/ext/jsdoc-toolkit/changes.txt +75 -0
  91. data/ext/jsdoc-toolkit/conf/sample.conf +31 -0
  92. data/ext/jsdoc-toolkit/java/build.xml +36 -0
  93. data/ext/jsdoc-toolkit/java/build_1.4.xml +36 -0
  94. data/ext/jsdoc-toolkit/java/classes/js.jar +0 -0
  95. data/ext/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  96. data/ext/jsdoc-toolkit/java/src/JsRun.java +21 -0
  97. data/ext/jsdoc-toolkit/jsdebug.jar +0 -0
  98. data/ext/jsdoc-toolkit/jsrun.jar +0 -0
  99. data/ext/jsdoc-toolkit/out/jsdoc/files.html +216 -0
  100. data/ext/jsdoc-toolkit/out/jsdoc/index.html +210 -0
  101. data/ext/jsdoc-toolkit/out/jsdoc/symbols/_global_.html +306 -0
  102. data/ext/jsdoc-toolkit/out/jsdoc/symbols/src/lib_test.js.html +13 -0
  103. data/ext/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  104. data/ext/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  105. data/ext/jsdoc-toolkit/templates/jsdoc/class.tmpl +646 -0
  106. data/ext/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  107. data/ext/jsdoc-toolkit/templates/jsdoc/publish.js +184 -0
  108. data/ext/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  109. data/ext/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  110. data/ext/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  111. data/ext/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  112. data/features/doing_rake_jsdoc.feature +74 -0
  113. data/features/step_definitions/jsdoc_helper_steps.rb +48 -0
  114. data/features/support/env.rb +11 -0
  115. data/features/support/file_helper.rb +68 -0
  116. data/features/writing_the_rakefile.feature +36 -0
  117. data/jsdoc_helper.gemspec +41 -0
  118. data/lib/jsdoc_helper/rake/task/runner.rb +85 -0
  119. data/lib/jsdoc_helper/rake/task.rb +43 -0
  120. data/lib/jsdoc_helper.rb +50 -0
  121. data/spec/jsdoc_helper/jsdoc_helper_spec.rb +4 -0
  122. data/spec/jsdoc_helper/rake/task/runner_spec.rb +45 -0
  123. data/spec/jsdoc_helper/support/file_helper_spec.rb +93 -0
  124. data/spec/spec_helper.rb +25 -0
  125. data/test/ext/jsdoc-toolkit/README.txt +146 -0
  126. data/test/ext/jsdoc-toolkit/app/frame/Chain.js +102 -0
  127. data/test/ext/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  128. data/test/ext/jsdoc-toolkit/app/frame/Hash.js +84 -0
  129. data/test/ext/jsdoc-toolkit/app/frame/Link.js +148 -0
  130. data/test/ext/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  131. data/test/ext/jsdoc-toolkit/app/frame/Opt.js +134 -0
  132. data/test/ext/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  133. data/test/ext/jsdoc-toolkit/app/frame/String.js +93 -0
  134. data/test/ext/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  135. data/test/ext/jsdoc-toolkit/app/frame.js +33 -0
  136. data/test/ext/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  137. data/test/ext/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  138. data/test/ext/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  139. data/test/ext/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  140. data/test/ext/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  141. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +200 -0
  142. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
  143. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  144. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  145. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  146. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/Parser.js +107 -0
  147. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  148. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +643 -0
  149. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +229 -0
  150. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  151. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  152. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  153. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  154. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  155. data/test/ext/jsdoc-toolkit/app/lib/JSDOC/Walker.js +459 -0
  156. data/test/ext/jsdoc-toolkit/app/lib/JSDOC.js +101 -0
  157. data/test/ext/jsdoc-toolkit/app/main.js +111 -0
  158. data/test/ext/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  159. data/test/ext/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  160. data/test/ext/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  161. data/test/ext/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
  162. data/test/ext/jsdoc-toolkit/app/plugins/symbolLink.js +9 -0
  163. data/test/ext/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  164. data/test/ext/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  165. data/test/ext/jsdoc-toolkit/app/run.js +348 -0
  166. data/test/ext/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  167. data/test/ext/jsdoc-toolkit/app/t/runner.js +13 -0
  168. data/test/ext/jsdoc-toolkit/app/test/addon.js +24 -0
  169. data/test/ext/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  170. data/test/ext/jsdoc-toolkit/app/test/augments.js +31 -0
  171. data/test/ext/jsdoc-toolkit/app/test/augments2.js +26 -0
  172. data/test/ext/jsdoc-toolkit/app/test/borrows.js +41 -0
  173. data/test/ext/jsdoc-toolkit/app/test/borrows2.js +23 -0
  174. data/test/ext/jsdoc-toolkit/app/test/config.js +22 -0
  175. data/test/ext/jsdoc-toolkit/app/test/constructs.js +18 -0
  176. data/test/ext/jsdoc-toolkit/app/test/encoding.js +10 -0
  177. data/test/ext/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  178. data/test/ext/jsdoc-toolkit/app/test/event.js +54 -0
  179. data/test/ext/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  180. data/test/ext/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  181. data/test/ext/jsdoc-toolkit/app/test/global.js +13 -0
  182. data/test/ext/jsdoc-toolkit/app/test/globals.js +25 -0
  183. data/test/ext/jsdoc-toolkit/app/test/ignore.js +10 -0
  184. data/test/ext/jsdoc-toolkit/app/test/inner.js +16 -0
  185. data/test/ext/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  186. data/test/ext/jsdoc-toolkit/app/test/lend.js +33 -0
  187. data/test/ext/jsdoc-toolkit/app/test/memberof.js +19 -0
  188. data/test/ext/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  189. data/test/ext/jsdoc-toolkit/app/test/name.js +19 -0
  190. data/test/ext/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  191. data/test/ext/jsdoc-toolkit/app/test/nocode.js +13 -0
  192. data/test/ext/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  193. data/test/ext/jsdoc-toolkit/app/test/overview.js +20 -0
  194. data/test/ext/jsdoc-toolkit/app/test/param_inline.js +37 -0
  195. data/test/ext/jsdoc-toolkit/app/test/params_optional.js +8 -0
  196. data/test/ext/jsdoc-toolkit/app/test/prototype.js +17 -0
  197. data/test/ext/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  198. data/test/ext/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  199. data/test/ext/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  200. data/test/ext/jsdoc-toolkit/app/test/public.js +10 -0
  201. data/test/ext/jsdoc-toolkit/app/test/shared.js +42 -0
  202. data/test/ext/jsdoc-toolkit/app/test/shared2.js +2 -0
  203. data/test/ext/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  204. data/test/ext/jsdoc-toolkit/app/test/static_this.js +13 -0
  205. data/test/ext/jsdoc-toolkit/app/test/synonyms.js +31 -0
  206. data/test/ext/jsdoc-toolkit/app/test/tosource.js +23 -0
  207. data/test/ext/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  208. data/test/ext/jsdoc-toolkit/app/test.js +307 -0
  209. data/test/ext/jsdoc-toolkit/changes.txt +75 -0
  210. data/test/ext/jsdoc-toolkit/conf/sample.conf +31 -0
  211. data/test/ext/jsdoc-toolkit/java/build.xml +36 -0
  212. data/test/ext/jsdoc-toolkit/java/build_1.4.xml +36 -0
  213. data/test/ext/jsdoc-toolkit/java/classes/js.jar +0 -0
  214. data/test/ext/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  215. data/test/ext/jsdoc-toolkit/java/src/JsRun.java +21 -0
  216. data/test/ext/jsdoc-toolkit/jsdebug.jar +0 -0
  217. data/test/ext/jsdoc-toolkit/jsrun.jar +0 -0
  218. data/test/ext/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  219. data/test/ext/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  220. data/test/ext/jsdoc-toolkit/templates/jsdoc/class.tmpl +646 -0
  221. data/test/ext/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  222. data/test/ext/jsdoc-toolkit/templates/jsdoc/publish.js +184 -0
  223. data/test/ext/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  224. data/test/ext/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  225. data/test/ext/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  226. data/test/ext/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  227. data/test/lib/test1.js +0 -0
  228. data/test/lib/test2.js +0 -0
  229. metadata +294 -0
@@ -0,0 +1,144 @@
1
+ /**
2
+ * @class
3
+ <pre>
4
+ This is a lightly modified version of Kevin Jones' JavaScript
5
+ library Data.Dump. To download the original visit:
6
+ <a href="http://openjsan.org/doc/k/ke/kevinj/Data/Dump/">http://openjsan.org/doc/k/ke/kevinj/Data/Dump/</a>
7
+
8
+ AUTHORS
9
+
10
+ The Data.Dump JavaScript module is written by Kevin Jones
11
+ (kevinj@cpan.org), based on Data::Dump by Gisle Aas (gisle@aas.no),
12
+ based on Data::Dumper by Gurusamy Sarathy (gsar@umich.edu).
13
+
14
+ COPYRIGHT
15
+
16
+ Copyright 2007 Kevin Jones. Copyright 1998-2000,2003-2004 Gisle Aas.
17
+ Copyright 1996-1998 Gurusamy Sarathy.
18
+
19
+ This program is free software; you can redistribute it and/or modify
20
+ it under the terms of the Perl Artistic License
21
+
22
+ See http://www.perl.com/perl/misc/Artistic.html
23
+ </pre>
24
+ * @static
25
+ */
26
+ Dumper = {
27
+ /** @param [...] The objects to dump. */
28
+ dump: function () {
29
+ if (arguments.length > 1)
30
+ return this._dump(arguments);
31
+ else if (arguments.length == 1)
32
+ return this._dump(arguments[0]);
33
+ else
34
+ return "()";
35
+ },
36
+
37
+ _dump: function (obj) {
38
+ if (typeof obj == 'undefined') return 'undefined';
39
+ var out;
40
+ if (obj.serialize) { return obj.serialize(); }
41
+ var type = this._typeof(obj);
42
+ if (obj.circularReference) obj.circularReference++;
43
+ switch (type) {
44
+ case 'circular':
45
+ out = "{ //circularReference\n}";
46
+ break;
47
+ case 'object':
48
+ var pairs = new Array;
49
+
50
+ for (var prop in obj) {
51
+ if (prop != "circularReference" && obj.hasOwnProperty(prop)) { //hide inherited properties
52
+ pairs.push(prop + ': ' + this._dump(obj[prop]));
53
+ }
54
+ }
55
+
56
+ out = '{' + this._format_list(pairs) + '}';
57
+ break;
58
+
59
+ case 'string':
60
+ for (var prop in Dumper.ESC) {
61
+ if (Dumper.ESC.hasOwnProperty(prop)) {
62
+ obj = obj.replace(prop, Dumper.ESC[prop]);
63
+ }
64
+ }
65
+
66
+ // Escape UTF-8 Strings
67
+ if (obj.match(/^[\x00-\x7f]*$/)) {
68
+ out = '"' + obj.replace(/\"/g, "\\\"").replace(/([\n\r]+)/g, "\\$1") + '"';
69
+ }
70
+ else {
71
+ out = "unescape('"+escape(obj)+"')";
72
+ }
73
+ break;
74
+
75
+ case 'array':
76
+ var elems = new Array;
77
+
78
+ for (var i=0; i<obj.length; i++) {
79
+ elems.push( this._dump(obj[i]) );
80
+ }
81
+
82
+ out = '[' + this._format_list(elems) + ']';
83
+ break;
84
+
85
+ case 'date':
86
+ // firefox returns GMT strings from toUTCString()...
87
+ var utc_string = obj.toUTCString().replace(/GMT/,'UTC');
88
+ out = 'new Date("' + utc_string + '")';
89
+ break;
90
+
91
+ case 'element':
92
+ // DOM element
93
+ out = this._dump_dom(obj);
94
+ break;
95
+
96
+ default:
97
+ out = obj;
98
+ }
99
+
100
+ out = String(out).replace(/\n/g, '\n ');
101
+ out = out.replace(/\n (.*)$/,"\n$1");
102
+
103
+ return out;
104
+ },
105
+
106
+ _format_list: function (list) {
107
+ if (!list.length) return '';
108
+ var nl = list.toString().length > 60 ? '\n' : ' ';
109
+ return nl + list.join(',' + nl) + nl;
110
+ },
111
+
112
+ _typeof: function (obj) {
113
+ if (obj && obj.circularReference && obj.circularReference > 1) return 'circular';
114
+ if (Array.prototype.isPrototypeOf(obj)) return 'array';
115
+ if (Date.prototype.isPrototypeOf(obj)) return 'date';
116
+ if (typeof obj.nodeType != 'undefined') return 'element';
117
+ return typeof(obj);
118
+ },
119
+
120
+ _dump_dom: function (obj) {
121
+ return '"' + Dumper.nodeTypes[obj.nodeType] + '"';
122
+ }
123
+ };
124
+
125
+ Dumper.ESC = {
126
+ "\t": "\\t",
127
+ "\n": "\\n",
128
+ "\f": "\\f"
129
+ };
130
+
131
+ Dumper.nodeTypes = {
132
+ 1: "ELEMENT_NODE",
133
+ 2: "ATTRIBUTE_NODE",
134
+ 3: "TEXT_NODE",
135
+ 4: "CDATA_SECTION_NODE",
136
+ 5: "ENTITY_REFERENCE_NODE",
137
+ 6: "ENTITY_NODE",
138
+ 7: "PROCESSING_INSTRUCTION_NODE",
139
+ 8: "COMMENT_NODE",
140
+ 9: "DOCUMENT_NODE",
141
+ 10: "DOCUMENT_TYPE_NODE",
142
+ 11: "DOCUMENT_FRAGMENT_NODE",
143
+ 12: "NOTATION_NODE"
144
+ };
@@ -0,0 +1,84 @@
1
+ /**
2
+ @constructor
3
+ @example
4
+ var _index = new Hash();
5
+ _index.set("a", "apple");
6
+ _index.set("b", "blue");
7
+ _index.set("c", "coffee");
8
+
9
+ for (var p = _index.first(); p; p = _index.next()) {
10
+ print(p.key+" is for "+p.value);
11
+ }
12
+
13
+ */
14
+ var Hash = function() {
15
+ this._map = {};
16
+ this._keys = [];
17
+ this._vals = [];
18
+ this.reset();
19
+ }
20
+
21
+ Hash.prototype.set = function(k, v) {
22
+ if (k != "") {
23
+ this._keys.push(k);
24
+ this._map["="+k] = this._vals.length;
25
+ this._vals.push(v);
26
+ }
27
+ }
28
+
29
+ Hash.prototype.replace = function(k, k2, v) {
30
+ if (k == k2) return;
31
+
32
+ var offset = this._map["="+k];
33
+ this._keys[offset] = k2;
34
+ if (typeof v != "undefined") this._vals[offset] = v;
35
+ this._map["="+k2] = offset;
36
+ delete(this._map["="+k]);
37
+ }
38
+
39
+ Hash.prototype.drop = function(k) {
40
+ if (k != "") {
41
+ var offset = this._map["="+k];
42
+ this._keys.splice(offset, 1);
43
+ this._vals.splice(offset, 1);
44
+ delete(this._map["="+k]);
45
+ for (var p in this._map) {
46
+ if (this._map[p] >= offset) this._map[p]--;
47
+ }
48
+ if (this._cursor >= offset && this._cursor > 0) this._cursor--;
49
+ }
50
+ }
51
+
52
+ Hash.prototype.get = function(k) {
53
+ if (k != "") {
54
+ return this._vals[this._map["="+k]];
55
+ }
56
+ }
57
+
58
+ Hash.prototype.keys = function() {
59
+ return this._keys;
60
+ }
61
+
62
+ Hash.prototype.hasKey = function(k) {
63
+ if (k != "") {
64
+ return (typeof this._map["="+k] != "undefined");
65
+ }
66
+ }
67
+
68
+ Hash.prototype.values = function() {
69
+ return this._vals;
70
+ }
71
+
72
+ Hash.prototype.reset = function() {
73
+ this._cursor = 0;
74
+ }
75
+
76
+ Hash.prototype.first = function() {
77
+ this.reset();
78
+ return this.next();
79
+ }
80
+
81
+ Hash.prototype.next = function() {
82
+ if (this._cursor++ < this._keys.length)
83
+ return {key: this._keys[this._cursor-1], value: this._vals[this._cursor-1]};
84
+ }
@@ -0,0 +1,148 @@
1
+ /** Handle the creation of HTML links to documented symbols.
2
+ @constructor
3
+ */
4
+ function Link() {
5
+ this.alias = "";
6
+ this.src = "";
7
+ this.file = "";
8
+ this.text = "";
9
+ this.innerName = "";
10
+ this.classLink = false;
11
+ this.targetName = "";
12
+
13
+ this.target = function(targetName) {
14
+ if (defined(targetName)) this.targetName = targetName;
15
+ return this;
16
+ }
17
+ this.inner = function(inner) {
18
+ if (defined(inner)) this.innerName = inner;
19
+ return this;
20
+ }
21
+ this.withText = function(text) {
22
+ if (defined(text)) this.text = text;
23
+ return this;
24
+ }
25
+ this.toSrc = function(filename) {
26
+ if (defined(filename)) this.src = filename;
27
+ return this;
28
+ }
29
+ this.toSymbol = function(alias) {
30
+ if (defined(alias)) this.alias = new String(alias);
31
+ return this;
32
+ }
33
+ this.toClass = function(alias) {
34
+ this.classLink = true;
35
+ return this.toSymbol(alias);
36
+ }
37
+ this.toFile = function(file) {
38
+ if (defined(file)) this.file = file;
39
+ return this;
40
+ }
41
+
42
+ this.toString = function() {
43
+ var linkString;
44
+ var thisLink = this;
45
+
46
+ if (this.alias) {
47
+ linkString = this.alias.replace(/(^|[^a-z$0-9_#.:^-])([|a-z$0-9_#.:^-]+)($|[^a-z$0-9_#.:^-])/i,
48
+ function(match, prematch, symbolName, postmatch) {
49
+ var symbolNames = symbolName.split("|");
50
+ var links = [];
51
+ for (var i = 0, l = symbolNames.length; i < l; i++) {
52
+ thisLink.alias = symbolNames[i];
53
+ links.push(thisLink._makeSymbolLink(symbolNames[i]));
54
+ }
55
+ return prematch+links.join("|")+postmatch;
56
+ }
57
+ );
58
+ }
59
+ else if (this.src) {
60
+ linkString = thisLink._makeSrcLink(this.src);
61
+ }
62
+ else if (this.file) {
63
+ linkString = thisLink._makeFileLink(this.file);
64
+ }
65
+
66
+ return linkString;
67
+ }
68
+ }
69
+
70
+ /** prefixed for hashes */
71
+ Link.hashPrefix = "";
72
+
73
+ /** Appended to the front of relative link paths. */
74
+ Link.base = "";
75
+
76
+ Link.symbolNameToLinkName = function(symbol) {
77
+ var linker = "";
78
+ if (symbol.isStatic) linker = ".";
79
+ else if (symbol.isInner) linker = "-";
80
+
81
+ return Link.hashPrefix+linker+symbol.name;
82
+ }
83
+
84
+ /** Create a link to a snother symbol. */
85
+ Link.prototype._makeSymbolLink = function(alias) {
86
+ var linkBase = Link.base+publish.conf.symbolsDir;
87
+ var linkTo = Link.symbolSet.getSymbol(alias);
88
+ var linkPath;
89
+ var target = (this.targetName)? " target=\""+this.targetName+"\"" : "";
90
+
91
+ // is it an internal link?
92
+ if (alias.charAt(0) == "#") var linkPath = alias;
93
+
94
+ // if there is no symbol by that name just return the name unaltered
95
+ else if (!linkTo) return this.text || alias;
96
+
97
+ // it's a symbol in another file
98
+ else {
99
+
100
+ if (!linkTo.is("CONSTRUCTOR") && !linkTo.isNamespace) { // it's a method or property
101
+ if (linkTo.isEvent) {
102
+ linkPath = escape(linkTo.memberOf) || "_global_";
103
+ linkPath += publish.conf.ext + "#event:" + Link.symbolNameToLinkName(linkTo);
104
+ }
105
+ else {
106
+ linkPath = escape(linkTo.memberOf) || "_global_";
107
+ linkPath += publish.conf.ext + "#" + Link.symbolNameToLinkName(linkTo);
108
+ }
109
+ }
110
+ else {
111
+ linkPath = escape(linkTo.alias);
112
+ linkPath += publish.conf.ext;// + (this.classLink? "":"#" + Link.hashPrefix + "constructor");
113
+ }
114
+ linkPath = linkBase + linkPath
115
+ }
116
+
117
+ var linkText = this.text || alias;
118
+
119
+ var link = {linkPath: linkPath, linkText: linkText};
120
+
121
+ if (typeof JSDOC.PluginManager != "undefined") {
122
+ JSDOC.PluginManager.run("onSymbolLink", link);
123
+ }
124
+
125
+ return "<a href=\""+link.linkPath+"\""+target+">"+link.linkText+"</a>";
126
+ }
127
+
128
+ /** Create a link to a source file. */
129
+ Link.prototype._makeSrcLink = function(srcFilePath) {
130
+ var target = (this.targetName)? " target=\""+this.targetName+"\"" : "";
131
+
132
+ // transform filepath into a filename
133
+ var srcFile = srcFilePath.replace(/\.\.?[\\\/]/g, "").replace(/[:\\\/]/g, "_");
134
+ var outFilePath = Link.base + publish.conf.srcDir + srcFile + publish.conf.ext;
135
+
136
+ if (!this.text) this.text = FilePath.fileName(srcFilePath);
137
+ return "<a href=\""+outFilePath+"\""+target+">"+this.text+"</a>";
138
+ }
139
+
140
+ /** Create a link to a source file. */
141
+ Link.prototype._makeFileLink = function(filePath) {
142
+ var target = (this.targetName)? " target=\""+this.targetName+"\"" : "";
143
+
144
+ var outFilePath = Link.base + filePath;
145
+
146
+ if (!this.text) this.text = filePath;
147
+ return "<a href=\""+outFilePath+"\""+target+">"+this.text+"</a>";
148
+ }
@@ -0,0 +1,10 @@
1
+ _global_ = this;
2
+
3
+ function Namespace(name, f) {
4
+ var n = name.split(".");
5
+ for (var o = _global_, i = 0, l = n.length; i < l; i++) {
6
+ o = o[n[i]] = o[n[i]] || {};
7
+ }
8
+
9
+ if (f) f();
10
+ }
@@ -0,0 +1,134 @@
1
+ /** @namespace */
2
+ Opt = {
3
+ /**
4
+ * Get commandline option values.
5
+ * @param {Array} args Commandline arguments. Like ["-a=xml", "-b", "--class=new", "--debug"]
6
+ * @param {object} optNames Map short names to long names. Like {a:"accept", b:"backtrace", c:"class", d:"debug"}.
7
+ * @return {object} Short names and values. Like {a:"xml", b:true, c:"new", d:true}
8
+ */
9
+ get: function(args, optNames) {
10
+ var opt = {"_": []}; // the unnamed option allows multiple values
11
+ for (var i = 0; i < args.length; i++) {
12
+ var arg = new String(args[i]);
13
+ var name;
14
+ var value;
15
+ if (arg.charAt(0) == "-") {
16
+ if (arg.charAt(1) == "-") { // it's a longname like --foo
17
+ arg = arg.substring(2);
18
+ var m = arg.split("=");
19
+ name = m.shift();
20
+ value = m.shift();
21
+ if (typeof value == "undefined") value = true;
22
+
23
+ for (var n in optNames) { // convert it to a shortname
24
+ if (name == optNames[n]) {
25
+ name = n;
26
+ }
27
+ }
28
+ }
29
+ else { // it's a shortname like -f
30
+ arg = arg.substring(1);
31
+ var m = arg.split("=");
32
+ name = m.shift();
33
+ value = m.shift();
34
+ if (typeof value == "undefined") value = true;
35
+
36
+ for (var n in optNames) { // find the matching key
37
+ if (name == n || name+'[]' == n) {
38
+ name = n;
39
+ break;
40
+ }
41
+ }
42
+ }
43
+ if (name.match(/(.+)\[\]$/)) { // it's an array type like n[]
44
+ name = RegExp.$1;
45
+ if (!opt[name]) opt[name] = [];
46
+ }
47
+
48
+ if (opt[name] && opt[name].push) {
49
+ opt[name].push(value);
50
+ }
51
+ else {
52
+ opt[name] = value;
53
+ }
54
+ }
55
+ else { // not associated with any optname
56
+ opt._.push(args[i]);
57
+ }
58
+ }
59
+ return opt;
60
+ }
61
+ }
62
+
63
+ /*t:
64
+ plan(11, "Testing Opt.");
65
+
66
+ is(
67
+ typeof Opt,
68
+ "object",
69
+ "Opt is an object."
70
+ );
71
+
72
+ is(
73
+ typeof Opt.get,
74
+ "function",
75
+ "Opt.get is a function."
76
+ );
77
+
78
+ var optNames = {a:"accept", b:"backtrace", c:"class", d:"debug", "e[]":"exceptions"};
79
+ var t_options = Opt.get(["-a=xml", "-b", "--class=new", "--debug", "-e=one", "-e=two", "foo", "bar"], optNames);
80
+
81
+ is(
82
+ t_options.a,
83
+ "xml",
84
+ "an option defined with a short name can be accessed by its short name."
85
+ );
86
+
87
+ is(
88
+ t_options.b,
89
+ true,
90
+ "an option defined with a short name and no value are true."
91
+ );
92
+
93
+ is(
94
+ t_options.c,
95
+ "new",
96
+ "an option defined with a long name can be accessed by its short name."
97
+ );
98
+
99
+ is(
100
+ t_options.d,
101
+ true,
102
+ "an option defined with a long name and no value are true."
103
+ );
104
+
105
+ is(
106
+ typeof t_options.e,
107
+ "object",
108
+ "an option that can accept multiple values is defined."
109
+ );
110
+
111
+ is(
112
+ t_options.e.length,
113
+ 2,
114
+ "an option that can accept multiple values can have more than one value."
115
+ );
116
+
117
+ is(
118
+ t_options.e[1],
119
+ "two",
120
+ "an option that can accept multiple values can be accessed as an array."
121
+ );
122
+
123
+ is(
124
+ typeof t_options._,
125
+ "object",
126
+ "the property '_' is defined for unnamed options."
127
+ );
128
+
129
+ is(
130
+ t_options._[0],
131
+ "foo",
132
+ "the property '_' can be accessed as an array."
133
+ );
134
+ */
@@ -0,0 +1,26 @@
1
+ /**@constructor*/
2
+ function Reflection(obj) {
3
+ this.obj = obj;
4
+ }
5
+
6
+ Reflection.prototype.getConstructorName = function() {
7
+ if (this.obj.constructor.name) return this.obj.constructor.name;
8
+ var src = this.obj.constructor.toSource();
9
+ var name = src.substring(name.indexOf("function")+8, src.indexOf('(')).replace(/ /g,'');
10
+ return name;
11
+ }
12
+
13
+ Reflection.prototype.getMethod = function(name) {
14
+ for (var p in this.obj) {
15
+ if (p == name && typeof(this.obj[p]) == "function") return this.obj[p];
16
+ }
17
+ return null;
18
+ }
19
+
20
+ Reflection.prototype.getParameterNames = function() {
21
+ var src = this.obj.toSource();
22
+ src = src.substring(
23
+ src.indexOf("(", 8)+1, src.indexOf(")")
24
+ );
25
+ return src.split(/, ?/);
26
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ @name String
3
+ @class Additions to the core string object.
4
+ */
5
+
6
+ /** @author Steven Levithan, released as public domain. */
7
+ String.prototype.trim = function() {
8
+ var str = this.replace(/^\s+/, '');
9
+ for (var i = str.length - 1; i >= 0; i--) {
10
+ if (/\S/.test(str.charAt(i))) {
11
+ str = str.substring(0, i + 1);
12
+ break;
13
+ }
14
+ }
15
+ return str;
16
+ }
17
+ /*t:
18
+ plan(6, "Testing String.prototype.trim.");
19
+
20
+ var s = " a bc ".trim();
21
+ is(s, "a bc", "multiple spaces front and back are trimmed.");
22
+
23
+ s = "a bc\n\n".trim();
24
+ is(s, "a bc", "newlines only in back are trimmed.");
25
+
26
+ s = "\ta bc".trim();
27
+ is(s, "a bc", "tabs only in front are trimmed.");
28
+
29
+ s = "\n \t".trim();
30
+ is(s, "", "an all-space string is trimmed to empty.");
31
+
32
+ s = "a b\nc".trim();
33
+ is(s, "a b\nc", "a string with no spaces in front or back is trimmed to itself.");
34
+
35
+ s = "".trim();
36
+ is(s, "", "an empty string is trimmed to empty.");
37
+
38
+ */
39
+
40
+ String.prototype.balance = function(open, close) {
41
+ var i = 0;
42
+ while (this.charAt(i) != open) {
43
+ if (i == this.length) return [-1, -1];
44
+ i++;
45
+ }
46
+
47
+ var j = i+1;
48
+ var balance = 1;
49
+ while (j < this.length) {
50
+ if (this.charAt(j) == open) balance++;
51
+ if (this.charAt(j) == close) balance--;
52
+ if (balance == 0) break;
53
+ j++;
54
+ if (j == this.length) return [-1, -1];
55
+ }
56
+
57
+ return [i, j];
58
+ }
59
+ /*t:
60
+ plan(16, "Testing String.prototype.balance.");
61
+
62
+ var s = "{abc}".balance("{","}");
63
+ is(s[0], 0, "opener in first is found.");
64
+ is(s[1], 4, "closer in last is found.");
65
+
66
+ s = "ab{c}de".balance("{","}");
67
+ is(s[0], 2, "opener in middle is found.");
68
+ is(s[1], 4, "closer in middle is found.");
69
+
70
+ s = "a{b{c}de}f".balance("{","}");
71
+ is(s[0], 1, "nested opener is found.");
72
+ is(s[1], 8, "nested closer is found.");
73
+
74
+ s = "{}".balance("{","}");
75
+ is(s[0], 0, "opener with no content is found.");
76
+ is(s[1], 1, "closer with no content is found.");
77
+
78
+ s = "".balance("{","}");
79
+ is(s[0], -1, "empty string opener is -1.");
80
+ is(s[1], -1, "empty string closer is -1.");
81
+
82
+ s = "{abc".balance("{","}");
83
+ is(s[0], -1, "opener with no closer returns -1.");
84
+ is(s[1], -1, "no closer returns -1.");
85
+
86
+ s = "abc".balance("{","}");
87
+ is(s[0], -1, "no opener or closer returns -1 for opener.");
88
+ is(s[1], -1, "no opener or closer returns -1 for closer.");
89
+
90
+ s = "a<bc}de".balance("<","}");
91
+ is(s[0], 1, "unmatching opener is found.");
92
+ is(s[1], 4, "unmatching closer is found.");
93
+ */