3 class PrettyPrint : Object
7 static string escapeHTML(string str) {
8 return str.replace("&","&").
11 replace("\"",""");
14 public static string toPretty(string str)
17 var txs = new TextStream(str);
18 var tr = new TokenReader(null);
19 tr.keepComments = true;
21 var toks = tr.tokenize(txs);
23 //var sp = new ScopeParser(new Collapse(toks));
24 //sp.buildSymbolTree();
27 // sp.mungeSymboltree();
29 //r += sp.warnings.join("<BR>");
35 var cs = ""; // current style..
37 // loop through and print it...?
40 for (var i = 0;i < toks.length; i++) {
41 var ns = toStyle(toks.get(i),cs);
44 if (cs.length > 0) { r += "</span>"; };
45 r +="<span class=\"jsdoc-"+ns+"\">";
48 if (toks.get(i).identifier != null) {
50 r += "<span class=\"with-ident2\">" +
51 escapeHTML(toks.get(i).data) + "</span>";
55 r += escapeHTML(toks.get(i).data); //.replace(/\n/g, "<BR/>\n");
57 if (cs.length > 0) r += "</span>";
59 return "<code class=\"jsdoc-pretty\">"+r+"</code>";
64 static string toStyle(Token tok, string cs)
67 if (tok.isName(TokenName.SPACE) || tok.isName(TokenName.NEWLINE) ) {
70 if (tok.isName(TokenName.MULTI_LINE_COMM) ||
71 tok.isName(TokenName.JSDOC) ||
72 tok.isName(TokenName.SINGLE_LINE_COMM) ) {
76 if (tok.isType(TokenType.STRN)) {
79 // other 'vary things??
80 if (tok.isType(TokenType.NAME) || tok.data == "." || tok.isName(TokenName.THIS)) {
83 var r = new Regex("^[a-zA-Z]+");
85 if (r.match(tok.data)) {