UNPKG

@cto.af/ucd

Version:

Download, cache, and parse files from the Unicode Character Database (UCD).

11 lines (10 loc) 12.8 kB
import{UCDFile as Us}from"../lib/ucdFile.js";const zs=new Set([" ","a","an","defines","describes","first","field","gives","is","second","short","the","third"]);class G extends SyntaxError{constructor(w,s,x,b){super(w),this.expected=s,this.found=x,this.location=b,this.name="SyntaxError"}format(w){let s="Error: "+this.message;if(this.location){let x=null;const b=w.find(L=>L.source===this.location.source);b&&(x=b.text.split(/\r\n|\n|\r/g));const C=this.location.start,A=this.location.source&&typeof this.location.source.offset=="function"?this.location.source.offset(C):C,F=this.location.source+":"+A.line+":"+A.column;if(x){const L=this.location.end,P="".padEnd(A.line.toString().length," "),O=x[C.line-1],p=(C.line===L.line?L.column:O.length+1)-C.column||1;s+=` --> `+F+` `+P+` | `+A.line+" | "+O+` `+P+" | "+"".padEnd(C.column-1," ")+"".padEnd(p,"^")}else s+=` at `+F}return s}static buildMessage(w,s){function x(p){return p.codePointAt(0).toString(16).toUpperCase()}const b=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function C(p){return b?p.replace(b,g=>"\\u{"+x(g)+"}"):p}function A(p){return C(p.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,g=>"\\x0"+x(g)).replace(/[\x10-\x1F\x7F-\x9F]/g,g=>"\\x"+x(g)))}function F(p){return C(p.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,g=>"\\x0"+x(g)).replace(/[\x10-\x1F\x7F-\x9F]/g,g=>"\\x"+x(g)))}const L={literal(p){return'"'+A(p.text)+'"'},class(p){const g=p.parts.map(y=>Array.isArray(y)?F(y[0])+"-"+F(y[1]):F(y));return"["+(p.inverted?"^":"")+g.join("")+"]"+(p.unicode?"u":"")},any(){return"any character"},end(){return"end of input"},other(p){return p.description}};function P(p){return L[p.type](p)}function O(p){const g=p.map(P);if(g.sort(),g.length>0){let y=1;for(let R=1;R<g.length;R++)g[R-1]!==g[R]&&(g[y]=g[R],y++);g.length=y}switch(g.length){case 1:return g[0];case 2:return g[0]+" or "+g[1];default:return g.slice(0,-1).join(", ")+", or "+g[g.length-1]}}function M(p){return p?'"'+A(p)+'"':"end of input"}return"Expected "+O(w)+" but "+M(s)+" found."}}function Bs(l,w){w=w!==void 0?w:{};const s={},x=w.grammarSource,b={data_file:xe};let C=xe;const A="#",F="-",L=".",P=".txt",O="date:",M="field",p="first",g="second",y="third",R="fourth",Pe="fifth",W="Derived",Re="property:",Y="@missing:",De="@",Z="..",ve="<",Oe=">",ee=";",Ie=":",se=/^[a-z_]/i,te=/^[^\r\n#]/,ne=/^[^ <>\t\r\n]/,re=/^[^\r\n#;]/,fe=/^[0-9]/,Me=/^[0-9a-f]/i,ie=/^[ \t]/,le=/^[\r\n]/,D=m("#",!1),ce=S([["a","z"],"_"],!1,!0,!1),je=m("-",!1),Ne=m(".",!1),Ue=m(".txt",!1),ze=m("date:",!0),oe=S(["\r",` `,"#"],!0,!1,!1),ae=m("field",!0),Be=m("first",!0),Te=m("second",!0),Xe=m("third",!0),Ge=m("fourth",!0),He=m("fifth",!0),ue=S([" ","<",">"," ","\r",` `],!0,!1,!1),H=Cs(),ke=m("Derived",!1),qe=m("Property:",!0),Je=m("@missing:",!1),Ke=m("@",!1),Qe=m("..",!1),Ve=m("<",!1),We=m(">",!1),ge=S(["\r",` `,"#",";"],!0,!1,!1),pe=S([["0","9"]],!1,!1,!1),$e=m(";",!1),Ye=m(":",!1),Ze=S([["0","9"],["a","f"]],!1,!0,!1),de=S([" "," "],!1,!1,!1),he=S(["\r",` `],!1,!1,!1);function es(){return _}function ss(e,t){_.name=e,_.version=t}function ts(e){_.date=new Date(e)}function ns(e,t){_.fields[e]=t}function rs(e,t){_.fields[e-1]=t}function fs(e){const t=e.split(/\b/);return{word:t.find(r=>r.includes("_"))||t.find(r=>!zs.has(r.toLowerCase())),description:e}}function is(){return 0}function ls(){return 1}function cs(){return 2}function os(){return 3}function as(){return 4}function us(e,t,r){const f={fields:[],property:t,derived:!!e};r&&(f.comment=r),_.entries.push(f)}function gs(e,t){const r={fields:e,missing:!0};t&&(r.comment=t),U&&(r.segment=U),_.entries.push(r)}function ps(e){U=e}function $s(e,t){const r={fields:e};t&&(r.comment=t),U&&(r.segment=U),_.entries.push(r)}function ds(e,t){return{range:[e,t]}}function hs(e,t){const r={points:t};return e&&(r.prefix=e),r}function ms(e){return e.trimEnd()||null}function ws(e){return parseInt(e,16)}function xs(e){return parseInt(e)}let n=w.peg$currPos|0,$=n;const I=[{line:1,column:1}];let E=n,z=w.peg$maxFailExpected||[],o=w.peg$silentFails|0,j;if(w.startRule){if(!(w.startRule in b))throw new Error(`Can't start parsing from rule "`+w.startRule+'".');C=b[w.startRule]}function Xs(){return l.substring($,n)}function Gs(){return $}function Hs(){return{source:x,start:$,end:n}}function ks(){return N($,n)}function qs(e,t){throw t=t!==void 0?t:N($,n),we([bs(e)],l.substring($,n),t)}function Js(e,t){throw t=t!==void 0?t:N($,n),ys(e,t)}function As(e=n){const t=l.codePointAt(e);return t===void 0?"":String.fromCodePoint(t)}function m(e,t){return{type:"literal",text:e,ignoreCase:t}}function S(e,t,r,f){return{type:"class",parts:e,inverted:t,ignoreCase:r,unicode:f}}function Cs(){return{type:"any"}}function Es(){return{type:"end"}}function bs(e){return{type:"other",description:e}}function me(e){let t=I[e],r;if(t)return t;if(e>=I.length)r=I.length-1;else for(r=e;!I[--r];);for(t=I[r],t={line:t.line,column:t.column};r<e;)l.charCodeAt(r)===10?(t.line++,t.column=1):t.column++,r++;return I[e]=t,t}function N(e,t,r){const f=me(e),i=me(t),c={source:x,start:{offset:e,line:f.line,column:f.column},end:{offset:t,line:i.line,column:i.column}};return r&&x&&typeof x.offset=="function"&&(c.start=x.offset(c.start),c.end=x.offset(c.end)),c}function a(e){n<E||(n>E&&(E=n,z=[]),z.push(e))}function ys(e,t){return new G(e,null,null,t)}function we(e,t,r){return new G(G.buildMessage(e,t),e,t,r)}function xe(){let e,t,r;return e=n,t=_s(),r=Rs(),r!==s?($=e,e=es()):(n=e,e=s),e}function _s(){let e,t,r,f;for(e=[],t=n,r=Ae(),r!==s?(f=Le(),f!==s?(r=[r,f],t=r):(n=t,t=s)):(n=t,t=s);t!==s;)e.push(t),t=n,r=Ae(),r!==s?(f=Le(),f!==s?(r=[r,f],t=r):(n=t,t=s)):(n=t,t=s);return e}function Ae(){let e;return e=Ls(),e===s&&(e=Ss(),e===s&&(e=Fs(),e===s&&(e=q()))),e}function Fs(){let e,t,r,f,i,c,u,h;if(e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s){if(r=d(),f=n,i=[],c=l.charAt(n),se.test(c)?n++:(c=s,o===0&&a(ce)),c!==s)for(;c!==s;)i.push(c),c=l.charAt(n),se.test(c)?n++:(c=s,o===0&&a(ce));else i=s;if(i!==s?f=l.substring(f,n):f=i,f!==s)if(l.charCodeAt(n)===45?(i=F,n++):(i=s,o===0&&a(je)),i!==s){for(c=[],u=K();u!==s;)c.push(u),u=n,l.charCodeAt(n)===46?(h=L,n++):(h=s,o===0&&a(Ne)),h!==s?(h=K(),h===s?(n=u,u=s):u=h):u=h;l.substr(n,4)===P?(u=P,n+=4):(u=s,o===0&&a(Ue)),u!==s?($=e,e=ss(f,c)):(n=e,e=s)}else n=e,e=s;else n=e,e=s}else n=e,e=s;return e}function Ls(){let e,t,r,f,i,c,u,h;if(e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s)if(r=d(),f=l.substr(n,5),f.toLowerCase()===O?n+=5:(f=s,o===0&&a(ze)),f!==s){if(i=d(),c=n,u=[],h=l.charAt(n),te.test(h)?n++:(h=s,o===0&&a(oe)),h!==s)for(;h!==s;)u.push(h),h=l.charAt(n),te.test(h)?n++:(h=s,o===0&&a(oe));else u=s;u!==s?c=l.substring(c,n):c=u,c!==s?($=e,e=ts(c)):(n=e,e=s)}else n=e,e=s;else n=e,e=s;return e}function Ss(){let e,t,r,f,i,c,u,h,v;return e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s?(r=d(),f=Ps(),f!==s?(i=d(),c=l.substr(n,5),c.toLowerCase()===M?n+=5:(c=s,o===0&&a(ae)),c!==s?(u=_e(),u!==s?(h=d(),v=Ce(),$=e,e=ns(f,v)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s),e===s&&(e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s?(r=d(),f=l.substr(n,5),f.toLowerCase()===M?n+=5:(f=s,o===0&&a(ae)),f===s&&(f=null),i=d(),c=K(),c!==s?(u=_e(),u!==s?(h=d(),v=Ce(),$=e,e=rs(c,v)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s)),e}function Ce(){let e,t;return e=n,t=J(),$=e,t=fs(t),e=t,e}function Ps(){let e,t;return e=n,t=l.substr(n,5),t.toLowerCase()===p?n+=5:(t=s,o===0&&a(Be)),t!==s&&($=e,t=is()),e=t,e===s&&(e=n,t=l.substr(n,6),t.toLowerCase()===g?n+=6:(t=s,o===0&&a(Te)),t!==s&&($=e,t=ls()),e=t,e===s&&(e=n,t=l.substr(n,5),t.toLowerCase()===y?n+=5:(t=s,o===0&&a(Xe)),t!==s&&($=e,t=cs()),e=t,e===s&&(e=n,t=l.substr(n,6),t.toLowerCase()===R?n+=6:(t=s,o===0&&a(Ge)),t!==s&&($=e,t=os()),e=t,e===s&&(e=n,t=l.substr(n,5),t.toLowerCase()===Pe?n+=5:(t=s,o===0&&a(He)),t!==s&&($=e,t=as()),e=t)))),e}function k(){let e,t,r;if(e=n,t=[],r=l.charAt(n),ne.test(r)?n++:(r=s,o===0&&a(ue)),r!==s)for(;r!==s;)t.push(r),r=l.charAt(n),ne.test(r)?n++:(r=s,o===0&&a(ue));else t=s;return t!==s?e=l.substring(e,n):e=t,e}function q(){let e,t,r,f;return e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s?(r=d(),f=J(),e=f):(n=e,e=s),e}function J(){let e,t,r,f,i;for(e=n,t=[],r=n,f=n,o++,i=X(),o--,i===s?f=void 0:(n=f,f=s),f!==s?(l.length>n?(i=l.charAt(n),n++):(i=s,o===0&&a(H)),i!==s?(f=[f,i],r=f):(n=r,r=s)):(n=r,r=s);r!==s;)t.push(r),r=n,f=n,o++,i=X(),o--,i===s?f=void 0:(n=f,f=s),f!==s?(l.length>n?(i=l.charAt(n),n++):(i=s,o===0&&a(H)),i!==s?(f=[f,i],r=f):(n=r,r=s)):(n=r,r=s);return e=l.substring(e,n),e}function Rs(){let e,t;if(e=[],t=Ee(),t!==s)for(;t!==s;)e.push(t),t=Ee();else e=s;return e}function Ee(){let e;return e=Ds(),e===s&&(e=vs(),e===s&&(e=Os(),e===s&&(e=Is(),e===s&&(e=T(),e===s&&(e=q()))))),e}function Ds(){let e,t,r,f,i,c,u,h,v;return e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s?(r=d(),f=n,l.substr(n,7)===W?(i=W,n+=7):(i=s,o===0&&a(ke)),i!==s?(c=d(),i=[i,c],f=i):(n=f,f=s),f===s&&(f=null),i=l.substr(n,9),i.toLowerCase()===Re?n+=9:(i=s,o===0&&a(qe)),i!==s?(c=d(),u=k(),u!==s?(h=d(),v=J(),$=e,e=us(f,u,v)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s),e}function vs(){let e,t,r,f,i,c,u;return e=n,l.charCodeAt(n)===35?(t=A,n++):(t=s,o===0&&a(D)),t!==s?(r=d(),l.substr(n,9)===Y?(f=Y,n+=9):(f=s,o===0&&a(Je)),f!==s?(i=d(),c=be(),c!==s?(u=T(),u!==s?($=e,e=gs(c,u)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s),e}function Os(){let e,t,r,f;return e=n,l.charCodeAt(n)===64?(t=De,n++):(t=s,o===0&&a(Ke)),t!==s?(r=k(),r!==s?(f=T(),f!==s?($=e,e=ps(r)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s),e}function Is(){let e,t,r;return e=n,t=be(),t!==s?(r=T(),r!==s?($=e,e=$s(t,r)):(n=e,e=s)):(n=e,e=s),e}function be(){let e,t,r,f,i,c;for(e=n,t=[],r=n,f=d(),i=ye(),i!==s?r=i:(n=r,r=s);r!==s;)t.push(r),r=n,f=n,i=Q(),i!==s?(c=d(),i=[i,c],f=i):(n=f,f=s),f!==s?(f=n,i=d(),c=ye(),c!==s?f=c:(n=f,f=s),f===s?(n=r,r=s):r=f):r=f;return t.length<2?(n=e,e=s):e=t,e}function ye(){let e;return e=Ms(),e===s&&(e=js(),e===s&&(e=Ns())),e}function Ms(){let e,t,r,f,i,c,u;return e=n,t=B(),t!==s?(l.substr(n,2)===Z?(r=Z,n+=2):(r=s,o===0&&a(Qe)),r!==s?(f=B(),f!==s?(i=d(),c=n,o++,u=Q(),o--,u!==s?(n=c,c=void 0):c=s,c!==s?($=e,e=ds(t,f)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s)):(n=e,e=s),e}function js(){let e,t,r,f,i,c;for(e=n,t=n,l.charCodeAt(n)===60?(r=ve,n++):(r=s,o===0&&a(Ve)),r!==s?(f=k(),f!==s?(l.charCodeAt(n)===62?(i=Oe,n++):(i=s,o===0&&a(We)),i!==s?(c=d(),t=f):(n=t,t=s)):(n=t,t=s)):(n=t,t=s),t===s&&(t=null),r=n,f=[],i=B();i!==s;)f.push(i),i=n,c=d(),c=B(),c===s?(n=i,i=s):i=c;return f.length<1?(n=r,r=s):r=f,r!==s?(f=d(),i=n,o++,c=Q(),o--,c!==s?(n=i,i=void 0):i=s,i!==s?($=e,e=hs(t,r)):(n=e,e=s)):(n=e,e=s),e}function Ns(){let e,t,r,f,i;for(e=n,t=d(),r=n,f=[],i=l.charAt(n),re.test(i)?n++:(i=s,o===0&&a(ge));i!==s;)f.push(i),i=l.charAt(n),re.test(i)?n++:(i=s,o===0&&a(ge));return r=l.substring(r,n),$=e,e=ms(r),e}function B(){let e,t,r,f,i;for(e=n,t=n,r=n,f=[],i=Fe();i!==s;)f.push(i),f.length>=6?i=s:i=Fe();return f.length<4?(n=r,r=s):r=f,r!==s?t=l.substring(t,n):t=r,t!==s&&($=e,t=ws(t)),e=t,e}function K(){let e,t,r,f;if(e=n,t=n,r=[],f=l.charAt(n),fe.test(f)?n++:(f=s,o===0&&a(pe)),f!==s)for(;f!==s;)r.push(f),f=l.charAt(n),fe.test(f)?n++:(f=s,o===0&&a(pe));else r=s;return r!==s?t=l.substring(t,n):t=r,t!==s&&($=e,t=xs(t)),e=t,e}function T(){let e,t,r,f,i;return e=n,l.charCodeAt(n)===59?(t=ee,n++):(t=s,o===0&&a($e)),t===s&&(t=null),r=d(),f=q(),f===s&&(f=null),i=X(),i!==s?e=f:(n=e,e=s),e}function _e(){let e;return l.charCodeAt(n)===58?(e=Ie,n++):(e=s,o===0&&a(Ye)),e}function Q(){let e;return l.charCodeAt(n)===59?(e=ee,n++):(e=s,o===0&&a($e)),e}function Fe(){let e;return e=l.charAt(n),Me.test(e)?n++:(e=s,o===0&&a(Ze)),e}function d(){let e,t;for(e=[],t=l.charAt(n),ie.test(t)?n++:(t=s,o===0&&a(de));t!==s;)e.push(t),t=l.charAt(n),ie.test(t)?n++:(t=s,o===0&&a(de));return e}function X(){let e,t;if(e=[],t=l.charAt(n),le.test(t)?n++:(t=s,o===0&&a(he)),t!==s)for(;t!==s;)e.push(t),t=l.charAt(n),le.test(t)?n++:(t=s,o===0&&a(he));else e=s;return e}function Le(){let e,t;return e=X(),e===s&&(e=n,o++,l.length>n?(t=l.charAt(n),n++):(t=s,o===0&&a(H)),o--,t===s?e=void 0:(n=e,e=s)),e}const _=new Us;let U=null;j=C();const V=j!==s&&n===l.length;function Se(){throw j!==s&&n<l.length&&a(Es()),we(z,E<l.length?As(E):null,E<l.length?N(E,E+1):N(E,E))}if(w.peg$library)return{peg$result:j,peg$currPos:n,peg$FAILED:s,peg$maxFailExpected:z,peg$maxFailPos:E,peg$success:V,peg$throw:V?void 0:Se};if(V)return j;Se()}const Ts=["data_file"];export{Ts as StartRules,G as SyntaxError,Bs as parse};