- Timestamp:
- 11/16/07 02:20:55 (6 years ago)
- Location:
- lang/javascript/javascript-xpath/trunk
- Files:
-
- 3 modified
-
src/jxanalyzer.js (modified) (12 diffs)
-
test/functional/analyzer.css (modified) (1 diff)
-
test/functional/logger.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/javascript-xpath/trunk/src/jxanalyzer.js
r1588 r1603 6 6 JXAnalyzer.nextObjId = 0; 7 7 JXAnalyzer.IndentDeck = ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "; 8 9 JXAnalyzer.rxStep = /^Step\[/; 10 JXAnalyzer.rxXPathExpression = /^XPathExpression\[/; 11 JXAnalyzer.rxXPathResult = /^XPathResult\[/; 12 13 JXAnalyzer.NodeTypeNames = [ 14 '', 15 'ELEM', 16 'ATTR', 17 'TEXT', 18 'CDATA', 19 '', 20 '', 21 '', 22 '', 23 'DOCUMENT' 24 ] 25 8 26 JXAnalyzer.makeIndent = function(i) { 9 27 return JXAnalyzer.IndentDeck.substring(0, i*2); … … 21 39 } 22 40 return destination; 41 } 42 43 JXAnalyzer.escapeHTML = function(t) { 44 var div = document.createElement('div'); 45 var text = document.createTextNode(t); 46 div.appendChild(text); 47 return div.innerHTML; 23 48 } 24 49 … … 47 72 e.stepObj = e.args[1]; 48 73 } 74 else if (e.name == "push") 75 { 76 e.node = e.args[0]; 77 } 49 78 50 79 ctx.events.push(e); … … 69 98 var e = this.ctx.events[i]; 70 99 var row; 100 101 if (e.time) 102 e.ET = e.time - this.ctx.tmStart; 103 71 104 if (e.name == "parse") 72 105 row = this.makeParseEventLog(e); … … 77 110 else if (e.name == "step") 78 111 row = this.makeStepEventLog(e); 112 else if (e.name == "push") 113 row = this.makePushEventLog(e); 79 114 115 if (row && e.ET>=50) 116 row.className = (e.ET<100) ? "heavy-1" : "heavy-2"; 117 80 118 if (row) 81 119 container.appendChild(row); … … 87 125 makeParseEventLog: function(e) { 88 126 var P = document.createElement("p"); 89 P.innerHTML = JXAnalyzer.makeIndent(e.pnest)+"<em class=\"az-parse-call\">"+e.parserName +".parse</em> next token: '"+e.nextToken+ "' at start + "+ (e.time-this.ctx.tmStart);127 P.innerHTML = JXAnalyzer.makeIndent(e.pnest)+"<em class=\"az-parse-call\">"+e.parserName +".parse</em> next token: '"+e.nextToken+ "' at start + "+e.ET; 90 128 91 129 return P; … … 94 132 makeEvaluateEventLog: function(e) { 95 133 var P = document.createElement("p"); 96 P.innerHTML = JXAnalyzer.makeIndent(e.pnest)+"<em class=\"az-eval-call\">"+e.parserName +".evaluate</em> at start + "+ (e.time-this.ctx.tmStart);134 P.innerHTML = JXAnalyzer.makeIndent(e.pnest)+"<em class=\"az-eval-call\">"+e.parserName +".evaluate</em> at start + "+e.ET; 97 135 98 136 return P; … … 101 139 makeCtorEventLog: function(e) { 102 140 var P = document.createElement("p"); 141 142 var additionalClass = ""; 143 if (e.parserName.match(JXAnalyzer.rxXPathExpression) || e.parserName.match(JXAnalyzer.rxXPathResult)) 144 additionalClass = " important"; 103 145 104 146 var flds = [ 105 147 JXAnalyzer.makeIndent(e.pnest), 106 "<em class=\"az-ctor-call \">ctor ",148 "<em class=\"az-ctor-call"+additionalClass+"\">ctor ", 107 149 e.parserName, 108 150 "</em>" 109 151 ]; 110 152 111 if (e.parserName.match( /^Step\[/))153 if (e.parserName.match(JXAnalyzer.rxStep)) 112 154 flds.push(" axis='"+e.obj.axis+"'"); 113 155 114 flds.push(" at start + " + (e.time-this.ctx.tmStart));156 flds.push(" at start + " + e.ET); 115 157 116 158 P.innerHTML = flds.join(''); … … 131 173 e.stepObj._parser_name, 132 174 " at start + ", 133 e. time-this.ctx.tmStart175 e.ET 134 176 ]; 135 177 136 178 P.innerHTML = flds.join(''); 179 180 return P; 181 }, 182 183 dumpNode: function(nd) { 184 var datas = []; 185 186 if (nd.nodeType != void(0)) 187 datas.push("<em class=\"nodetype-"+JXAnalyzer.NodeTypeNames[nd.nodeType]+"\">"+JXAnalyzer.NodeTypeNames[nd.nodeType]+"</em>"); 188 189 if (nd.tagName) 190 datas.push("tagName='"+nd.tagName+"'"); 191 192 if (nd.className) 193 datas.push("className='"+nd.className+"'"); 194 195 if (nd.nodeType == 3) 196 datas.push("'"+JXAnalyzer.escapeHTML(nd.nodeValue)+"'"); 197 198 return datas.join(" "); 199 }, 200 201 makePushEventLog: function(e) { 202 var P = document.createElement("p"); 203 P.innerHTML = JXAnalyzer.makeIndent(e.pnest)+"<em class=\"az-push-call\">"+e.parserName +".push</em> "+this.dumpNode(e.node)+" at start + "+e.ET; 137 204 138 205 return P; … … 148 215 "BinaryExpr", "FilterExpr", "FunctionCall", "Literal", 149 216 "NameTest", "NodeType", "Number", "PathExpr", 150 "Step", "UnaryExpr", "UnionExpr", "VariableReference"]; 217 "Step", "UnaryExpr", "UnionExpr", "VariableReference", 218 "XPathExpression"]; 151 219 152 220 JXAnalyzer.HOOK_NODEOBJS = [ … … 155 223 "Step", "UnaryExpr", "UnionExpr", "VariableReference", 156 224 157 "NodeSet" ];225 "NodeSet", "XPathExpression", "XPathResult"]; 158 226 159 227 JXAnalyzer.hookMethod = function(obj, name, tracer) { … … 187 255 if (parser) 188 256 { 189 if (parser.parse) 190 { 191 parser._parser_name = objName; 192 JXAnalyzer.hookMethod(parser, "parse", Azr); 193 JXAnalyzer.hookMethod(parser.prototype, "evaluate", Azr); 194 } 257 parser._parser_name = objName; 258 JXAnalyzer.hookMethod(parser, "parse", Azr); 259 JXAnalyzer.hookMethod(parser.prototype, "evaluate", Azr); 195 260 } 196 261 } 197 262 198 263 JXAnalyzer.hookMethod(PathExpr.prototype, "step", Azr); 264 JXAnalyzer.hookMethod(NodeSet.prototype, "push", Azr); 199 265 200 266 var len = JXAnalyzer.HOOK_NODEOBJS.length; -
lang/javascript/javascript-xpath/trunk/test/functional/analyzer.css
r1588 r1603 2 2 background: #fff; 3 3 color: #333; 4 margin: 0; 5 padding: 0; 6 font-weight: 400; 7 font-family: Arial, sans-serif; 8 } 9 10 .analyzer-out p { 11 margin: 0; 12 padding: 0.3em; 13 border-bottom: 1px dotted #ddd; 14 border-left: 8px solid #fff; 15 } 16 17 .analyzer-out p em { 18 font-style: normal; 19 } 20 21 .analyzer-out .heavy-1 { 22 border-left-color: #fe9; 23 } 24 25 .analyzer-out .heavy-2 { 26 border-left-color: #f94; 4 27 } 5 28 6 29 .az-parse-call { 7 font-style: normal;8 30 color: #008; 9 31 } 10 32 11 33 .az-step-call { 12 font-style: normal;13 34 color: #28c; 14 35 } 15 36 16 37 .az-ctor-call { 17 font-style: normal;18 38 color: #850; 19 39 } 20 40 41 .az-ctor-call.important { 42 font-size: 160%; 43 } 44 21 45 .az-eval-call { 22 font-style: normal;23 46 color: #290; 24 47 } 48 49 .az-push-call { 50 color: #578; 51 } 52 53 .nodetype-ELEM, 54 .nodetype-ATTR, 55 .nodetype-TEXT, 56 .nodetype-DOCUMENT { 57 padding: 2px; 58 } 59 60 .nodetype-ELEM { 61 color: #fff; 62 background: #469; 63 } 64 65 .nodetype-ATTR { 66 color: #fff; 67 background: #a56; 68 } 69 70 .nodetype-TEXT { 71 color: #fff; 72 background: #9ba; 73 } 74 75 .nodetype-DOCUMENT { 76 color: #fff; 77 background: #963; 78 } 79 80 td.fullspan { 81 padding-top: 0; 82 border-top-width: 0; 83 } 84 -
lang/javascript/javascript-xpath/trunk/test/functional/logger.js
r1580 r1603 143 143 tr.appendChild(td); 144 144 td.setAttribute("colSpan", this.countCols); 145 td.className = "fullspan"; 145 146 } 146 147 };
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)