jsdoc-toolkit 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/Rakefile +1 -0
  2. data/VERSION +1 -1
  3. data/jsdoc-toolkit.gemspec +108 -1
  4. data/src/jsdoc-toolkit/jsdoc-toolkit/README.txt +183 -0
  5. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame.js +33 -0
  6. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Chain.js +102 -0
  7. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  8. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Hash.js +84 -0
  9. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Link.js +153 -0
  10. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  11. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Opt.js +134 -0
  12. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  13. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/String.js +93 -0
  14. data/src/jsdoc-toolkit/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  15. data/src/jsdoc-toolkit/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  16. data/src/jsdoc-toolkit/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  17. data/src/jsdoc-toolkit/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  18. data/src/jsdoc-toolkit/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  19. data/src/jsdoc-toolkit/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  20. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC.js +104 -0
  21. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +200 -0
  22. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
  23. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  24. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  25. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  26. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/Parser.js +145 -0
  27. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  28. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +645 -0
  29. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
  30. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  31. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  32. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  33. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  34. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  35. data/src/jsdoc-toolkit/jsdoc-toolkit/app/lib/JSDOC/Walker.js +474 -0
  36. data/src/jsdoc-toolkit/jsdoc-toolkit/app/main.js +111 -0
  37. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  38. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  39. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  40. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
  41. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  42. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  43. data/src/jsdoc-toolkit/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  44. data/src/jsdoc-toolkit/jsdoc-toolkit/app/run.js +348 -0
  45. data/src/jsdoc-toolkit/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  46. data/src/jsdoc-toolkit/jsdoc-toolkit/app/t/runner.js +13 -0
  47. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test.js +325 -0
  48. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/addon.js +24 -0
  49. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  50. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/augments.js +31 -0
  51. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/augments2.js +26 -0
  52. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/borrows.js +46 -0
  53. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/borrows2.js +23 -0
  54. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/config.js +22 -0
  55. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/constructs.js +18 -0
  56. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/encoding.js +10 -0
  57. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  58. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/event.js +54 -0
  59. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/exports.js +14 -0
  60. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  61. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  62. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/global.js +13 -0
  63. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/globals.js +25 -0
  64. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/ignore.js +10 -0
  65. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/inner.js +16 -0
  66. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  67. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/lend.js +33 -0
  68. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/memberof.js +19 -0
  69. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  70. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/module.js +17 -0
  71. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/name.js +19 -0
  72. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  73. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/nocode.js +13 -0
  74. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  75. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/overview.js +20 -0
  76. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/param_inline.js +37 -0
  77. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/params_optional.js +8 -0
  78. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/prototype.js +17 -0
  79. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  80. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  81. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  82. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/public.js +10 -0
  83. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  84. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  85. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/shared.js +42 -0
  86. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/shared2.js +2 -0
  87. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  88. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/static_this.js +13 -0
  89. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/synonyms.js +31 -0
  90. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/tosource.js +23 -0
  91. data/src/jsdoc-toolkit/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  92. data/src/jsdoc-toolkit/jsdoc-toolkit/changes.txt +107 -0
  93. data/src/jsdoc-toolkit/jsdoc-toolkit/conf/sample.conf +31 -0
  94. data/src/jsdoc-toolkit/jsdoc-toolkit/java/build.xml +36 -0
  95. data/src/jsdoc-toolkit/jsdoc-toolkit/java/build_1.4.xml +36 -0
  96. data/src/jsdoc-toolkit/jsdoc-toolkit/java/classes/js.jar +0 -0
  97. data/src/jsdoc-toolkit/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  98. data/src/jsdoc-toolkit/jsdoc-toolkit/java/src/JsRun.java +21 -0
  99. data/src/jsdoc-toolkit/jsdoc-toolkit/jsdebug.jar +0 -0
  100. data/src/jsdoc-toolkit/jsdoc-toolkit/jsrun.jar +0 -0
  101. data/src/jsdoc-toolkit/jsdoc-toolkit/jsrun.sh +52 -0
  102. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  103. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  104. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  105. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  106. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/publish.js +200 -0
  107. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  108. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  109. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  110. data/src/jsdoc-toolkit/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  111. metadata +108 -1
@@ -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
+ */
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @fileOverview
3
+ * @name JsTestrun
4
+ * @author Michael Mathews micmath@gmail.com
5
+ * @url $HeadURL$
6
+ * @revision $Id$
7
+ * @license <a href="http://en.wikipedia.org/wiki/MIT_License">X11/MIT License</a>
8
+ * (See the accompanying README file for full details.)
9
+ */
10
+
11
+ /**
12
+ Yet another unit testing tool for JavaScript.
13
+ @author Michael Mathews <a href="mailto:micmath@gmail.com">micmath@gmail.com</a>
14
+ @param {object} testCases Properties are testcase names, values are functions to execute as tests.
15
+ */
16
+ function testrun(testCases) {
17
+ var ran = 0;
18
+ for (t in testCases) {
19
+ var result = testCases[t]();
20
+ ran++;
21
+ }
22
+
23
+ return testrun.reportOut+"-------------------------------\n"+((testrun.fails>0)? ":( Failed "+testrun.fails+"/" : ":) Passed all ")+testrun.count+" test"+((testrun.count == 1)? "":"s")+".\n";
24
+ }
25
+
26
+
27
+ testrun.count = 0;
28
+ testrun.current = null;
29
+ testrun.passes = 0;
30
+ testrun.fails = 0;
31
+ testrun.reportOut = "";
32
+
33
+ /** @private */
34
+ testrun.report = function(text) {
35
+ testrun.reportOut += text+"\n";
36
+ }
37
+
38
+ /**
39
+ Check if test evaluates to true.
40
+ @param {string} test To be evaluated.
41
+ @param {string} message Optional. To be displayed in the report.
42
+ @return {boolean} True if the string test evaluates to true.
43
+ */
44
+ ok = function(test, message) {
45
+ testrun.count++;
46
+
47
+ var result;
48
+ try {
49
+ result = eval(test);
50
+
51
+ if (result) {
52
+ testrun.passes++;
53
+ testrun.report(" OK "+testrun.count+" - "+((message != null)? message : ""));
54
+ }
55
+ else {
56
+ testrun.fails++;
57
+ testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
58
+ }
59
+ }
60
+ catch(e) {
61
+ testrun.fails++
62
+ testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
63
+
64
+ }
65
+ }
66
+
67
+ /**
68
+ Check if test is same as expected.
69
+ @param {string} test To be evaluated.
70
+ @param {string} expected
71
+ @param {string} message Optional. To be displayed in the report.
72
+ @return {boolean} True if (test == expected). Note that the comparison is not a strict equality check.
73
+ */
74
+ is = function(test, expected, message) {
75
+ testrun.count++;
76
+
77
+ var result;
78
+ try {
79
+ result = eval(test);
80
+
81
+ if (result == expected) {
82
+ testrun.passes++
83
+ testrun.report(" OK "+testrun.count+" - "+((message != null)? message : ""));
84
+ }
85
+ else {
86
+ testrun.fails++
87
+ testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
88
+ testrun.report("expected: "+expected);
89
+ testrun.report(" got: "+result);
90
+ }
91
+ }
92
+ catch(e) {
93
+ testrun.fails++
94
+ testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
95
+ testrun.report("expected: "+expected);
96
+ testrun.report(" got: "+result);}
97
+ }
98
+
99
+ /**
100
+ Check if test matches pattern.
101
+ @param {string} test To be evaluated.
102
+ @param {string} pattern Used to create a RegExp.
103
+ @param {string} message Optional. To be displayed in the report.
104
+ @return {boolean} True if test matches pattern.
105
+ */
106
+ like = function(test, pattern, message) {
107
+ testrun.count++;
108
+
109
+ var result;
110
+ try {
111
+ result = eval(test);
112
+ var rgx = new RegExp(pattern);
113
+
114
+ if (rgx.test(result)) {
115
+ testrun.passes++
116
+ testrun.report(" OK "+testrun.count+" - "+((message != null)? message : ""));
117
+ }
118
+ else {
119
+ testrun.fails++
120
+ testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
121
+ testrun.report(" this: "+result);
122
+ testrun.report("is not like: "+pattern);
123
+ }
124
+ }
125
+ catch(e) {
126
+ testrun.fails++
127
+ testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : ""));
128
+ }
129
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ This is the main container for the FOODOC handler.
3
+ @namespace
4
+ */
5
+ FOODOC = {
6
+ };
7
+
8
+ /** The current version string of this application. */
9
+ FOODOC.VERSION = "1.0";
10
+
11
+ FOODOC.handle = function(srcFile, src) {
12
+ LOG.inform("Handling file '" + srcFile + "'");
13
+
14
+ return [
15
+ new JSDOC.Symbol(
16
+ "foo",
17
+ [],
18
+ "VIRTUAL",
19
+ new JSDOC.DocComment("/** This is a foo. */")
20
+ )
21
+ ];
22
+ };
23
+
24
+ FOODOC.publish = function(symbolgroup) {
25
+ LOG.inform("Publishing symbolgroup.");
26
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * This is the main container for the XMLDOC handler.
3
+ * @namespace
4
+ * @author Brett Fattori (bfattori@fry.com)
5
+ * @version $Revision$
6
+ */
7
+ XMLDOC = {
8
+
9
+ };
10
+
11
+ /** The current version string of this application. */
12
+ XMLDOC.VERSION = "1.0";
13
+
14
+ /** Include the library necessary to handle XML files */
15
+ IO.includeDir("handlers/XMLDOC/");
16
+
17
+ /**
18
+ * @type Symbol[]
19
+ */
20
+ XMLDOC.handle = function(srcFile, src) {
21
+
22
+ };
23
+
24
+ XMLDOC.publish = function(symbolgroup) {
25
+
26
+ }
@@ -0,0 +1,159 @@
1
+ LOG.inform("XMLDOC.DomReader loaded");
2
+
3
+ XMLDOC.DomReader = function(root) {
4
+
5
+ this.dom = root;
6
+
7
+ /**
8
+ * The current node the reader is on
9
+ */
10
+ this.node = root;
11
+
12
+ /**
13
+ * Get the current node the reader is on
14
+ * @type XMLDOC.Parser.node
15
+ */
16
+ XMLDOC.DomReader.prototype.getNode = function() {
17
+ return this.node;
18
+ };
19
+
20
+ /**
21
+ * Set the node the reader should be positioned on.
22
+ * @param node {XMLDOC.Parser.node}
23
+ */
24
+ XMLDOC.DomReader.prototype.setNode = function(node) {
25
+ this.node = node;
26
+ };
27
+
28
+ /**
29
+ * A helper method to make sure the current node will
30
+ * never return null, unless null is passed as the root.
31
+ * @param step {String} An expression to evaluate - should return a node or null
32
+ */
33
+ XMLDOC.DomReader.prototype.navigate = function(step) {
34
+ var n;
35
+ if ((n = step) != null)
36
+ {
37
+ this.node = n;
38
+ return this.node;
39
+ }
40
+ return null;
41
+ };
42
+
43
+ /**
44
+ * Get the root node of the current node's document.
45
+ */
46
+ XMLDOC.DomReader.prototype.root = function() {
47
+ this.navigate(this.dom);
48
+ };
49
+
50
+ /**
51
+ * Get the parent of the current node.
52
+ */
53
+ XMLDOC.DomReader.prototype.parent = function() {
54
+ return this.navigate(this.node.parentNode());
55
+ };
56
+
57
+ /**
58
+ * Get the first child of the current node.
59
+ */
60
+ XMLDOC.DomReader.prototype.firstChild = function() {
61
+ return this.navigate(this.node.firstChild());
62
+ };
63
+
64
+ /**
65
+ * Get the last child of the current node.
66
+ */
67
+ XMLDOC.DomReader.prototype.lastChild = function() {
68
+ return this.navigate(this.node.lastChild());
69
+ };
70
+
71
+ /**
72
+ * Get the next sibling of the current node.
73
+ */
74
+ XMLDOC.DomReader.prototype.nextSibling = function() {
75
+ return this.navigate(this.node.nextSibling());
76
+ };
77
+
78
+ /**
79
+ * Get the previous sibling of the current node.
80
+ */
81
+ XMLDOC.DomReader.prototype.prevSibling = function() {
82
+ return this.navigate(this.node.prevSibling());
83
+ };
84
+
85
+ //===============================================================================================
86
+ // Support methods
87
+
88
+ /**
89
+ * Walk the tree starting with the current node, calling the plug-in for
90
+ * each node visited. Each time the plug-in is called, the DomReader
91
+ * is passed as the only parameter. Use the {@link XMLDOC.DomReader#getNode} method
92
+ * to access the current node. <i>This method uses a depth first traversal pattern.</i>
93
+ *
94
+ * @param srcFile {String} The source file being evaluated
95
+ */
96
+ XMLDOC.DomReader.prototype.getSymbols = function(srcFile)
97
+ {
98
+ XMLDOC.DomReader.symbols = [];
99
+ XMLDOC.DomReader.currentFile = srcFile;
100
+ JSDOC.Symbol.srcFile = (srcFile || "");
101
+
102
+ if (defined(JSDOC.PluginManager)) {
103
+ JSDOC.PluginManager.run("onDomGetSymbols", this);
104
+ }
105
+
106
+ return XMLDOC.DomReader.symbols;
107
+ };
108
+
109
+ /**
110
+ * Find the node with the given name using a depth first traversal.
111
+ * Does not modify the DomReader's current node.
112
+ *
113
+ * @param name {String} The name of the node to find
114
+ * @return the node that was found, or null if not found
115
+ */
116
+ XMLDOC.DomReader.prototype.findNode = function(name)
117
+ {
118
+ var findNode = null;
119
+
120
+ // Start at the current node and move into the subtree,
121
+ // looking for the node with the given name
122
+ function deeper(node, find)
123
+ {
124
+ var look = null;
125
+
126
+ if (node) {
127
+ if (node.name == find)
128
+ {
129
+ return node;
130
+ }
131
+
132
+ if (node.firstChild())
133
+ {
134
+ look = deeper(node.firstChild(), find);
135
+ }
136
+
137
+ if (!look && node.nextSibling())
138
+ {
139
+ look = deeper(node.nextSibling(), find);
140
+ }
141
+ }
142
+
143
+ return look;
144
+ }
145
+
146
+ return deeper(this.getNode().firstChild(), name);
147
+ };
148
+
149
+ /**
150
+ * Find the next node with the given name using a depth first traversal.
151
+ *
152
+ * @param name {String} The name of the node to find
153
+ */
154
+ XMLDOC.DomReader.prototype.findPreviousNode = function(name)
155
+ {
156
+ };
157
+
158
+ };
159
+