colorful rat Ratfactor.com > Dave's Repos

hoot

Silly HTML game building engine
git clone http://ratfactor.com/repos/hoot/hoot.git

hoot/js/hoot-prettystruct.js

Download raw file: js/hoot-prettystruct.js

1 /* 2 3 This script is responsible for turning games into the structures seen on the 4 structure tab. 5 6 */ 7 8 function getPrettyStructure(tree){ 9 10 if(is_array(tree[0])){ return getPrettyStructure(tree[0]); } 11 12 switch(tree[0]){ 13 14 case "script": 15 return getThePrettyRest(tree); 16 17 case "func": 18 funcname = tree[1][1]; 19 return "<div class=\"disp-func\">" 20 +"<span class=\"funcname\">"+funcname+"</span>" 21 +"<div class=\"disp-func-inner\">"+getThePrettyRest(tree,2)+"</div></div>"; 22 23 case "assign": 24 first = tree[1][1]; 25 second = tree[2][1]; 26 return "<span class=\"disp-statement\">set <span class=\"disp-var\">"+first+"</span> to <span class=\"disp-var\">"+second+"</span></span><br>"; 27 28 case "print": 29 return "<div class=\"disp-print\">"+getThePrettyRest(tree)+"</div>"; 30 31 case "string": 32 return String(tree[1]).replace(/\\\//g,'/'); 33 34 case "link": 35 return "<u>"+tree[1]+"</u>"; 36 37 case "upname": 38 return "<b>^"+tree[1]+"</b>"; 39 40 case "strname": 41 return "<b>"+tree[1]+"</b>"; 42 43 case "break": 44 return "<br><b>&#8212;</b><br>"; 45 46 case "ifseq": 47 test1 = tree[1][1]; 48 test = tree[2][1]; 49 test2 = tree[3][1]; 50 return "<div class=\"disp-if\">" 51 +"<span class=\"disp-if-test\">if <span class=\"disp-var\">"+test1+"</span> " 52 +test+" <span class=\"disp-var\">"+test2+"</span></span>" 53 +"<div class=\"disp-if-inner\">"+getThePrettyRest(tree,4)+"</div></div>"; 54 55 case "elseseq": 56 return "</div></div><div class=\"disp-if\"><span class=\"disp-if-test\">else </span><div class=\"disp-if-inner\">"+getThePrettyRest(tree); 57 58 case "incr": 59 name = tree[1][1]; 60 return "<span class=\"disp-statement\">increase <span class=\"disp-var\">"+name+"</span></span><br>"; 61 62 case "decr": 63 name = tree[1][1]; 64 return "<span class=\"disp-statement\">decrease <span class=\"disp-var\">"+name+"</span></span><br>"; 65 66 case "runme": 67 name = tree[1][1]; 68 return "<span class=\"disp-statement\">run <span class=\"disp-var\">"+name+"</span></span><br>"; 69 70 71 default: 72 return "<span class=\"disp-unk\">unknown thing '"+tree[0]+"'</span><div class=\"disp-func\">"+getThePrettyRest(tree)+"</div>"; 73 } 74 } 75 76 function getThePrettyRest(tree, startwith){ 77 var o=""; 78 var i = startwith ? startwith : 1; 79 for( ; i<tree.length; i++){ 80 o += getPrettyStructure(tree[i]); 81 } 82 return o; 83 } 84 85 86 87 function is_array(thing){ 88 return Object.prototype.toString.apply(thing) == '[object Array]'; 89 }