JSDOC/PrettyPrint.js
[gnome.introspection-doc-generator] / JSDOC / PrettyPrint.js
1
2 // <script type="text/javascript">
3
4
5 toPretty = function toPretty(str)
6 {
7     var tr = new JSDOC.TokenReader();
8     var toks = tr.tokenize(str,false); // dont merge xxx + . + yyyy etc.
9     var sp = new JSDOC.ScopeParser(new JSDOC.TokenStream(toks));
10     sp.buildSymbolTree();
11    // sp.mungeSymboltree();
12     var r = '';
13     r += sp.warnings.join("<BR>");
14     r == "<BR>";
15     
16     
17     
18     
19     var cs = ''; // current style..
20     
21     function toStyle(tok)
22     {
23         if (tok.isType("whitespace")) {
24             if (tok.data.indexOf("/") > -1) {
25                 return 'comment';
26             }
27             return cs; // keep the same..
28         }
29         if (tok.isType('string')) {
30             return 'string';
31         }
32         // other 'vary things??
33         if (tok.isType('identifier') || tok.isType('dot') || tok.isType('this')) {
34             return 'var';
35         }
36         if (/^[a-z]+/i.test(tok.data)) {
37             return 'keyword';
38         }
39         return 'syntax'
40         
41     }
42     // loop through and print it...?
43     
44     
45     for (var i = 0;i < toks.length; i++) {
46         var ns = toStyle(toks[i]);
47         if (ns != cs) {
48             // change of style
49             if (cs.length) r +='</span>';
50             r +='<span class="jsdoc-'+ns+'">';
51             cs = ns;
52         }
53         if (toks[i].identifier) {
54             
55             r += '<span class="with-ident2">' +
56                 htmlescape(toks[i].data) + '</span>';
57                 continue;
58                 
59         }
60         r += htmlescape(toks[i].data).replace(/\n/g, '<BR>');
61     }
62     if (cs.length) r +='</span>';
63     return '<code class="jsdoc-pretty">'+r+'</code>';
64     
65         
66 }