UNPKG

prsc

Version:

Tiny parser combinators library

3 lines (2 loc) 4.6 kB
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).prsc={})}(this,(function(n){"use strict";function t(n,t){return{success:!0,offset:n,value:t}}function e(n){return t(n,void 0)}function r(n,t,e=!1){return{success:!1,offset:n,expected:t,fatal:e}}function o(n){return n>65535?2:1}function u(n,t){return(u,c)=>{const s=u.codePointAt(c);return void 0!==s&&n(s)?e(c+o(s)):r(c,t)}}function c(n,e){return(r,o)=>{const u=n(r,o);return u.success?t(u.offset,e(u.value)):u}}function s(n){return(e,r)=>{let o=[],u=r;for(;;){const t=n(e,u);if(!t.success){if(t.fatal)return t;break}if(o.push(t.value),t.offset===u)break;u=t.offset}return t(u,o)}}function f(n){return(t,r)=>{let o=r;for(;;){const e=n(t,o);if(!e.success){if(e.fatal)return e;break}if(e.offset===o)break;o=e.offset}return e(o)}}function i(n,e,r){return(o,u)=>{const c=n(o,u);if(!c.success)return c;const s=e(o,c.offset);return s.success?t(s.offset,r(c.value,s.value)):s}}function l(n,t){return n}function d(n,t){return t}function a(n,t){return i(n,t,d)}function p(n,t){return i(n,t,l)}function v(n,t){return(o,u)=>n(o,u).success?r(u,t):e(u)}function m(n){return(t,e)=>{const o=n(t,e);return o.success?o:r(o.offset,o.expected,!0)}}const x=(n,t)=>n.length===t?e(t):r(t,["end of input"]);function g(n){const t=[];let e=n.next();for(;!e.done;)t.push(e.value),e=n.next();return[t,e.value]}n.codepoint=u,n.codepoints=function(n,t){return(o,u)=>{const c=u;for(;;){const t=o.codePointAt(u);if(void 0===t)break;if(!n(t))break;u+=t>65535?2:1}return void 0!==t&&u===c?r(u,t):e(u)}},n.collect=g,n.complete=function(n){return i(n,x,l)},n.consume=function(n){return c(n,()=>{})},n.cut=m,n.delimited=function(n,t,e,r=!1){return a(n,r?m(p(t,e)):p(t,e))},n.dispatch=function(n,t,e=0,o=[]){return(u,c)=>{const s=u.codePointAt(c+e);if(void 0===s)return r(c,o);const f=n[s];return void 0===f?void 0===t?r(c,o):t(u,c):f(u,c)}},n.end=x,n.error=r,n.except=function(n,t,e){return a(v(t,e),n)},n.filter=function(n,t,e,o){return(u,c)=>{const s=n(u,c);return s.success?t(s.value)?s:r(c,e,o):s}},n.filterUndefined=function(n){return c(n,n=>n.filter(n=>void 0!==n))},n.first=l,n.followed=p,n.map=c,n.not=v,n.ok=e,n.okWithValue=t,n.optional=function(n){return(e,r)=>{const o=n(e,r);return o.success||o.fatal?o:t(r,null)}},n.or=function(n,t){return(e,o)=>{let u=null;for(const r of n){const n=r(e,o);if(n.success)return n;if(null===u||n.offset>u.offset?u=n:n.offset===u.offset&&void 0===t&&(u.expected=u.expected.concat(n.expected)),n.fatal)return n}return t=t||(null==u?void 0:u.expected)||[],u&&(u.expected=t),u||r(o,t)}},n.peek=function(n){return(e,r)=>{const o=n(e,r);return o.success?t(r,o.value):o}},n.plus=function(n){return i(n,s(n),(n,t)=>[n].concat(t))},n.plusConsumed=function(n){return i(n,f(n),d)},n.preceded=a,n.range=function(n,t,e){return u(e=>n<=e&&e<=t,e||[`${String.fromCodePoint(n)}-${String.fromCodePoint(t)}`])},n.recognize=function(n){return(e,r)=>{const o=n(e,r);return o.success?t(o.offset,e.slice(r,o.offset)):o}},n.second=d,n.sequence=function(...n){return(e,r)=>{const o=[];for(const t of n){const n=t(e,r);if(!n.success)return n;r=n.offset,o.push(n.value)}return t(r,o)}},n.sequenceConsumed=function(...n){return(t,r)=>{for(const e of n){const n=e(t,r);if(!n.success)return n;r=n.offset}return e(r)}},n.skipChars=function(n){return(t,u)=>{let c=n;for(;c>0;){const n=t.codePointAt(u);if(void 0===n)return r(u,["any character"]);u+=o(n),c-=1}return e(u)}},n.star=s,n.starConsumed=f,n.start=(n,t)=>0===t?e(t):r(t,["start of input"]),n.streaming=function(n){return function*(t,e){const r=n(t,e);return r.success&&(yield r.value),r}},n.streamingComplete=function(n){return function*(t,e){const r=yield*n(t,e);return r.success?x(t,r.offset):r}},n.streamingFilterUndefined=function(n){return function*(t,e){const r=n(t,e);let o=r.next();for(;!o.done;){const n=o.value;void 0!==n&&(yield n),o=r.next()}return o.value}},n.streamingOptional=function(n){return function*(t,r){const[o,u]=g(n(t,r));return u.success?(yield*o,u):u.fatal?u:e(r)}},n.streamingStar=function(n){return function*(t,r){for(;;){const[o,u]=g(n(t,r));if(!u.success)return u.fatal?u:e(r);if(yield*o,r===u.offset)return e(r);r=u.offset}}},n.streamingThen=function(n,t){return function*(e,r){const o=yield*n(e,r);return o.success?yield*t(e,o.offset):o}},n.then=i,n.token=function(n){return(e,o)=>{const u=o+n.length;return e.slice(o,u)===n?t(u,n):r(o,[n])}},Object.defineProperty(n,"__esModule",{value:!0})})); //# sourceMappingURL=prsc.umd.cjs.map