neft
Version:
Universal Platform
23 lines (19 loc) • 624 B
text/coffeescript
fs = require 'fs'
pathUtils = require 'path'
PEG = require 'pegjs'
grammar = require './grammar.pegjs'
parser = PEG.buildParser grammar,
optimize: 'speed'
module.exports = (file) ->
try
parser.parse(file)
catch err
lines = file.split '\n'
line = err.line - 1
msg = ''
msg += lines[line - 1] + '\n' if err.line > 1
msg += "\u001b[31m#{lines[line]}\u001b[39m \n" if line isnt lines.length
msg += lines[line + 1] + '\n' if line < lines.length
msg += "\nLine #{err.line}, column #{err.column}: #{err.message}\n"
throw Error msg