(name)
| 109 | this.current = current; |
| 110 | } |
| 111 | onEndElement(name) { |
| 112 | const current = this.current; |
| 113 | this.current = null; |
| 114 | switch (name) { |
| 115 | case 'xsbug': |
| 116 | this.onParsed?.(); |
| 117 | break; |
| 118 | case 'breakpoint': |
| 119 | case 'instrument': |
| 120 | case 'file': |
| 121 | case 'frame': |
| 122 | this.current = current.parent; |
| 123 | delete current.parent; |
| 124 | break; |
| 125 | case 'node': |
| 126 | case 'property': |
| 127 | let isRoot = (current.parent && current.parent.name === 'xsbug'); |
| 128 | this.current = current.parent; |
| 129 | delete current.parent; |
| 130 | if (current.children.length == 0) |
| 131 | delete current.children; |
| 132 | if (isRoot) |
| 133 | this.onViewChanged('property', [current]); |
| 134 | break; |
| 135 | |
| 136 | case 'break': |
| 137 | this.onLogged(current.path, current.line, current.data); |
| 138 | this.onBroken(current.path, current.line, current.data); |
| 139 | break; |
| 140 | case 'breakpoints': |
| 141 | this.onViewChanged(name, current.children); |
| 142 | break; |
| 143 | case 'bubble': |
| 144 | this.onBubbled(current.name, current.value, current.path, current.line, current.data); |
| 145 | break; |
| 146 | case 'eval': |
| 147 | this.onEval(current.path, current.data); |
| 148 | break; |
| 149 | case 'files': |
| 150 | this.onViewChanged(name, current.children); |
| 151 | break; |
| 152 | case 'frames': |
| 153 | this.onViewChanged(name, current.children); |
| 154 | break; |
| 155 | case 'global': |
| 156 | this.onViewChanged(name, current.children); |
| 157 | break; |
| 158 | case 'grammar': |
| 159 | this.onViewChanged("modules", current.children); // historical |
| 160 | break; |
| 161 | case 'import': |
| 162 | this.onImport(current.path); |
| 163 | break; |
| 164 | case 'instruments': |
| 165 | this.onInstrumentDescriptions(current.children); |
| 166 | break; |
| 167 | case 'local': |
| 168 | if (current.path && current.line) |
no test coverage detected