sc-docs 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. data/.gitignore +4 -0
  2. data/.gitmodules +3 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +48 -0
  5. data/LICENSE +21 -0
  6. data/README.md +59 -0
  7. data/bin/sc-docs +5 -0
  8. data/lib/sc_docs.rb +3 -0
  9. data/lib/sc_docs/cli.rb +54 -0
  10. data/lib/sc_docs/docs/Buildfile +8 -0
  11. data/lib/sc_docs/docs/README +8 -0
  12. data/lib/sc_docs/docs/apps/docs/Buildfile +15 -0
  13. data/lib/sc_docs/docs/apps/docs/controllers/classes.js +27 -0
  14. data/lib/sc_docs/docs/apps/docs/controllers/search_controller.js +62 -0
  15. data/lib/sc_docs/docs/apps/docs/controllers/selected_class.js +143 -0
  16. data/lib/sc_docs/docs/apps/docs/core.js +148 -0
  17. data/lib/sc_docs/docs/apps/docs/main.js +41 -0
  18. data/lib/sc_docs/docs/apps/docs/models/class.js +63 -0
  19. data/lib/sc_docs/docs/apps/docs/models/entity.js +29 -0
  20. data/lib/sc_docs/docs/apps/docs/models/method.js +79 -0
  21. data/lib/sc_docs/docs/apps/docs/models/property.js +48 -0
  22. data/lib/sc_docs/docs/apps/docs/resources/images/method_icon.png +0 -0
  23. data/lib/sc_docs/docs/apps/docs/resources/images/property_icon.png +0 -0
  24. data/lib/sc_docs/docs/apps/docs/resources/loading.rhtml +9 -0
  25. data/lib/sc_docs/docs/apps/docs/resources/main_page.css +156 -0
  26. data/lib/sc_docs/docs/apps/docs/resources/main_page.js +91 -0
  27. data/lib/sc_docs/docs/apps/docs/resources/templates/details.handlebars +81 -0
  28. data/lib/sc_docs/docs/apps/docs/resources/templates/extensions/signature.js +0 -0
  29. data/lib/sc_docs/docs/apps/docs/system/jquery_ui.js +62 -0
  30. data/lib/sc_docs/docs/apps/docs/system/showdown.js +1297 -0
  31. data/lib/sc_docs/docs/apps/docs/theme.js +29 -0
  32. data/lib/sc_docs/docs/apps/docs/views/detail_list.js +24 -0
  33. data/lib/sc_docs/docs/apps/docs/views/master_list.js +35 -0
  34. data/lib/sc_docs/docs/apps/docs/views/methods_collection.js +80 -0
  35. data/lib/sc_docs/docs/apps/docs/views/properties_collection.js +9 -0
  36. data/lib/sc_docs/generator.rb +145 -0
  37. data/lib/sc_docs/server.rb +21 -0
  38. data/lib/sc_docs/templates/docs.sproutcore.com/allclasses.tmpl +31 -0
  39. data/lib/sc_docs/templates/docs.sproutcore.com/allfiles.tmpl +66 -0
  40. data/lib/sc_docs/templates/docs.sproutcore.com/class.tmpl +437 -0
  41. data/lib/sc_docs/templates/docs.sproutcore.com/index.tmpl +52 -0
  42. data/lib/sc_docs/templates/docs.sproutcore.com/output/css/api.css +619 -0
  43. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/apidocs.jpg +0 -0
  44. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/apidocs.png +0 -0
  45. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/clearinput.png +0 -0
  46. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/cross.png +0 -0
  47. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/ddiagonal.png +0 -0
  48. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/diagonal.png +0 -0
  49. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/docbullet.jpg +0 -0
  50. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/docbullet.png +0 -0
  51. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/glow.png +0 -0
  52. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/logo.png +0 -0
  53. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/pixels.png +0 -0
  54. data/lib/sc_docs/templates/docs.sproutcore.com/output/img/search.png +0 -0
  55. data/lib/sc_docs/templates/docs.sproutcore.com/output/js/api.js +134 -0
  56. data/lib/sc_docs/templates/docs.sproutcore.com/output/js/jquery-bbq.js +18 -0
  57. data/lib/sc_docs/templates/docs.sproutcore.com/output/js/lib/jquery-1.5.1.min.js +16 -0
  58. data/lib/sc_docs/templates/docs.sproutcore.com/output/js/lib/modernizr-1.7.min.js +2 -0
  59. data/lib/sc_docs/templates/docs.sproutcore.com/output/js/plugin.js +1 -0
  60. data/lib/sc_docs/templates/docs.sproutcore.com/output/js/script.js +5 -0
  61. data/lib/sc_docs/templates/docs.sproutcore.com/publish.js +200 -0
  62. data/lib/sc_docs/templates/docs.sproutcore.com/static/default.css +300 -0
  63. data/lib/sc_docs/templates/docs.sproutcore.com/static/header.html +19 -0
  64. data/lib/sc_docs/templates/docs.sproutcore.com/static/index.html +19 -0
  65. data/lib/sc_docs/templates/docs.sproutcore.com/symbol.tmpl +35 -0
  66. data/lib/sc_docs/templates/sc_fixture/publish.js +632 -0
  67. data/lib/sc_docs/version.rb +4 -0
  68. data/sc_docs.gemspec +27 -0
  69. data/vendor/jsdoc/README.txt +109 -0
  70. data/vendor/jsdoc/app/frame.js +33 -0
  71. data/vendor/jsdoc/app/frame/Chain.js +102 -0
  72. data/vendor/jsdoc/app/frame/Dumper.js +144 -0
  73. data/vendor/jsdoc/app/frame/Hash.js +84 -0
  74. data/vendor/jsdoc/app/frame/Link.js +173 -0
  75. data/vendor/jsdoc/app/frame/Namespace.js +10 -0
  76. data/vendor/jsdoc/app/frame/Opt.js +134 -0
  77. data/vendor/jsdoc/app/frame/Reflection.js +26 -0
  78. data/vendor/jsdoc/app/frame/String.js +93 -0
  79. data/vendor/jsdoc/app/frame/Testrun.js +129 -0
  80. data/vendor/jsdoc/app/handlers/FOODOC.js +26 -0
  81. data/vendor/jsdoc/app/handlers/XMLDOC.js +26 -0
  82. data/vendor/jsdoc/app/handlers/XMLDOC/DomReader.js +159 -0
  83. data/vendor/jsdoc/app/handlers/XMLDOC/XMLDoc.js +16 -0
  84. data/vendor/jsdoc/app/handlers/XMLDOC/XMLParse.js +292 -0
  85. data/vendor/jsdoc/app/lib/JSDOC.js +106 -0
  86. data/vendor/jsdoc/app/lib/JSDOC/DocComment.js +204 -0
  87. data/vendor/jsdoc/app/lib/JSDOC/DocTag.js +294 -0
  88. data/vendor/jsdoc/app/lib/JSDOC/JsDoc.js +140 -0
  89. data/vendor/jsdoc/app/lib/JSDOC/JsPlate.js +109 -0
  90. data/vendor/jsdoc/app/lib/JSDOC/Lang.js +144 -0
  91. data/vendor/jsdoc/app/lib/JSDOC/Parser.js +146 -0
  92. data/vendor/jsdoc/app/lib/JSDOC/PluginManager.js +33 -0
  93. data/vendor/jsdoc/app/lib/JSDOC/Symbol.js +644 -0
  94. data/vendor/jsdoc/app/lib/JSDOC/SymbolSet.js +243 -0
  95. data/vendor/jsdoc/app/lib/JSDOC/TextStream.js +41 -0
  96. data/vendor/jsdoc/app/lib/JSDOC/Token.js +18 -0
  97. data/vendor/jsdoc/app/lib/JSDOC/TokenReader.js +332 -0
  98. data/vendor/jsdoc/app/lib/JSDOC/TokenStream.js +133 -0
  99. data/vendor/jsdoc/app/lib/JSDOC/Util.js +32 -0
  100. data/vendor/jsdoc/app/lib/JSDOC/Walker.js +507 -0
  101. data/vendor/jsdoc/app/main.js +111 -0
  102. data/vendor/jsdoc/app/plugins/commentSrcJson.js +20 -0
  103. data/vendor/jsdoc/app/plugins/frameworkPrototype.js +16 -0
  104. data/vendor/jsdoc/app/plugins/functionCall.js +10 -0
  105. data/vendor/jsdoc/app/plugins/publishSrcHilite.js +62 -0
  106. data/vendor/jsdoc/app/plugins/symbolLink.js +10 -0
  107. data/vendor/jsdoc/app/plugins/tagParamConfig.js +31 -0
  108. data/vendor/jsdoc/app/plugins/tagSynonyms.js +43 -0
  109. data/vendor/jsdoc/app/run.js +297 -0
  110. data/vendor/jsdoc/app/t/TestDoc.js +144 -0
  111. data/vendor/jsdoc/app/t/runner.js +13 -0
  112. data/vendor/jsdoc/app/test.js +342 -0
  113. data/vendor/jsdoc/app/test/addon.js +24 -0
  114. data/vendor/jsdoc/app/test/anon_inner.js +14 -0
  115. data/vendor/jsdoc/app/test/augments.js +31 -0
  116. data/vendor/jsdoc/app/test/augments2.js +26 -0
  117. data/vendor/jsdoc/app/test/borrows.js +46 -0
  118. data/vendor/jsdoc/app/test/borrows2.js +23 -0
  119. data/vendor/jsdoc/app/test/config.js +22 -0
  120. data/vendor/jsdoc/app/test/constructs.js +18 -0
  121. data/vendor/jsdoc/app/test/encoding.js +10 -0
  122. data/vendor/jsdoc/app/test/encoding_other.js +12 -0
  123. data/vendor/jsdoc/app/test/event.js +54 -0
  124. data/vendor/jsdoc/app/test/exports.js +14 -0
  125. data/vendor/jsdoc/app/test/functions_anon.js +39 -0
  126. data/vendor/jsdoc/app/test/functions_nested.js +33 -0
  127. data/vendor/jsdoc/app/test/global.js +13 -0
  128. data/vendor/jsdoc/app/test/globals.js +25 -0
  129. data/vendor/jsdoc/app/test/ignore.js +10 -0
  130. data/vendor/jsdoc/app/test/inner.js +16 -0
  131. data/vendor/jsdoc/app/test/jsdoc_test.js +477 -0
  132. data/vendor/jsdoc/app/test/lend.js +33 -0
  133. data/vendor/jsdoc/app/test/memberof.js +19 -0
  134. data/vendor/jsdoc/app/test/memberof2.js +38 -0
  135. data/vendor/jsdoc/app/test/memberof3.js +33 -0
  136. data/vendor/jsdoc/app/test/memberof_constructor.js +17 -0
  137. data/vendor/jsdoc/app/test/module.js +17 -0
  138. data/vendor/jsdoc/app/test/multi_methods.js +25 -0
  139. data/vendor/jsdoc/app/test/name.js +19 -0
  140. data/vendor/jsdoc/app/test/namespace_nested.js +23 -0
  141. data/vendor/jsdoc/app/test/nocode.js +13 -0
  142. data/vendor/jsdoc/app/test/oblit_anon.js +20 -0
  143. data/vendor/jsdoc/app/test/overview.js +20 -0
  144. data/vendor/jsdoc/app/test/param_inline.js +37 -0
  145. data/vendor/jsdoc/app/test/params_optional.js +8 -0
  146. data/vendor/jsdoc/app/test/prototype.js +17 -0
  147. data/vendor/jsdoc/app/test/prototype_nested.js +9 -0
  148. data/vendor/jsdoc/app/test/prototype_oblit.js +13 -0
  149. data/vendor/jsdoc/app/test/prototype_oblit_constructor.js +24 -0
  150. data/vendor/jsdoc/app/test/public.js +10 -0
  151. data/vendor/jsdoc/app/test/scripts/code.js +5 -0
  152. data/vendor/jsdoc/app/test/scripts/notcode.txt +5 -0
  153. data/vendor/jsdoc/app/test/shared.js +42 -0
  154. data/vendor/jsdoc/app/test/shared2.js +2 -0
  155. data/vendor/jsdoc/app/test/shortcuts.js +22 -0
  156. data/vendor/jsdoc/app/test/static_this.js +13 -0
  157. data/vendor/jsdoc/app/test/synonyms.js +31 -0
  158. data/vendor/jsdoc/app/test/tosource.js +23 -0
  159. data/vendor/jsdoc/app/test/variable_redefine.js +14 -0
  160. data/vendor/jsdoc/changes.txt +127 -0
  161. data/vendor/jsdoc/conf/sample.conf +31 -0
  162. metadata +240 -0
@@ -0,0 +1,140 @@
1
+ /**
2
+ @constructor
3
+ @param [opt] Used to override the commandline options. Useful for testing.
4
+ @version $Id: JsDoc.js 831 2010-03-09 14:24:56Z micmath $
5
+ */
6
+ JSDOC.JsDoc = function(/**object*/ opt) {
7
+ if (opt) {
8
+ JSDOC.opt = opt;
9
+ }
10
+
11
+ if (JSDOC.opt.h) {
12
+ JSDOC.usage();
13
+ quit();
14
+ }
15
+
16
+ // defend against options that are not sane
17
+ if (JSDOC.opt._.length == 0) {
18
+ LOG.warn("No source files to work on. Nothing to do.");
19
+ quit();
20
+ }
21
+ if (JSDOC.opt.t === true || JSDOC.opt.d === true) {
22
+ JSDOC.usage();
23
+ }
24
+
25
+ if (typeof JSDOC.opt.d == "string") {
26
+ if (!JSDOC.opt.d.charAt(JSDOC.opt.d.length-1).match(/[\\\/]/)) {
27
+ JSDOC.opt.d = JSDOC.opt.d+"/";
28
+ }
29
+ LOG.inform("Output directory set to '"+JSDOC.opt.d+"'.");
30
+ IO.mkPath(JSDOC.opt.d);
31
+ }
32
+ if (JSDOC.opt.e) IO.setEncoding(JSDOC.opt.e);
33
+
34
+ // the -r option: scan source directories recursively
35
+ if (typeof JSDOC.opt.r == "boolean") JSDOC.opt.r = 10;
36
+ else if (!isNaN(parseInt(JSDOC.opt.r))) JSDOC.opt.r = parseInt(JSDOC.opt.r);
37
+ else JSDOC.opt.r = 1;
38
+
39
+ // the -D option: define user variables
40
+ var D = {};
41
+ if (JSDOC.opt.D) {
42
+ for (var i = 0; i < JSDOC.opt.D.length; i++) {
43
+ var param = JSDOC.opt.D[i];
44
+ // remove first and last character if both == "
45
+ if (
46
+ param.length > 1
47
+ && param.charAt(0) == '"'
48
+ && param.charAt(param.length-1) == '"'
49
+ ) {
50
+ param = param.substr(1, param.length-2);
51
+ }
52
+ var defineParts = param.split(":");
53
+ if (defineParts && defineParts.length > 1) {
54
+ for ( var dpIdx = 2; dpIdx < defineParts.length; dpIdx++ ) {
55
+ defineParts[1] += ':' + defineParts[dpIdx];
56
+ }
57
+ D[defineParts[0]] = defineParts[1];
58
+ }
59
+ }
60
+ }
61
+ JSDOC.opt.D = D;
62
+ // combine any conf file D options with the commandline D options
63
+ if (defined(JSDOC.conf)) for (var c in JSDOC.conf.D) {
64
+ if (!defined(JSDOC.opt.D[c])) {
65
+ JSDOC.opt.D[c] = JSDOC.conf.D[c];
66
+ }
67
+ }
68
+
69
+ // Give plugins a chance to initialize
70
+ if (defined(JSDOC.PluginManager)) {
71
+ JSDOC.PluginManager.run("onInit", JSDOC.opt);
72
+ }
73
+
74
+ JSDOC.opt.srcFiles = JSDOC.JsDoc._getSrcFiles();
75
+ JSDOC.JsDoc._parseSrcFiles();
76
+ JSDOC.JsDoc.symbolSet = JSDOC.Parser.symbols;
77
+ }
78
+
79
+ /**
80
+ Retrieve source file list.
81
+ @returns {String[]} The pathnames of the files to be parsed.
82
+ */
83
+ JSDOC.JsDoc._getSrcFiles = function() {
84
+ JSDOC.JsDoc.srcFiles = [];
85
+
86
+ var ext = ["js"];
87
+ if (JSDOC.opt.x) {
88
+ ext = JSDOC.opt.x.split(",").map(function($) {return $.toLowerCase()});
89
+ }
90
+
91
+ for (var i = 0; i < JSDOC.opt._.length; i++) {
92
+ JSDOC.JsDoc.srcFiles = JSDOC.JsDoc.srcFiles.concat(
93
+ IO.ls(JSDOC.opt._[i], JSDOC.opt.r).filter(
94
+ function($) {
95
+ var thisExt = $.split(".").pop().toLowerCase();
96
+
97
+ if (JSDOC.opt.E) {
98
+ for(var n = 0; n < JSDOC.opt.E.length; n++) {
99
+ if ($.match(new RegExp(JSDOC.opt.E[n]))) {
100
+ LOG.inform("Excluding " + $);
101
+ return false; // if the file matches the regex then it's excluded.
102
+ }
103
+ }
104
+ }
105
+
106
+ return (ext.indexOf(thisExt) > -1); // we're only interested in files with certain extensions
107
+ }
108
+ )
109
+ );
110
+ }
111
+
112
+ return JSDOC.JsDoc.srcFiles;
113
+ }
114
+
115
+ JSDOC.JsDoc._parseSrcFiles = function() {
116
+ JSDOC.Parser.init();
117
+ for (var i = 0, l = JSDOC.JsDoc.srcFiles.length; i < l; i++) {
118
+ var srcFile = JSDOC.JsDoc.srcFiles[i];
119
+
120
+ if (JSDOC.opt.v) LOG.inform("Parsing file: " + srcFile);
121
+
122
+ try {
123
+ var src = IO.readFile(srcFile);
124
+ }
125
+ catch(e) {
126
+ LOG.warn("Can't read source file '"+srcFile+"': "+e.message);
127
+ }
128
+
129
+ var tr = new JSDOC.TokenReader();
130
+ var ts = new JSDOC.TokenStream(tr.tokenize(new JSDOC.TextStream(src)));
131
+
132
+ JSDOC.Parser.parse(ts, srcFile);
133
+
134
+ }
135
+ JSDOC.Parser.finish();
136
+
137
+ if (JSDOC.PluginManager) {
138
+ JSDOC.PluginManager.run("onFinishedParsing", JSDOC.Parser.symbols);
139
+ }
140
+ }
@@ -0,0 +1,109 @@
1
+ /**
2
+ @constructor
3
+ */
4
+ JSDOC.JsPlate = function(templateFile) {
5
+ if (templateFile) this.template = IO.readFile(templateFile);
6
+
7
+ this.templateFile = templateFile;
8
+ this.code = "";
9
+ this.parse();
10
+ }
11
+
12
+ JSDOC.JsPlate.prototype.parse = function() {
13
+ this.template = this.template.replace(/\{#[\s\S]+?#\}/gi, "");
14
+ this.code = "var output=\u001e"+this.template;
15
+
16
+ this.code = this.code.replace(
17
+ /<for +each="(.+?)" +in="(.+?)" *>/gi,
18
+ function (match, eachName, inName) {
19
+ return "\u001e;\rvar $"+eachName+"_keys = keys("+inName+");\rfor(var $"+eachName+"_i = 0; $"+eachName+"_i < $"+eachName+"_keys.length; $"+eachName+"_i++) {\rvar $"+eachName+"_last = ($"+eachName+"_i == $"+eachName+"_keys.length-1);\rvar $"+eachName+"_key = $"+eachName+"_keys[$"+eachName+"_i];\rvar "+eachName+" = "+inName+"[$"+eachName+"_key];\routput+=\u001e";
20
+ }
21
+ );
22
+ this.code = this.code.replace(/<if test="(.+?)">/g, "\u001e;\rif ($1) { output+=\u001e");
23
+ this.code = this.code.replace(/<elseif test="(.+?)"\s*\/>/g, "\u001e;}\relse if ($1) { output+=\u001e");
24
+ this.code = this.code.replace(/<else\s*\/>/g, "\u001e;}\relse { output+=\u001e");
25
+ this.code = this.code.replace(/<\/(if|for)>/g, "\u001e;\r};\routput+=\u001e");
26
+ this.code = this.code.replace(
27
+ /\{\+\s*([\s\S]+?)\s*\+\}/gi,
28
+ function (match, code) {
29
+ code = code.replace(/"/g, "\u001e"); // prevent qoute-escaping of inline code
30
+ code = code.replace(/(\r?\n)/g, " ");
31
+ return "\u001e+ ("+code+") +\u001e";
32
+ }
33
+ );
34
+ this.code = this.code.replace(
35
+ /\{!\s*([\s\S]+?)\s*!\}/gi,
36
+ function (match, code) {
37
+ code = code.replace(/"/g, "\u001e"); // prevent qoute-escaping of inline code
38
+ code = code.replace(/(\n)/g, " ");
39
+ return "\u001e; "+code+";\routput+=\u001e";
40
+ }
41
+ );
42
+ this.code = this.code+"\u001e;";
43
+
44
+ this.code = this.code.replace(/(\r?\n)/g, "\\n");
45
+ this.code = this.code.replace(/"/g, "\\\"");
46
+ this.code = this.code.replace(/\u001e/g, "\"");
47
+ }
48
+
49
+ JSDOC.JsPlate.prototype.toCode = function() {
50
+ return this.code;
51
+ }
52
+
53
+ JSDOC.JsPlate.keys = function(obj) {
54
+ var keys = [];
55
+ if (obj.constructor.toString().indexOf("Array") > -1) {
56
+ for (var i = 0; i < obj.length; i++) {
57
+ keys.push(i);
58
+ }
59
+ }
60
+ else {
61
+ for (var i in obj) {
62
+ keys.push(i);
63
+ }
64
+ }
65
+ return keys;
66
+ };
67
+
68
+ JSDOC.JsPlate.values = function(obj) {
69
+ var values = [];
70
+ if (obj.constructor.toString().indexOf("Array") > -1) {
71
+ for (var i = 0; i < obj.length; i++) {
72
+ values.push(obj[i]);
73
+ }
74
+ }
75
+ else {
76
+ for (var i in obj) {
77
+ values.push(obj[i]);
78
+ }
79
+ }
80
+ return values;
81
+ };
82
+
83
+ JSDOC.JsPlate.prototype.process = function(data, compact) {
84
+ var keys = JSDOC.JsPlate.keys;
85
+ var values = JSDOC.JsPlate.values;
86
+
87
+ try {
88
+ eval(this.code);
89
+ }
90
+ catch (e) {
91
+ print(">> There was an error evaluating the compiled code from template: "+this.templateFile);
92
+ print(" The error was on line "+e.lineNumber+" "+e.name+": "+e.message);
93
+ var lines = this.code.split("\r");
94
+ if (e.lineNumber-2 >= 0) print("line "+(e.lineNumber-1)+": "+lines[e.lineNumber-2]);
95
+ print("line "+e.lineNumber+": "+lines[e.lineNumber-1]);
96
+ print("");
97
+ }
98
+
99
+ if (compact) { // patch by mcbain.asm
100
+ // Remove lines that contain only space-characters, usually left by lines in the template
101
+ // which originally only contained JSPlate tags or code. This makes it easier to write
102
+ // non-tricky templates which still put out nice code (not bloated with extra lines).
103
+ // Lines purposely left blank (just a line ending) are left alone.
104
+ output = output.replace(/\s+?(\r?)\n/g, "$1\n");
105
+ }
106
+
107
+ /*debug*///print(this.code);
108
+ return output;
109
+ }
@@ -0,0 +1,144 @@
1
+ /**
2
+ @namespace
3
+ */
4
+ JSDOC.Lang = {
5
+ }
6
+
7
+ JSDOC.Lang.isBuiltin = function(name) {
8
+ return (JSDOC.Lang.isBuiltin.coreObjects.indexOf(name) > -1);
9
+ }
10
+ JSDOC.Lang.isBuiltin.coreObjects = ['_global_', 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', 'RegExp', 'String'];
11
+
12
+ JSDOC.Lang.whitespace = function(ch) {
13
+ return JSDOC.Lang.whitespace.names[ch];
14
+ }
15
+ JSDOC.Lang.whitespace.names = {
16
+ " ": "SPACE",
17
+ "\f": "FORMFEED",
18
+ "\t": "TAB",
19
+ "\u0009": "UNICODE_TAB",
20
+ "\u000A": "UNICODE_NBR",
21
+ "\u0008": "VERTICAL_TAB"
22
+ };
23
+
24
+ JSDOC.Lang.newline = function(ch) {
25
+ return JSDOC.Lang.newline.names[ch];
26
+ }
27
+ JSDOC.Lang.newline.names = {
28
+ "\n": "NEWLINE",
29
+ "\r": "RETURN",
30
+ "\u000A": "UNICODE_LF",
31
+ "\u000D": "UNICODE_CR",
32
+ "\u2029": "UNICODE_PS",
33
+ "\u2028": "UNICODE_LS"
34
+ };
35
+
36
+ JSDOC.Lang.keyword = function(word) {
37
+ return JSDOC.Lang.keyword.names["="+word];
38
+ }
39
+ JSDOC.Lang.keyword.names = {
40
+ "=break": "BREAK",
41
+ "=case": "CASE",
42
+ "=catch": "CATCH",
43
+ "=const": "VAR",
44
+ "=continue": "CONTINUE",
45
+ "=default": "DEFAULT",
46
+ "=delete": "DELETE",
47
+ "=do": "DO",
48
+ "=else": "ELSE",
49
+ "=false": "FALSE",
50
+ "=finally": "FINALLY",
51
+ "=for": "FOR",
52
+ "=function": "FUNCTION",
53
+ "=if": "IF",
54
+ "=in": "IN",
55
+ "=instanceof": "INSTANCEOF",
56
+ "=new": "NEW",
57
+ "=null": "NULL",
58
+ "=return": "RETURN",
59
+ "=switch": "SWITCH",
60
+ "=this": "THIS",
61
+ "=throw": "THROW",
62
+ "=true": "TRUE",
63
+ "=try": "TRY",
64
+ "=typeof": "TYPEOF",
65
+ "=void": "VOID",
66
+ "=while": "WHILE",
67
+ "=with": "WITH",
68
+ "=var": "VAR"
69
+ };
70
+
71
+ JSDOC.Lang.punc = function(ch) {
72
+ return JSDOC.Lang.punc.names[ch];
73
+ }
74
+ JSDOC.Lang.punc.names = {
75
+ ";": "SEMICOLON",
76
+ ",": "COMMA",
77
+ "?": "HOOK",
78
+ ":": "COLON",
79
+ "||": "OR",
80
+ "&&": "AND",
81
+ "|": "BITWISE_OR",
82
+ "^": "BITWISE_XOR",
83
+ "&": "BITWISE_AND",
84
+ "===": "STRICT_EQ",
85
+ "==": "EQ",
86
+ "=": "ASSIGN",
87
+ "!==": "STRICT_NE",
88
+ "!=": "NE",
89
+ "<<": "LSH",
90
+ "<=": "LE",
91
+ "<": "LT",
92
+ ">>>": "URSH",
93
+ ">>": "RSH",
94
+ ">=": "GE",
95
+ ">": "GT",
96
+ "++": "INCREMENT",
97
+ "--": "DECREMENT",
98
+ "+": "PLUS",
99
+ "-": "MINUS",
100
+ "*": "MUL",
101
+ "/": "DIV",
102
+ "%": "MOD",
103
+ "!": "NOT",
104
+ "~": "BITWISE_NOT",
105
+ ".": "DOT",
106
+ "[": "LEFT_BRACKET",
107
+ "]": "RIGHT_BRACKET",
108
+ "{": "LEFT_CURLY",
109
+ "}": "RIGHT_CURLY",
110
+ "(": "LEFT_PAREN",
111
+ ")": "RIGHT_PAREN"
112
+ };
113
+
114
+ JSDOC.Lang.matching = function(name) {
115
+ return JSDOC.Lang.matching.names[name];
116
+ }
117
+ JSDOC.Lang.matching.names = {
118
+ "LEFT_PAREN": "RIGHT_PAREN",
119
+ "RIGHT_PAREN": "LEFT_PAREN",
120
+ "LEFT_CURLY": "RIGHT_CURLY",
121
+ "RIGHT_CURLY": "LEFT_CURLY",
122
+ "LEFT_BRACE": "RIGHT_BRACE",
123
+ "RIGHT_BRACE": "LEFT_BRACE"
124
+ }
125
+
126
+ JSDOC.Lang.isNumber = function(str) {
127
+ return /^(\.[0-9]|[0-9]+\.|[0-9])[0-9]*([eE][+-][0-9]+)?$/i.test(str);
128
+ }
129
+
130
+ JSDOC.Lang.isHexDec = function(str) {
131
+ return /^0x[0-9A-F]+$/i.test(str);
132
+ }
133
+
134
+ JSDOC.Lang.isWordChar = function(str) {
135
+ return /^[a-zA-Z0-9$_.]+$/.test(str);
136
+ }
137
+
138
+ JSDOC.Lang.isSpace = function(str) {
139
+ return (typeof JSDOC.Lang.whitespace(str) != "undefined");
140
+ }
141
+
142
+ JSDOC.Lang.isNewline = function(str) {
143
+ return (typeof JSDOC.Lang.newline(str) != "undefined");
144
+ }
@@ -0,0 +1,146 @@
1
+ if (typeof JSDOC == "undefined") JSDOC = {};
2
+
3
+ /**
4
+ @namespace
5
+ @requires JSDOC.Walker
6
+ @requires JSDOC.Symbol
7
+ @requires JSDOC.DocComment
8
+ */
9
+ JSDOC.Parser = {
10
+ conf: {
11
+ ignoreCode: JSDOC.opt.n,
12
+ ignoreAnonymous: true, // factory: true
13
+ treatUnderscoredAsPrivate: true, // factory: true
14
+ explain: false // factory: false
15
+ },
16
+
17
+ addSymbol: function(symbol) {
18
+
19
+ if (JSDOC.Parser.rename) {
20
+ for (var n in JSDOC.Parser.rename) {
21
+ if (symbol.alias.indexOf(n) == 0) {
22
+ if (symbol.name == symbol.alias) {
23
+ symbol.name = symbol.name.replace(n, JSDOC.Parser.rename[n]);
24
+ }
25
+ symbol.alias = symbol.alias.replace(n, JSDOC.Parser.rename[n]);
26
+ }
27
+ }
28
+ }
29
+
30
+ if (JSDOC.opt.S) {
31
+ if (typeof JSDOC.Parser.secureModules == "undefined") JSDOC.Parser.secureModules = {};
32
+ if (/^exports\./.test(symbol.alias)) {
33
+ symbol.srcFile.match(/(^|[\\\/])([^\\\/]+)\.js/i);
34
+ var fileNS = RegExp.$2;
35
+
36
+ // need to create the namespace associated with this file first
37
+ if (!JSDOC.Parser.secureModules[fileNS]) {
38
+ JSDOC.Parser.secureModules[fileNS] = 1;
39
+ var nsSymbol = new JSDOC.Symbol(fileNS, [], "GLOBAL", new JSDOC.DocComment(""));
40
+ nsSymbol.isNamespace = true;
41
+ nsSymbol.srcFile = "";
42
+ nsSymbol.isPrivate = false;
43
+ nsSymbol.srcFile = symbol.srcFile;
44
+ nsSymbol.desc = (JSDOC.Parser.symbols.getSymbol(symbol.srcFile) || {desc: ""}).desc;
45
+ JSDOC.Parser.addSymbol(nsSymbol);
46
+ }
47
+
48
+ symbol.alias = symbol.alias.replace(/^exports\./, fileNS + '.');
49
+ symbol.name = symbol.name.replace(/^exports\./, '');
50
+ symbol.memberOf = fileNS;
51
+ symbol.isStatic = true;
52
+ }
53
+ }
54
+
55
+ // if a symbol alias is documented more than once the first one with the user docs wins
56
+ if (JSDOC.Parser.symbols.hasSymbol(symbol.alias)) {
57
+ var oldSymbol = JSDOC.Parser.symbols.getSymbol(symbol.alias);
58
+ if (oldSymbol.comment.isUserComment) {
59
+ if (JSDOC.opt.m) return;
60
+ if (symbol.comment.isUserComment) { // old and new are both documented
61
+ LOG.warn("The symbol '"+symbol.alias+"' is documented more than once.");
62
+ return;
63
+ }
64
+ else { // old is documented but new isn't
65
+ return;
66
+ }
67
+ }
68
+ }
69
+
70
+ // we don't document anonymous things
71
+ if (JSDOC.Parser.conf.ignoreAnonymous && symbol.name.match(/\$anonymous\b/)) return;
72
+
73
+ // uderscored things may be treated as if they were marked private, this cascades
74
+ if (JSDOC.Parser.conf.treatUnderscoredAsPrivate && symbol.name.match(/[.#-]_[^.#-]+$/)) {
75
+ if (!symbol.comment.getTag("public").length > 0) symbol.isPrivate = true;
76
+ }
77
+
78
+ // -p flag is required to document private things
79
+ if (!JSDOC.opt.p && symbol.isPrivate) return; // issue #161 fixed by mcbain.asm
80
+
81
+ // ignored things are not documented, this doesn't cascade
82
+ if (symbol.isIgnored) return;
83
+ JSDOC.Parser.symbols.addSymbol(symbol);
84
+ },
85
+
86
+ addBuiltin: function(name) {
87
+ var builtin = new JSDOC.Symbol(name, [], "CONSTRUCTOR", new JSDOC.DocComment(""));
88
+ builtin.isNamespace = true;
89
+ builtin.srcFile = "";
90
+ builtin.isPrivate = false;
91
+ JSDOC.Parser.addSymbol(builtin);
92
+ return builtin;
93
+ },
94
+
95
+ init: function() {
96
+ JSDOC.Parser.symbols = new JSDOC.SymbolSet();
97
+ JSDOC.Parser.walker = new JSDOC.Walker();
98
+ },
99
+
100
+ finish: function() {
101
+ JSDOC.Parser.symbols.relate();
102
+
103
+ // make a litle report about what was found
104
+ if (JSDOC.Parser.conf.explain) {
105
+ var symbols = JSDOC.Parser.symbols.toArray();
106
+ var srcFile = "";
107
+ for (var i = 0, l = symbols.length; i < l; i++) {
108
+ var symbol = symbols[i];
109
+ if (srcFile != symbol.srcFile) {
110
+ srcFile = symbol.srcFile;
111
+ print("\n"+srcFile+"\n-------------------");
112
+ }
113
+ print(i+":\n alias => "+symbol.alias + "\n name => "+symbol.name+ "\n isa => "+symbol.isa + "\n memberOf => " + symbol.memberOf + "\n isStatic => " + symbol.isStatic + ", isInner => " + symbol.isInner+ ", isPrivate => " + symbol.isPrivate);
114
+ }
115
+ print("-------------------\n");
116
+ }
117
+ }
118
+ }
119
+
120
+ JSDOC.Parser.parse = function(/**JSDOC.TokenStream*/ts, /**String*/srcFile) {
121
+ JSDOC.Symbol.srcFile = (srcFile || "");
122
+ JSDOC.DocComment.shared = ""; // shared comments don't cross file boundaries
123
+
124
+ if (!JSDOC.Parser.walker) JSDOC.Parser.init();
125
+ JSDOC.Parser.walker.walk(ts); // adds to our symbols
126
+
127
+ // filter symbols by option
128
+ for (var p = JSDOC.Parser.symbols._index.first(); p; p = JSDOC.Parser.symbols._index.next()) {
129
+ var symbol = p.value;
130
+
131
+ if (!symbol) continue;
132
+
133
+ if (symbol.is("FILE") || symbol.is("GLOBAL")) {
134
+ continue;
135
+ }
136
+ else if (!JSDOC.opt.a && !symbol.comment.isUserComment) {
137
+ JSDOC.Parser.symbols.deleteSymbol(symbol.alias);
138
+ }
139
+
140
+ if (/#$/.test(symbol.alias)) { // we don't document prototypes
141
+ JSDOC.Parser.symbols.deleteSymbol(symbol.alias);
142
+ }
143
+ }
144
+
145
+ return JSDOC.Parser.symbols.toArray();
146
+ }