UNPKG

myna-parser-mnast

Version:

Myna parser with Unist compatibility

6 lines (5 loc) 3.16 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("unist-builder"),N=require("unist-util-is");function d(t,n){let e=1,i=1;for(let l=0;l<n;l++){const s=t[l];s===` `?(e++,i=1):s==="\r"?t[l+1]===` `?(l++,e++,i=1):(e++,i=1):i++}return{line:e,column:i,offset:n}}function g(t,n,e){return{start:d(t,n),end:d(t,e)}}function b(t,n){const e=[];let i=0,l=!0;for(let s=0;s<n.start.offset;s++){const a=t[s];a===` `||a==="\r"?(a==="\r"&&t[s+1]===` `&&s++,i=0,l=!0):l&&(a===" "||a===" "?i++:(e.push(i),l=!1))}return e}const I=[],k=!0,P=!1,q="skip";function D(t,n,e,i){let l;typeof n=="function"&&typeof e!="function"?(i=e,e=n):l=n;const s=N.convert(l),a=i?-1:1;c(t,void 0,[])();function c(r,u,f){const p=r&&typeof r=="object"?r:{};if(typeof p.type=="string"){const o=typeof p.tagName=="string"?p.tagName:typeof p.name=="string"?p.name:void 0;Object.defineProperty(x,"name",{value:"node ("+(r.type+(o?"<"+o+">":""))+")"})}return x;function x(){let o=I,h,y,M;if((!n||s(r,u,f[f.length-1]||void 0))&&(o=E(e(r,f)),o[0]===P))return o;if("children"in r&&r.children){const m=r;if(m.children&&o[0]!==q)for(y=(i?m.children.length:-1)+a,M=f.concat(m);y>-1&&y<m.children.length;){const B=m.children[y];if(h=c(B,y,M)(),h[0]===P)return h;y=typeof h[1]=="number"?h[1]:y+a}}return o}}}function E(t){return Array.isArray(t)?t:typeof t=="number"?[k,t]:t==null?I:[t]}function S(t,n,e,i){let l,s,a;typeof n=="function"&&typeof e!="function"?(s=void 0,a=n,l=e):(s=n,a=e,l=i),D(t,s,c,l);function c(r,u){const f=u[u.length-1],p=f?f.children.indexOf(r):void 0;return a(r,p,f)}}function T(t){if(t){if(t.className==="AstRule"&&t.r)return T(t.r);if(t.className==="Delay"&&t.fn)return T(t.fn())}return t}function A(t,n={}){const{includePosition:e=!0,includeMynaData:i=!0,typeMapper:l,isCST:s=!1,preserveOriginalText:a=!0}=n;let c;const r=t.rule;if(l)c=l(t);else if(r!=null&&r.name)c=r.name;else{const f=T(r);f!=null&&f.type?c=f.type:t.isLeaf?c="text":c="node"}const u=C.u(c,{...e&&t.input&&typeof t.start=="number"&&typeof t.end=="number"?{position:{...g(t.input,t.start,t.end),indent:b(t.input,g(t.input,t.start,t.end))}}:{},...i?{data:{rule:t.rule,fullName:t.fullName,isCST:s,isAST:!s,...s&&a&&t.allText?{originalText:t.allText}:{}}}:{}});return t.isLeaf&&t.allText&&(u.value=t.allText),t.children&&t.children.length>0&&(u.children=t.children.map(f=>A(f,n))),u}function j(t){var i,l,s,a,c;const n=((i=t.data)==null?void 0:i.isCST)??!1,e={rule:((l=t.data)==null?void 0:l.rule)||{name:t.type},input:t.position?t.position.start.offset.toString():"",start:((s=t.position)==null?void 0:s.start.offset)||0,end:((a=t.position)==null?void 0:a.end.offset)||0,children:t.children?t.children.map(j):null};return t.value?e.allText=t.value:n&&((c=t.data)!=null&&c.originalText)&&(e.allText=t.data.originalText),t.data&&Object.assign(e,t.data),e}function L(t,n){S(t,n)}function O(t,n){return N.is(t,n)}function U(t,n){const e=[];return S(t,i=>{N.is(i,n)&&e.push(i)}),e}exports.calculateIndent=b;exports.calculateNodePosition=g;exports.calculatePosition=d;exports.fromMnast=j;exports.getMnastNodesByType=U;exports.isMnastNode=O;exports.toMnast=A;exports.visitMnast=L;