UNPKG

estilo

Version:

Create color schemes for Vim, NeoVim, Airline and Lightline

72 lines (71 loc) 2.16 kB
export class EtaError extends Error { constructor(message) { super(message); this.name = "Eta Error"; } } export class EtaParseError extends EtaError { constructor(message) { super(message); this.name = "EtaParser Error"; } } export class EtaRuntimeError extends EtaError { constructor(message) { super(message); this.name = "EtaRuntime Error"; } } export class EtaFileResolutionError extends EtaError { constructor(message) { super(message); this.name = "EtaFileResolution Error"; } } export class EtaNameResolutionError extends EtaError { constructor(message) { super(message); this.name = "EtaNameResolution Error"; } } /** * Throws an EtaError with a nicely formatted error and message showing where in the template the error occurred. */ export function ParseErr(message, str, indx) { const whitespace = str.slice(0, indx).split(/\n/); const lineNo = whitespace.length; const colNo = whitespace[lineNo - 1].length + 1; message += " at line " + lineNo + " col " + colNo + ":\n\n" + " " + str.split(/\n/)[lineNo - 1] + "\n" + " " + Array(colNo).join(" ") + "^"; throw new EtaParseError(message); } export function RuntimeErr(originalError, str, lineNo, path) { // code gratefully taken from https://github.com/mde/ejs and adapted const lines = str.split("\n"); const start = Math.max(lineNo - 3, 0); const end = Math.min(lines.length, lineNo + 3); const filename = path; // Error context const context = lines .slice(start, end) .map(function (line, i) { const curr = i + start + 1; return (curr == lineNo ? " >> " : " ") + curr + "| " + line; }) .join("\n"); const header = filename ? filename + ":" + lineNo + "\n" : "line " + lineNo + "\n"; const err = new EtaRuntimeError(header + context + "\n\n" + originalError.message); err.name = originalError.name; // the original name (e.g. ReferenceError) may be useful throw err; }