+
+// <script type="text/javascript">
+
+TokenReader = imports.TokenReader.TokenReader;
+ScopeParser= imports.ScopeParser.ScopeParser;
+TokenStream = imports.TokenStream.TokenStream;
+TextStream = imports.TextStream.TextStream;
+
+
+function escapeHTML(str) {
+ return str.replace(/&/g,'&').
+ replace(/>/g,'>').
+ replace(/</g,'<').
+ replace(/"/g,'"');
+};
+
+function toPretty(str)
+{
+
+ var txs = new TextStream(str);
+ var tr = new TokenReader({ keepComments : true, keepWhite : true });
+ var toks = tr.tokenize(txs)
+
+ var sp = new ScopeParser(new TokenStream(toks));
+ sp.buildSymbolTree();
+ // sp.mungeSymboltree();
+ var r = '';
+ r += sp.warnings.join("<BR>");
+ r == "<BR>";
+
+
+
+
+ var cs = ''; // current style..
+
+ function toStyle(tok)
+ {
+ if (tok.is("WHIT") || tok.is("COMM") ) {
+ if (tok.data.indexOf("/") > -1) {
+ return 'comment';
+ }
+ return cs; // keep the same..
+ }
+ if (tok.is('STRN')) {
+ return 'string';
+ }
+ // other 'vary things??
+ if (tok.is('NAME') || tok.data == '.' || tok.name == 'THIS') {
+ return 'var';
+ }
+ if (/^[a-z]+/i.test(tok.data)) {
+ return 'keyword';
+ }
+ return 'syntax'
+ }
+ // loop through and print it...?
+
+
+ for (var i = 0;i < toks.length; i++) {
+ var ns = toStyle(toks[i]);
+ if (ns != cs) {
+ // change of style
+ if (cs.length) r +='</span>';
+ r +='<span class="jsdoc-'+ns+'">';
+ cs = ns;
+ }
+ if (toks[i].identifier) {
+
+ r += '<span class="with-ident2">' +
+ escapeHTML(toks[i].data) + '</span>';
+ continue;
+
+ }
+ r += escapeHTML(toks[i].data).replace(/\n/g, "<BR/>\n");
+ }
+ if (cs.length) r +='</span>';
+ return '<code class="jsdoc-pretty">'+r+'</code>';
+
+
+}