UNPKG

gnablib

Version:

A lean, zero dependency library to provide a useful base for your project.

1 lines 1.24 kB
import{color as t}from"../../cli/csi-tables.js";const s=Symbol.for("nodejs.util.inspect.custom"),{cyan:n,gray:r,yellow:e,red:i,reset:h}=t;export class ParseProblem{constructor(t,s,n,r,e){this.noun=t,this.reason=s,this.content=n,this.start=r,this.end=e,null!=e&&null==r&&(this.start=0)}renderRange(){if(null==this.start)return"";let t=":"+this.start;return this.end&&(t+="-"+this.end),t}toString(t="\n "){let s=`Invalid ${this.noun}, ${this.reason}`;const n=this.renderRange();return null!=this.content?n.length>0?s+=t+" '"+this.content+"'"+n:s+="; '"+this.content+"'":n.length>0&&(s+=" "+n),s}inColor(){let t=`Invalid ${n}${this.noun}${h}, ${this.reason}`;return null==this.content?(null!=this.start&&(t+=` :${e}${this.start}${h}-${e}${this.end}${h}`),t):null==this.start?t+"; '"+this.content+"'":(t+=`\n '${r}${this.content.substring(0,this.start)}`,this.end?t+`${i}${this.content.substring(this.start,this.end)}${h}`+`${r}${this.content.substring(this.end)}${h}`+`':${e}${this.start}${h}-${e}${this.end}${h}`:t+`${i}${this.content.charAt(this.start)}${h}`+`${r}${this.content.substring(this.start+1)}${h}`+`':${e}${this.start}${h}`)}get name(){return"ParseProblem"}get[Symbol.toStringTag](){return"ParseProblem"}[s](){return this.inColor()}}