Skip to content

Commit 4a373ab

Browse files
committed
Fix parsing of literate CoffeeScript.
1 parent 68a3b71 commit 4a373ab

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/helpers.coffee

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,14 @@ exports.nameWhitespaceCharacter = (string) ->
136136
when '\r' then 'carriage return'
137137
when '\t' then 'tab'
138138
else string
139+
140+
exports.invertLiterate = (code) ->
141+
maybe_code = true
142+
lines = for line in code.split('\n')
143+
if maybe_code and /^([ ]{4}|[ ]{0,3}\t)/.test line
144+
line
145+
else if maybe_code = /^\s*$/.test line
146+
line
147+
else
148+
'# ' + line
149+
lines.join '\n'

src/parser.coffee

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
# Import the helpers we need.
3-
{count, starts, compact, last, repeat, throwSyntaxError} = require './helpers'
3+
{count, starts, compact, last, repeat, throwSyntaxError, invertLiterate} = require './helpers'
44

55
$ = require './symbols'
66

@@ -305,6 +305,7 @@ module.exports = class Parser
305305
clean: (code) ->
306306
code = code.slice(1) if code.charCodeAt(0) is BOM
307307
code = code.replace(/\r/g, '') # strip carriage return chars
308+
code = invertLiterate code if @opts?.literate
308309
code
309310

310311
# Returns the line and column number from an offset into the current chunk.

0 commit comments

Comments
 (0)