( e, offset )
| 1204 | // Later Safari and IE10 are supposed to support error.stack as well |
| 1205 | // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack |
| 1206 | function extractStacktrace( e, offset ) { |
| 1207 | offset = offset === undefined ? 3 : offset; |
| 1208 | |
| 1209 | var stack, include, i, regex; |
| 1210 | |
| 1211 | if ( e.stacktrace ) { |
| 1212 | // Opera |
| 1213 | return e.stacktrace.split( "\n" )[ offset + 3 ]; |
| 1214 | } else if ( e.stack ) { |
| 1215 | // Firefox, Chrome |
| 1216 | stack = e.stack.split( "\n" ); |
| 1217 | if (/^error$/i.test( stack[0] ) ) { |
| 1218 | stack.shift(); |
| 1219 | } |
| 1220 | if ( fileName ) { |
| 1221 | include = []; |
| 1222 | for ( i = offset; i < stack.length; i++ ) { |
| 1223 | if ( stack[ i ].indexOf( fileName ) != -1 ) { |
| 1224 | break; |
| 1225 | } |
| 1226 | include.push( stack[ i ] ); |
| 1227 | } |
| 1228 | if ( include.length ) { |
| 1229 | return include.join( "\n" ); |
| 1230 | } |
| 1231 | } |
| 1232 | return stack[ offset ]; |
| 1233 | } else if ( e.sourceURL ) { |
| 1234 | // Safari, PhantomJS |
| 1235 | // hopefully one day Safari provides actual stacktraces |
| 1236 | // exclude useless self-reference for generated Error objects |
| 1237 | if ( /qunit.js$/.test( e.sourceURL ) ) { |
| 1238 | return; |
| 1239 | } |
| 1240 | // for actual exceptions, this is useful |
| 1241 | return e.sourceURL + ":" + e.line; |
| 1242 | } |
| 1243 | } |
| 1244 | function sourceFromStacktrace( offset ) { |
| 1245 | try { |
| 1246 | throw new Error(); |
no outgoing calls
no test coverage detected