Skip to content

Commit e12a45f

Browse files
committed
Initial support for CoffeeScript.
1 parent a64ef83 commit e12a45f

File tree

5 files changed

+58
-8
lines changed

5 files changed

+58
-8
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
module.exports =
3+
4+
recognize: (line, f, {emitMessage, emitFrame, emitStack}) ->
5+
m = line.match /// ^
6+
(.*Error) : # Error name
7+
(.+) # Message
8+
$
9+
///
10+
return unless m?
11+
12+
emitMessage line
13+
14+
consume: (line, f, {emitMessage, emitFrame, emitStack}) ->
15+
m = line.match /// ^
16+
at \s+
17+
([^(]+) # Function name
18+
\(
19+
([^:]+) : # Path
20+
(\d+) : # Line
21+
(\d+) # Column
22+
\)
23+
///
24+
return emitStack() unless m?
25+
26+
f.functionName m[1].trim()
27+
f.path m[2]
28+
f.lineNumber parseInt m[3]
29+
emitFrame()

lib/trace-parser.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{Stacktrace, Frame} = require './stacktrace'
2-
util = require 'util'
32
fs = require 'fs'
43
path = require 'path'
4+
util = require 'util'
55

66
# Internal: Build a Frame instance with a simple DSL.
77
#
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{traceParser} = require '../../lib/trace-parser'
2+
coffeeTracer = require '../../lib/parsers/coffeescript-trace-parser'
3+
ts = require '../trace-fixtures'
4+
5+
describe 'coffeeTracer', ->
6+
describe 'recognition', ->
7+
8+
it 'parses a trace from each CoffeeScript fixture', ->
9+
for f in Object.keys(ts.COFFEESCRIPT)
10+
result = traceParser(ts.COFFEESCRIPT[f], [coffeeTracer])
11+
expect(result.length > 0).toBe(true)
12+
13+
it "doesn't parse a trace from any non-CoffeeScript fixture", ->
14+
for k in Object.keys(ts)
15+
if k isnt 'COFFEESCRIPT'
16+
for f in Object.keys(ts[k])
17+
result = traceParser(ts[k][f], [coffeeTracer])
18+
expect(result.length).toBe(0)

spec/parsers/trace-parser-driver.coffee

Lines changed: 0 additions & 7 deletions
This file was deleted.

spec/trace-fixtures.coffee

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,13 @@ module.exports =
99
from /home/smash/samples/tracer/entry.rb:7:in `toplevel'
1010
from /home/smash/samples/tracer/entry.rb:10:in `<main>'
1111
"""
12+
COFFEESCRIPT:
13+
ERROR: """
14+
Error: yep
15+
at asFrame (/home/smash/code/stacktrace/lib/trace-parser.coffee:36:13)
16+
at t.recognize.emitFrame (/home/smash/code/stacktrace/lib/trace-parser.coffee:95:35)
17+
at Object.module.exports.recognize (/home/smash/code/stacktrace/lib/parsers/ruby-trace-parser.coffee:19:5)
18+
at traceParser (/home/smash/code/stacktrace/lib/trace-parser.coffee:93:11)
19+
at Function.Stacktrace.parse (/home/smash/code/stacktrace/lib/stacktrace.coffee:43:5)
20+
at [object Object].<anonymous> (/home/smash/code/stacktrace/spec/stacktrace-spec.coffee:9:28)
21+
"""

0 commit comments

Comments
 (0)