UNPKG

hitext

Version:

Text decoration done right

2 lines (1 loc) 4.33 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).hitext=t()}(this,(function(){"use strict";var e={newLineLength:function(e,t){switch(e.charCodeAt(t)){default:return 0;case 10:return 1;case 13:return t+1<e.length&&10===e.charCodeAt(t+1)?2:1}}};const{newLineLength:t}=e;const{newLineLength:n}=e;const{newLineLength:r}=e;var o={lines:(e,n)=>{let r=1,o=0;for(let s=0;s<e.length;s++){const i=t(e,s);0!==i&&(n(o,s+i,r++),o=s+i,s+=i-1)}n(o,e.length,r++)},lineContents:(e,t)=>{let r=1,o=0;for(let s=0;s<e.length;s++){const i=n(e,s);0!==i&&(t(o,s,r++),o=s+i,s+=i-1)}t(o,e.length,r++)},matches:function(e){if(e instanceof RegExp){const t=-1!==e.flags.indexOf("g")?e.flags:e.flags+"g",n=new RegExp(e,t);return function(e,t){let r;for(;r=n.exec(e);)t(r.index,r.index+r[0].length)}}return e=String(e),function(t,n){let r=-1;for(;r=t.indexOf(e,r+1),-1!==r;)n(r,r+e.length)}},newlines:(e,t)=>{let n=1;for(let o=0;o<e.length;o++){const s=r(e,o);0!==s&&(t(o,o+s,n++),o+=s-1)}}},s="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function i(e){return c.call(null,e)}function c(e){const t=this===s?{}:this||{},n={};return Object.assign(n,t,e,{fork:c.bind(n),ranges:Object.assign({},t.ranges,e&&e.ranges)}),"function"!=typeof n.createHook&&(n.createHook=e=>e()),n}var f={createPrinter:i,forkPrinter:c,forkPrinterSet:function e(t){const n=Object.assign({},this);for(let e in t){const r=t[e];if(r&&"object"==typeof r)if(hasOwnProperty.call(n,e)){const r=n[e];n[e]=r&&"function"==typeof r.fork?r.fork(t[e]):r}else n[e]=i(t[e])}return n.fork=e.bind(n),n}},a=f.createPrinter();const{createPrinter:l}=f;var g=l({print:e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")});const{forkPrinterSet:u}=f;var p=u.call({},{noop:a,html:g,tty:a}),d=function(e,t){const n=[];return t.forEach(({generate:t,marker:r})=>t(e,(e,t,o)=>n.push({type:r,start:e,end:t,data:o}))),n};const h=()=>"",y=function(){};function b(e,t){return"function"==typeof e?e:t||y}function O(e,t,n){const r=(r,o)=>{const s=t[o||n]||p.noop;return function(e,t,n){const r=b(n.print,e=>e),o=Object.assign(Object.defineProperties(Object.create(null),{offset:{get:()=>l},line:{get:()=>g},column:{get:()=>u},start:{get:()=>i.start},end:{get:()=>i.end},data:{get:()=>i.data}}),b(n.createContext)()),s=[];let i={start:0,end:e.length},c=n.ranges||{},f=[],a=1/0,l=0,g=1,u=1,p="";p+=b(n.open,h)(o),c=[].concat(Object.getOwnPropertyNames(c),Object.getOwnPropertySymbols(c)).reduce((e,t)=>{let o=c[t];return"function"==typeof o&&(c[t]=o=n.createHook(o)),o&&(f.push(t),e[t]={open:b(o.open,h),close:b(o.close,h),print:b(o.print,r)}),e},{}),t=t.slice().sort((e,t)=>e.start-t.start||t.end-e.end||f.indexOf(e.type)-f.indexOf(t.type));const d=e=>c[(i=s[e]).type].close(o)||"",y=t=>{if(l!==t){const n=e.substring(l,t),i=s.length?c[s[s.length-1].type].print:r;for(let n=l;n<t;n++){const t=e.charCodeAt(n);10===t||13===t&&(n>=e.length||10!==e.charCodeAt(n+1))?(g++,u=1):u++}p+=i(n,o),l=t}},O=e=>{for(;a<=e;){y(a);for(let e=s.length-1;e>=0&&s[e].end===a;e--)p+=d(e),s.pop();a=1/0;for(let e=0;e<s.length;e++)s[e].end<a&&(a=s[e].end)}};for(let e=0;e<t.length;e++){const n=t[e];let r=0;if(!1!==c.hasOwnProperty(n.type)&&(!(n.start>n.end)&&Number.isFinite(n.start)&&Number.isFinite(n.end))){for(O(n.start),y(n.start),r=0;r<s.length;r++)if(s[r].end<n.end){for(let e=s.length-1;e>=r;e--)p+=d(e);break}for(s.splice(r,0,n);r<s.length;r++)p+=c[(i=s[r]).type].open(o)||"";n.end<a&&(a=n.end)}}O(e.length),y(e.length);for(let e=s.length-1;e>=0;e--)p+=d(e);return p+=b(n.close,h)(o)||"",p}(r,d(r,e),s)};return Object.assign(r,{print:r,generateRanges:t=>d(t,e),use(o,s){const i=Symbol(o.name),c=o.ranges||o,f=Array.isArray(c)?(e,t)=>c.forEach(e=>t(...e)):c;return"function"!=typeof f?r:(s||(s=o.printer),s?O(e.concat(function(e,t){return{marker:e,generate:t}}(i,f)),t.fork(function(e,t){const n={};for(let r in t)n[r]={ranges:{[e]:t[r]}};return n}(i,s)),n):r)},printer:n=>O(e,t,n)})}function m(e,t,n){let r=O([],n||p,t);return Array.isArray(e)&&(r=e.reduce((e,t)=>Array.isArray(t)?e.use(...t):e.use(t),r)),r}return Object.assign(m,{gen:o,printer:Object.assign((...e)=>m().printer(...e),p),use:(...e)=>m().use(...e)})}));