"use strict";import{createScanner}from"./scanner";import{cachedSpaces,cachedBreakLinesWithSpaces,supportedEols}from"./string-intern";export function format(e,t,n){let c,s,a,r,i;if(t){for(r=t.offset,i=r+t.length,a=r;a>0&&!isEOL(e,a-1);)a--;let p=i;for(;p1)return repeat(p,h)+repeat(f,c+l);const e=f.length*(c+l);return!o||e>cachedBreakLinesWithSpaces[k][p].length?p+repeat(f,c+l):e<=0?p:cachedBreakLinesWithSpaces[k][p][e]}function S(){let e=L.scan();for(h=0;15===e||14===e;)14===e&&n.keepLines?h+=1:14===e&&(h=1),e=L.scan();return u=16===e||0!==L.getTokenError(),e}const d=[];function b(n,c,s){u||t&&!(cr)||e.substring(c,s)===n||d.push({offset:c,length:s-c,content:n})}let O=S();if(n.keepLines&&h>0&&b(repeat(p,h),0,0),17!==O){let e=L.getTokenOffset()+a;b(f.length*c<20&&n.insertSpaces?cachedSpaces[f.length*c]:repeat(f,c),a,e)}for(;17!==O;){let e=L.getTokenOffset()+L.getTokenLength()+a,t=S(),c="",s=!1;for(;0===h&&(12===t||13===t);){let n=L.getTokenOffset()+a;b(cachedSpaces[1],e,n),e=L.getTokenOffset()+L.getTokenLength()+a,s=12===t,c=s?g():"",t=S()}if(2===t)1!==O&&l--,n.keepLines&&h>0||!n.keepLines&&1!==O?c=g():n.keepLines&&(c=cachedSpaces[1]);else if(4===t)3!==O&&l--,n.keepLines&&h>0||!n.keepLines&&3!==O?c=g():n.keepLines&&(c=cachedSpaces[1]);else{switch(O){case 3:case 1:l++,c=n.keepLines&&h>0||!n.keepLines?g():cachedSpaces[1];break;case 5:c=n.keepLines&&h>0||!n.keepLines?g():cachedSpaces[1];break;case 12:c=g();break;case 13:h>0?c=g():s||(c=cachedSpaces[1]);break;case 6:n.keepLines&&h>0?c=g():s||(c=cachedSpaces[1]);break;case 10:n.keepLines&&h>0?c=g():6!==t||s||(c="");break;case 7:case 8:case 9:case 11:case 2:case 4:n.keepLines&&h>0?c=g():12!==t&&13!==t||s?5!==t&&17!==t&&(u=!0):c=cachedSpaces[1];break;case 16:u=!0}h>0&&(12===t||13===t)&&(c=g())}17===t&&(c=n.keepLines&&h>0?g():n.insertFinalNewline?p:""),b(c,e,L.getTokenOffset()+a),O=t}return d}function repeat(e,t){let n="";for(let c=0;c