neft
Version:
JavaScript. Everywhere.
26 lines (21 loc) • 733 B
text/coffeescript
fs = require 'fs'
pathUtils = require 'path'
grammar = fs.readFileSync pathUtils.resolve(__dirname, './grammar.pegjs'), 'utf-8'
module.exports = (file) ->
fs = require 'fs'
pathUtils = require 'path'
PEG = require 'pegjs'
parser = PEG.buildParser grammar,
optimize: 'speed'
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