typopo
Version:
Fix frequent microtypography errors in multiple languages. Write neat texts without bothering about typography rules. Typopo works for English, German, Slovak, Czech and Rusyn language.
10 lines (9 loc) • 29.9 kB
JavaScript
/*!
* Typopo v3.0.0 (https://typopo.org)
* Copyright 2015–2026 Braňo Šandala (https://brano.me)
* Licensed under MIT (https://github.com/surfinzap/typopo/blob/main/LICENSE.txt)
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v="‚|'|‘|’|ʼ|‛|´|`|′|‹|›",W="’",k="′",q="`",N="„|“|”|\"|«|»|″|,{2,}|‚{2,}|[‘’ʼ'‹›′´`]{2,}",I="″",S=" ",E=" ",w=" ",A=" ",C=S+E+w+A,R="\\.!?",Q=",:;",z=Q+R,U="\\(\\[\\{",O="\\)\\]\\}",M="…",T="-",j="–",Z="—",_="/",X="°",F="×",H="&",G="§",V="¶",Y="©",J="℗",K="®",ee="℠",ne="™",pe="+",oe="−",se="±",ae="%",te="‰",re="‱",ce="#",ue="№",ie="IVXLCDM",n={singleQuoteAdepts:v,apostrophe:W,singlePrime:k,backtick:q,doubleQuoteAdepts:N,doublePrime:I,space:S,nbsp:E,hairSpace:w,narrowNbsp:A,spaces:C,terminalPunctuation:R,sentencePausePunctuation:Q,sentencePunctuation:z,openingBrackets:U,closingBrackets:O,ellipsis:M,hyphen:T,enDash:j,emDash:Z,slash:_,degree:X,multiplicationSign:F,ampersand:H,sectionSign:G,paragraphSign:V,copyright:Y,soundRecordingCopyright:J,registeredTrademark:K,serviceMark:ee,trademark:ne,plus:pe,minus:oe,plusMinus:se,percent:ae,permille:te,permyriad:re,numberSign:ce,numeroSign:ue,romanNumerals:ie,urlPattern:"((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?((?:(?:[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}\\.)+(?:(?:aero|arpa|asia|agency|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|cloud|com|company|coop|c[acdfghiklmnoruvxyz])|(?:dev|d[ejkmoz])|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|guide|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnrwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om|one)|(?:pro|p[aefghklmnrstwy])|qa|r[eouw]|(?:shop|store|s[abcdeghijklmnortuvyz])|(?:tel|travel|team|t[cdfghjklmnoprtvwz])|u[agkmsyz]|v[aceginu]|(?:work|w[fs])|(?:xyz)|y[etu]|z[amw]))|(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\\:\\d{1,5})?)(\\/(?:(?:[a-zA-Z0-9\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)",emailPattern:"[a-zA-Z0-9\\+\\.\\_\\%\\-]{1,256}\\@[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}(\\.[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25})+",filenamePattern:"\\b[a-zA-Z0-9_%\\-]+\\.(ai|asm|bat|bmp|c|cpp|cs|css|csv|dart|doc|docx|exe|gif|go|html|ics|java|jpeg|jpg|js|json|key|kt|less|lua|log|md|mp4|odp|ods|odt|pdf|php|pl|png|ppt|pptx|psd|py|r|rar|rb|rs|scala|scss|sh|svg|sql|swift|tar.gz|tar|tex|tiff|ts|txt|vbs|xml|xls|xlsx|yaml|yml|zip)\\b"},$e={quotes:{openingDoubleQuote:"„",closingDoubleQuote:"“",openingSingleQuote:"‚",closingSingleQuote:"‘"},directSpeechIntro:":",dashWords:{spaceBefore:n.nbsp,dash:n.enDash,spaceAfter:n.space},spaceAfter:{copyright:n.space,soundRecordingCopyright:n.space,numeroSign:n.nbsp,sectionSign:n.nbsp,paragraphSign:n.nbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.nbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["č","fol","např","odst","par","r","s","str","sv","tj","tzv"],multipleWordAbbreviations:["hl m","n l","p n l","př n l"]},de={quotes:{openingDoubleQuote:"“",closingDoubleQuote:"”",openingSingleQuote:"‘",closingSingleQuote:"’"},directSpeechIntro:",",dashWords:{spaceBefore:"",dash:n.emDash,spaceAfter:""},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.nbsp,paragraphSign:n.nbsp,abbreviation:""},spaceBefore:{percent:""},numbers:{ordinalIndicator:"st|nd|rd|th",romanOrdinalIndicator:""},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["p","pp","no","vol"],multipleWordAbbreviations:["U S","e g","i e","a m","p m"]},le={quotes:{openingDoubleQuote:"«",closingDoubleQuote:"»",openingSingleQuote:"‹",closingSingleQuote:"›"},directSpeechIntro:":",dashWords:{spaceBefore:n.hairSpace,dash:n.emDash,spaceAfter:n.hairSpace},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.narrowNbsp,paragraphSign:n.narrowNbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.nbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["ціт","ст","канц","абз","тзв","Зб","ч","напр"],multipleWordAbbreviations:["т зн","Е Ч","евід ч","род ч","т ч","т д"]},fe={quotes:{openingDoubleQuote:"„",closingDoubleQuote:"“",openingSingleQuote:"‚",closingSingleQuote:"‘"},directSpeechIntro:":",dashWords:{spaceBefore:n.hairSpace,dash:n.emDash,spaceAfter:n.hairSpace},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.narrowNbsp,paragraphSign:n.narrowNbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.nbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["č","cit","čl","fol","napr","odst","par","r","roč","s","str","sv","tzv","vyd"],multipleWordAbbreviations:["hl m","n l","p n l","pr n l","s a","s l","t č","t j","zodp red"]},be={quotes:{openingDoubleQuote:"„",closingDoubleQuote:"“",openingSingleQuote:"‚",closingSingleQuote:"‘"},directSpeechIntro:":",dashWords:{spaceBefore:n.hairSpace,dash:n.enDash,spaceAfter:n.hairSpace},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.nbsp,paragraphSign:n.nbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.narrowNbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.space},singleWordAbbreviations:["Bhf","ca","Di","Do","Fr","geb","gest","Hbf","Mi","Mo","Nr","S","Sa","So","St","Stk","u","usw","z"],multipleWordAbbreviations:["b w","d h","d i","e V","Ges m b H","n Chr","n u Z","s a","s o","s u","u a m","u a","u ä","u Ä","u dgl","u U","u z","u zw","v a","v Chr","v u Z","z B","z T","z Zt"]},$={cs:$e,"en-us":de,rue:le,sk:fe,"de-de":be},g="en-us";class me{constructor(p){$[p]||(console.warn(`Locale '${p}' not found, falling back to '${g}'`),p=g),this.ID=p,this.openingSingleQuote=$[p].quotes.openingSingleQuote,this.closingSingleQuote=$[p].quotes.closingSingleQuote,this.openingDoubleQuote=$[p].quotes.openingDoubleQuote,this.closingDoubleQuote=$[p].quotes.closingDoubleQuote,this.terminalQuotes=this.closingSingleQuote+this.closingDoubleQuote,this.directSpeechIntro=$[p].directSpeechIntro,this.dashWords=$[p].dashWords,this.spaceAfter=$[p].spaceAfter,this.spaceBefore=$[p].spaceBefore,this.ordinalIndicator=$[p].numbers.ordinalIndicator,this.romanOrdinalIndicator=$[p].numbers.romanOrdinalIndicator,this.ordinalDate=$[p].ordinalDate,this.singleWordAbbreviations=[];for(const s in $)this.singleWordAbbreviations=this.singleWordAbbreviations.concat($[s].singleWordAbbreviations);this.multipleWordAbbreviations=[];for(const s in $)this.multipleWordAbbreviations=this.multipleWordAbbreviations.concat($[s].multipleWordAbbreviations);const o=[];for(const s in $){const r=$[s].directSpeechIntro;r&&!o.includes(r)&&o.push(r)}this.directSpeechIntroAdepts=o.join("")}}function he(e){return e.replace(/[\n\r]{2,}/gm,`
`)}function b(e,p,o){let r=0,t=e,c="";for(;t!==c&&r<50;)c=t,t=t.replace(p,o),r++;return t}function ge(e){return b(e,new RegExp(`([\\p{L}]{2,})([${n.nbsp}${n.narrowNbsp}])([\\p{L}]{2,})`,"gu"),"$1 $3")}function D(e,p){return e=b(e,new RegExp(`(^|[${n.space}]|[^\\p{L}\\d${n.apostrophe}${n.plus}${n.minus}${n.hyphen}])([\\p{Ll}])([${n.space}])`,"gu"),`$1$2${n.nbsp}`),e=e.replace(new RegExp(`(^|[${n.sentencePunctuation}${n.ellipsis}${n.copyright}${n.registeredTrademark}${n.soundRecordingCopyright}])([${n.spaces}]?)([\\p{Lu}])([${n.spaces}])`,"gu"),`$1$2$3${n.nbsp}`),p.ID=="en-us"&&(e=e.replace(new RegExp(`(^|[${n.spaces}])(I)([${n.spaces}])`,"g"),`$1$2${n.nbsp}`)),e}function xe(e){return e.replace(new RegExp(`([${n.spaces}])(${n.ampersand})([${n.spaces}])`,"g"),` $2${n.nbsp}`)}function Se(e){return e.replace(new RegExp(`([^${n.nbsp}\\d]|^)(\\d{1,2})([${n.spaces}])([\\p{L}])`,"gu"),`$1$2${n.nbsp}$4`)}function Ee(e,p){return e.replace(new RegExp(`([^${n.nbsp}\\d_%\\-]|^)(\\d{1,2})(${p.ordinalIndicator})([${n.spaces}]?)([\\p{L}])`,"gu"),`$1$2$3${n.nbsp}$5`)}function we(e,p){return e.replace(new RegExp(`(\\d{1,2})(\\.)([${n.spaces}]?)(\\d{1,2})(\\.)([${n.spaces}]?)(\\d{4})`,"g"),`$1$2${p.ordinalDate.firstSpace}$4$5${p.ordinalDate.secondSpace}$7`)}function Ae(e,p){return p.romanOrdinalIndicator!=""?e.replace(new RegExp(`(\\b[\\p{Lu}][\\p{L}]?${p.romanOrdinalIndicator}[${n.spaces}]?)?(\\b)([${n.romanNumerals}]+)(${p.romanOrdinalIndicator})([${n.spaces}]?)([\\p{L}\\d])`,"gu"),function(o,s,r,t,c,u,i){return s?o:`${r}${t}${c}${n.nbsp}${i}`}):e}function Re(e,p){let o=`(\\b[\\p{Lu}][\\p{Ll}]+?)([${n.spaces}])([${n.romanNumerals}]+\\b)(${p.romanOrdinalIndicator})([${n.nbsp}]?)`,s=new RegExp(o,"gu");return e.replace(s,function(r,t,c,u,i,d){return d==""&&u=="I"?t+n.space+u+i:d==""&&u!="I"?t+n.nbsp+u+i:d==n.nbsp&&u=="I"?t+n.space+u+i+d:t+n.nbsp+u+i+n.space})}function Qe(e,p){return e.replace(new RegExp(`(\\d)([${n.spaces}])([${n.percent}${n.permille}${n.permyriad}])`,"gu"),`$1${p.spaceBefore.percent}$3`)}function De(e,p){let o=`([^${n.sentencePunctuation}${n.ellipsis}${n.closingBrackets}${p.closingDoubleQuote}${p.closingSingleQuote}${n.apostrophe}${n.multiplicationSign}${n.emDash}${n.enDash}])([${n.spaces}])([\\p{Lu}])([${n.spaces}]|\\.$|$)`,s=new RegExp(o,"gu");return e.replace(s,function(r,t,c,u,i){return p.ID==="en-us"&&u==="I"?r:p.ID==="en-us"?t+n.nbsp+u+i:u==="I"&&i&&n.spaces.includes(i)?t+n.nbsp+u+n.space:t+n.nbsp+u+i})}function Pe(e,p,o){return o=o!==void 0?o:n.nbsp,e.replace(new RegExp(`(${p})([^${n.spaces}${p}])`,"g"),`$1${o}$2`)}function ye(e,p,o){return o=o!==void 0?o:n.nbsp,e.replace(new RegExp(`(${p})([${n.spaces}]+)`,"g"),`$1${o}`)}function Be(e,p){return e=ge(e),e=D(e,p),e=xe(e),e=Se(e),e=Ee(e,p),e=we(e,p),e=Ae(e,p),e=De(e,p),e=Re(e,p),e=Qe(e,p),e}function Le(e){return e.replace(new RegExp(`(\\S)([${n.spaces}]{2,})(\\S)`,"g"),"$1 $3")}function ve(e){return e.split(/\r?\n/).map(p=>p.replace(/^\s+/,"")).join(`
`)}function We(e){return e.split(/\r?\n/).map(p=>p.replace(/\s+$/,"")).join(`
`)}function ke(e){return e.replace(new RegExp(`([${n.spaces}])([${n.sentencePausePunctuation}])([^\\-\\)]|$)`,"g"),"$2$3")}function qe(e){return e.replace(new RegExp(`([^${n.openingBrackets}])([${n.spaces}])([${n.terminalPunctuation}${n.closingBrackets}${n.degree}])`,"g"),"$1$3")}function Ne(e,p){return e.replace(new RegExp(`(\\d)([${n.spaces}]?)(${p.ordinalIndicator})([${n.spaces}]|\\b)`,"g"),"$1$3$4")}function Ie(e){return e.replace(new RegExp(`([${n.openingBrackets}])([${n.spaces}])([^${n.closingBrackets}])`,"g"),"$1$3")}function Ce(e){return e.replace(new RegExp(`([\\p{L}])([${n.openingBrackets}])([\\p{L}${n.ellipsis}])([\\p{L}${n.ellipsis}${n.closingBrackets}])`,"gu"),function(p,o,s,r,t){return r=="s"|r=="S"|r+t=="es"|r+t=="ES"?`${o}${s}${r}${t}`:`${o}${n.space}${s}${r}${t}`})}function ze(e){return e.replace(new RegExp(`([\\p{L}]{2,}|[${n.ellipsis}])([${n.terminalPunctuation}])([\\p{Lu}])`,"gu"),"$1$2 $3")}function Ue(e){return e.replace(new RegExp(`([\\p{L}]{2,}|[${n.ellipsis}])([${n.sentencePausePunctuation}])([\\p{L}])`,"gu"),"$1$2 $3")}function Oe(e){return e.replace(new RegExp(`([${n.closingBrackets}])([\\p{L}])`,"gu"),"$1 $2")}function Me(e,p){return e.replace(new RegExp(`([^${n.spaces}${n.openingBrackets}${p}])(${p})`,"g"),`$1${n.space}$2`)}function Te(e,p){return e=Le(e),e=ve(e),e=We(e),e=ke(e),e=qe(e),e=Ne(e,p),e=Ie(e),e=Ce(e),e=ze(e),e=Oe(e),e=Ue(e),e}function je(e){return e.replace(new RegExp("\\.{2}(?![\\\\/])","g"),".")}function Ze(e){return je(e)}function _e(e){return e.replace(new RegExp(`[${n.ellipsis}\\.]{3,}`,"g"),n.ellipsis)}function Xe(e){return e.replace(new RegExp(`\\.${n.ellipsis}|${n.ellipsis}{2,}|${n.ellipsis}\\.`,"g"),n.ellipsis)}function Fe(e){return e.replace(new RegExp(`[${n.spaces}]\\.{2}[${n.spaces}]`,"g"),`${n.space}${n.ellipsis}${n.space}`)}function He(e){return e.replace(new RegExp(`(,)([${n.spaces}]?)(${n.ellipsis})([${n.spaces}]?)(,)`,"g"),`$1 ${n.ellipsis}$5`)}function Ge(e){return e.replace(new RegExp(`(,)([${n.spaces}]?)(${n.ellipsis})([${n.spaces}]?)(\\B|[${n.closingBrackets}])([^,]|$)`,"g"),"$1$3$5$6")}function Ve(e){return e.replace(new RegExp(`(^${n.ellipsis})([${n.spaces}])([\\p{L}])`,"gmu"),"$1$3")}function Ye(e,p){return e.replace(new RegExp(`([^${p.terminalQuotes}])([${n.sentencePunctuation}])([${n.spaces}]?)([${n.ellipsis}])([${n.spaces}]?)([\\p{Ll}])`,"gu"),"$1$2 $4$6")}function Je(e){return e.replace(new RegExp(`([\\p{Ll}])([${n.spaces}])([${n.ellipsis}])([${n.spaces}]?)([\\p{Lu}])`,"gu"),"$1$3 $5")}function Ke(e){return e.replace(new RegExp(`([\\p{L}])([${n.ellipsis}])([\\p{L}])`,"gu"),"$1$2 $3")}function en(e,p){return e.replace(new RegExp(`([${n.sentencePunctuation}${p.terminalQuotes}])([${n.spaces}]?)(${n.ellipsis})([${n.spaces}]?)([\\p{Lu}])`,"gu"),"$1 $3 $5")}function nn(e,p){return e.replace(new RegExp(`([\\p{Ll}])([${n.spaces}])+([${n.ellipsis}][${p.closingDoubleQuote}${p.closingSingleQuote}]?$)`,"gmu"),"$1$3")}function pn(e,p){return e=_e(e),e=He(e),e=Ge(e),e=Ve(e),e=Ye(e,p),e=Je(e),e=Ke(e),e=en(e,p),e=nn(e,p),e=Xe(e),e=Fe(e),e}const a={apos:"",singlePrime:"",doublePrime:"",osq:"",csq:"",osqUnpaired:"",csqUnpaired:"",odq:"",cdq:"",odqUnpaired:"",cdqUnpaired:"",enDash:""},P=57856,y=63743,on=y-P+1;function B(e){const p=P+e;if(p>y)throw new Error(`Exception index ${e} exceeds PUA limit (max ${on}). Text contains too many exceptions (emails/URLs/filenames). Consider processing the text in smaller chunks.`);return String.fromCharCode(p)}function sn(e,p){return e.replace(new RegExp(`([\\p{L}\\d])([${n.spaces}]*[${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*|[${n.spaces}]+[${n.hyphen}]{1,3}[${n.spaces}]+)([\\p{L}\\d])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$3`)}function an(e,p){return e.replace(new RegExp(`([\\p{L}])([${n.spaces}]?)([${n.hyphen}${n.enDash}${n.emDash}]{1,3})([${n.spaces}]?)([${n.sentencePunctuation}\\n\\r])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}$5`)}function tn(e,p){return e=e.replace(new RegExp(`([${n.openingBrackets}])[${n.spaces}]*([${n.hyphen}${n.enDash}${n.emDash}]+)[${n.spaces}]*([${n.closingBrackets}])`,"gu"),"$1$2$3"),e=e.replace(new RegExp(`([\\p{L}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([${n.openingBrackets}])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.closingBrackets}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([\\p{L}])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([\\p{L}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([${n.closingBrackets}])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.openingBrackets}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([\\p{L}])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.closingBrackets}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]*([${n.openingBrackets}])`,"gu"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e}function rn(e){return e=b(e,new RegExp(`(\\d)([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]?)(\\d)`,"gu"),`$1${a.enDash}$3`),e.replace(new RegExp(`${a.enDash}`,"g"),n.enDash)}function cn(e){return e.replace(new RegExp(`([${n.percent}${n.permille}${n.permyriad}])([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]?)(\\d)`,"gu"),`$1${n.enDash}$3`)}function un(e,p){return e.replace(new RegExp(`(\\d)(${p.ordinalIndicator})([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]?)(\\d)(${p.ordinalIndicator})`,"giu"),`$1$2${n.enDash}$4$5`)}function $n(e,p){return e=sn(e,p),e=an(e,p),e=tn(e,p),e=rn(e),e=cn(e),e=un(e,p),e}function dn(e){return e.replace(new RegExp(`([^${n.romanNumerals}])([${n.sentencePunctuation}])([${n.sentencePausePunctuation}])(${n.doubleQuoteAdepts})`,"g"),"$1$2$4")}function ln(e){return e.replace(new RegExp(`([^${n.romanNumerals}])([${n.sentencePunctuation}])(${n.doubleQuoteAdepts})([${n.sentencePunctuation}])`,"g"),"$1$2$3")}function fn(e){return e=e.replace(new RegExp(`([^0-9]|^)(${n.doubleQuoteAdepts})(.+?)(\\d+)(${n.doubleQuoteAdepts})([${n.terminalPunctuation}${n.ellipsis}])`,"g"),"$1$2$3$4$6$5"),e=e.replace(new RegExp(`(\\b\\d{1,3})([${n.spaces}]?)(${n.doubleQuoteAdepts})([^\\p{L}]|\\B)`,"gu"),`$1$2${a.doublePrime}$4`),e}function bn(e){return e=e.replace(new RegExp(`(${n.doubleQuoteAdepts})(\\d+)(${a.doublePrime})`,"g"),`${a.odq}$2${a.cdq}`),e=e.replace(new RegExp(`(${n.doubleQuoteAdepts})(.*?)(${n.doubleQuoteAdepts})`,"g"),`${a.odq}$2${a.cdq}`),e}function mn(e){return e.replace(new RegExp(`(${n.doubleQuoteAdepts})([0-9\\p{L}])`,"gu"),`${a.odqUnpaired}$2`)}function hn(e){return e.replace(new RegExp(`([\\p{L}${n.sentencePunctuation}${n.ellipsis}])(${n.doubleQuoteAdepts})`,"gu"),`$1${a.cdqUnpaired}`)}function gn(e){return e.replace(new RegExp(`([${n.spaces}])(${n.doubleQuoteAdepts})([${n.spaces}])`,"gu"),"$1")}function xn(e){return e.replace(new RegExp(`(${a.odqUnpaired})(.*?)(${a.doublePrime})`,"g"),`${a.odq}$2${a.cdq}`).replace(new RegExp(`(${a.doublePrime})(.*?)(${a.cdqUnpaired})`,"g"),`${a.odq}$2${a.cdq}`)}function Sn(e,p){return e.replace(new RegExp(`(${p.openingDoubleQuote})([^${n.spaces}${p.closingDoubleQuote}]+?)([^${n.romanNumerals}${n.sentencePunctuation}])([${n.sentencePunctuation}]{1,})(${p.closingDoubleQuote})`,"g"),(o,s,r,t,c,u)=>c.length===1&&/[.,;:]/.test(c)?s+r+t+u+c:o)}function En(e,p){return e=e.replace(new RegExp(`(${p.openingDoubleQuote})(.+)([${n.spaces}])(?!${p.openingDoubleQuote})([^${n.romanNumerals}]{2,})(${p.closingDoubleQuote})([${n.sentencePunctuation}${n.ellipsis}])`,"g"),"$1$2$3$4$6$5"),e=e.replace(new RegExp(`([:;])(${p.closingDoubleQuote})`,"g"),"$2$1"),e}function wn(e,p){return[{pattern:a.doublePrime,replacement:n.doublePrime},{pattern:`[${a.odq}${a.odqUnpaired}]`,replacement:p.openingDoubleQuote},{pattern:`[${a.cdq}${a.cdqUnpaired}]`,replacement:p.closingDoubleQuote}].reduce((s,{pattern:r,replacement:t})=>s.replace(new RegExp(r,"gu"),t),e)}function An(e,p){return e=e.replace(new RegExp(`(${p.openingDoubleQuote})([${n.spaces}])`,"g"),"$1"),e=e.replace(new RegExp(`([${n.spaces}])(${p.closingDoubleQuote})`,"g"),"$2"),e=e.replace(new RegExp(`([${n.spaces}])(${n.doublePrime})`,"g"),"$2"),e}function Rn(e,p){return e=e.replace(new RegExp(`([${n.sentencePunctuation}\\p{L}])([${p.openingDoubleQuote}])`,"gu"),"$1 $2"),e=D(e,p),e}function Qn(e,p){return e.replace(new RegExp(`([${p.closingDoubleQuote}])([\\p{L}])`,"gu"),"$1 $2")}function Dn(e,p){const o=`${n.hyphen}${n.enDash}${n.emDash}`;return e=e.replace(new RegExp(`([\\p{L}])[${p.directSpeechIntroAdepts}]?[${n.spaces}]*[${o}][${n.spaces}]*([${p.openingDoubleQuote}].+?[${p.closingDoubleQuote}])`,"gu"),`$1${p.directSpeechIntro} $2`),e=e.replace(new RegExp(`([\\p{L}])[${p.directSpeechIntroAdepts}][${n.spaces}]*([${p.openingDoubleQuote}].+?[${p.closingDoubleQuote}])`,"gu"),`$1${p.directSpeechIntro} $2`),e=e.replace(new RegExp(`([${p.openingDoubleQuote}].+?[${p.closingDoubleQuote}])[${n.spaces}]*[${o}][${n.spaces}]*([\\p{L}])`,"gu"),"$1 $2"),e=e.replace(new RegExp(`^[${n.spaces}]*[${o}][${n.spaces}]*([${p.openingDoubleQuote}].+?[${p.closingDoubleQuote}])`,"g"),"$1"),e=e.replace(new RegExp(`([${n.terminalPunctuation}${n.ellipsis}])[${n.spaces}]+[${o}][${n.spaces}]*([${p.openingDoubleQuote}].+?[${p.closingDoubleQuote}])`,"g"),"$1 $2"),e}function Pn(e,p){return e=dn(e),e=ln(e),e=fn(e),e=bn(e),e=mn(e),e=hn(e),e=gn(e),e=xn(e),e=wn(e,p),e=An(e,p),e=Rn(e,p),e=Qn(e,p),e=Dn(e,p),e=Sn(e,p),e=En(e,p),e}function yn(e){return[["dead","buried"],["drill","bass"],["drum","bass"],["rock","roll"],["pick","mix"],["fish","chips"],["salt","shake"],["mac","cheese"],["pork","beans"],["drag","drop"],["rake","scrape"],["hook","kill"]].forEach(o=>{e=e.replace(new RegExp(`(${o[0]})([${n.spaces}]?)(${n.singleQuoteAdepts})(n)(${n.singleQuoteAdepts})([${n.spaces}]?)(${o[1]})`,"gi"),`$1${n.nbsp}${a.apos}$4${a.apos}${n.nbsp}$7`)}),e}function Bn(e){let p="cause|em|mid|midst|mongst|prentice|round|sblood|ssdeath|sfoot|sheart|shun|slid|slife|slight|snails|strewth|til|tis|twas|tween|twere|twill|twixt|twould";return e.replace(new RegExp(`(${n.singleQuoteAdepts})(${p})`,"gi"),`${a.apos}$2`)}function Ln(e){return e.replace(new RegExp(`(\\Bin)(${n.singleQuoteAdepts})`,"gi"),`$1${a.apos}`)}function vn(e){return e.replace(new RegExp(`([\\d\\p{L}])(${n.singleQuoteAdepts})+([\\p{L}])`,"gu"),`$1${a.apos}$3`)}function Wn(e){return e.replace(new RegExp(`([^0-9]|[A-Z][0-9])([${n.spaces}])(${n.singleQuoteAdepts})([\\d]{2})`,"gu"),`$1$2${a.apos}$4`)}function kn(e){return e.replace(/(\d)( ?)('|‘|’|‛|′)/g,`$1$2${a.singlePrime}`)}function qn(e){return e.replace(new RegExp(`(^|[${n.spaces}${n.emDash}${n.enDash}])(${n.singleQuoteAdepts}|,)([\\p{L}${n.ellipsis}${n.openingBrackets}\\{])`,"gu"),`$1${a.osqUnpaired}$3`)}function Nn(e){return e.replace(new RegExp(`([\\p{L}\\d${n.closingBrackets}])([${n.sentencePunctuation}${n.ellipsis}])?(${n.singleQuoteAdepts})([ ${n.sentencePunctuation}])?`,"gu"),`$1$2${a.csqUnpaired}$4`)}function In(e){return e.replace(new RegExp(`(${n.doubleQuoteAdepts})(.*?)(${n.doubleQuoteAdepts})`,"gu"),function(p,o,s,r){return s=qn(s),s=Nn(s),s=Cn(s),o+s+r})}function Cn(e){return e.replace(new RegExp(`(${a.osqUnpaired})(.*)(${a.csqUnpaired})`,"gu"),`${a.osq}$2${a.csq}`)}function zn(e){return e.replace(new RegExp(`(\\B)(${n.singleQuoteAdepts})([\\p{L}]+)(${n.singleQuoteAdepts})(\\B)`,"gu"),`$1${a.osq}$3${a.csq}$5`)}function Un(e){return e.replace(new RegExp(`(${n.singleQuoteAdepts})`,"g"),`${a.apos}`)}function On(e){return e=e.replace(new RegExp(`(${a.osqUnpaired})(.*?)(${a.singlePrime})`,"g"),`${a.osq}$2${a.csq}`),e=e.replace(new RegExp(`(${a.singlePrime})(.*?)(${a.csqUnpaired})`,"g"),`${a.osq}$2${a.csq}`),e}function Mn(e,p){return e.replace(new RegExp(`(${p.openingSingleQuote})([^${n.spaces}${p.closingSingleQuote}]+?)([^${n.romanNumerals}${n.sentencePunctuation}])([${n.sentencePunctuation}]{1,})(${p.closingSingleQuote})`,"g"),(o,s,r,t,c,u)=>c.length===1&&/[.,;:]/.test(c)?s+r+t+u+c:o)}function Tn(e,p){return e=e.replace(new RegExp(`(${p.openingSingleQuote})(.+)([${n.spaces}])(?!${p.openingSingleQuote})([^${n.romanNumerals}]{2,})(${p.closingSingleQuote})([${n.sentencePunctuation}${n.ellipsis}])([^${p.closingDoubleQuote}])`,"g"),"$1$2$3$4$6$5$7"),e=e.replace(new RegExp(`([:;])(${p.closingSingleQuote})`,"g"),"$2$1"),e=e.replace(new RegExp(`([${n.terminalPunctuation}${n.ellipsis}])(${p.closingSingleQuote})(${p.closingDoubleQuote})`,"g"),"$2$1$3"),e}function jn(e){return e.replace(new RegExp(`([${n.spaces}])(${n.singlePrime})`,"g"),"$2")}function Zn(e,p){return[{pattern:a.singlePrime,replacement:n.singlePrime},{pattern:`[${a.apos}${a.osqUnpaired}${a.csqUnpaired}]`,replacement:n.apostrophe},{pattern:a.osq,replacement:p.openingSingleQuote},{pattern:a.csq,replacement:p.closingSingleQuote}].reduce((s,{pattern:r,replacement:t})=>s.replace(new RegExp(r,"gu"),t),e)}function _n(e,p){return e=yn(e),e=Bn(e),e=vn(e),e=Wn(e),e=Ln(e),e=kn(e),e=zn(e),e=In(e),e=On(e),e=Un(e),e=Zn(e,p),e=Mn(e,p),e=Tn(e,p),e=jn(e),e}function Xn(e){return b(e,new RegExp(`([\\d]+)([${n.spaces}]?[\\p{Ll}${n.singlePrime}${n.doublePrime}]*)([${n.spaces}][x][${n.spaces}])([\\d]+)([${n.spaces}]?[\\p{Ll}${n.singlePrime}${n.doublePrime}]*)`,"giu"),`$1$2${n.nbsp}${n.multiplicationSign}${n.nbsp}$4$5`)}function Fn(e){return b(e,new RegExp(`([\\p{L}]+)([${n.spaces}][x][${n.spaces}])([\\p{L}]+)`,"gu"),`$1${n.nbsp}${n.multiplicationSign}${n.nbsp}$3`)}function Hn(e){return e.replace(new RegExp(`([\\d])([${n.spaces}]?)([x×])([${n.spaces}])([\\p{Ll}]+)`,"giu"),function(p,o,s,r,t,c){return s==""?`${o}${s}${n.multiplicationSign}${n.nbsp}${c}`:`${o}${n.nbsp}${n.multiplicationSign}${n.nbsp}${c}`})}function Gn(e){return e.replace(new RegExp(`([\\d]+)([${n.singlePrime}${n.doublePrime}])?([x|×])([\\d]+)([${n.singlePrime}${n.doublePrime}])?`,"giu"),`$1$2${n.nbsp}${n.multiplicationSign}${n.nbsp}$4$5`)}function Vn(e){return e=Xn(e),e=Fn(e),e=Hn(e),e=Gn(e),e}function f(e,p,o){return e=Me(e,p),e=Pe(e,p,o),e=ye(e,p,o),e}function Yn(e,p){return e=f(e,n.sectionSign,p.spaceAfter.sectionSign),e=f(e,n.paragraphSign,p.spaceAfter.paragraphSign),e}function x(e,p,o){return e.replace(new RegExp(`(\\(${p}\\))([${n.spaces}]*)(\\d)`,"gi"),`${o}$2$3`)}function Jn(e,p){return e=x(e,"c",n.copyright),e=f(e,n.copyright,p.spaceAfter.copyright),e=x(e,"p",n.soundRecordingCopyright),e=f(e,n.soundRecordingCopyright,p.spaceAfter.soundRecordingCopyright),e}function Kn(e,p){return e=f(e,n.numeroSign,p.spaceAfter.numeroSign),e}function ep(e){return e.replace(new RegExp("(\\+\\-)|(\\-\\+)","g"),n.plusMinus)}function m(e,p,o){return e.replace(new RegExp(`([^0-9]|^)([${n.spaces}]*)(\\(${p}\\)|${o})`,"gi"),`$1${o}`)}function np(e){return e=m(e,"r",n.registeredTrademark),e=m(e,"sm",n.serviceMark),e=m(e,"tm",n.trademark),e}function L(e,p,o){let s="m|dam|hm|km|Mm|Gm|Tm|Pm|Em|Zm|Ym|m|dm|cm|mm|µm|nm|pm|fm|am|zm|ym";return e.replace(new RegExp(`([${n.spaces}${n.slash}])(${s})(${p})`,"g"),`$1$2${o}`)}function pp(e){return L(e,"2","²")}function op(e){return L(e,"3","³")}function sp(e){return e=pp(e),e=op(e),e}function ap(e){return e.replace(new RegExp(`([${n.spaces}]+)(${n.numberSign})([${n.spaces}]+)(\\d)`,"g"),"$1$2$4")}function tp(e){return e=ap(e),e}function rp(e,p){const o=`([\\p{Lu}][\\p{L}]?\\.)([${n.spaces}]?)`,s="([\\p{L}]{2,}[^\\.])",r=[{pattern:`${o}${s}`,replacement:`$1${n.nbsp}$3`},{pattern:`${o}${o}${s}`,replacement:`$1${p.spaceAfter.abbreviation}$3${n.space}$5`},{pattern:`${o}${o}${o}${s}`,replacement:`$1${p.spaceAfter.abbreviation}$3${p.spaceAfter.abbreviation}$5${n.space}$7`}];for(const{pattern:t,replacement:c}of r)e=e.replace(new RegExp(t,"gu"),c);return e}function cp(e,p){let o=`([^\\p{L}${n.enDash}${n.emDash}]|^)`,s="([\\p{L}]|\\D)",r=`([^\\p{L}${p.openingDoubleQuote}${p.openingSingleQuote}${n.backtick}\\p{Emoji}]|$)`,t=[];for(let c=0;c<p.multipleWordAbbreviations.length;c++){let u=p.multipleWordAbbreviations[c].split(" "),i="";for(let d=0;d<u.length;d++)i+=`(${u[d]})(\\.)([${n.spaces}]?)`;t[c]=i}for(let c=0;c<t.length;c++){let u=`${o}${t[c]}${s}`,i="$1",d=(t[c].match(/\(/g)||[]).length/3;for(let l=0;l<d-1;l++)i+=`$${l*3+2}.${p.spaceAfter.abbreviation}`;i+=`$${(d-1)*3+2}. $${d*3+2}`,e=e.replace(new RegExp(u,"giu"),i)}for(let c=0;c<t.length;c++){let u=`${o}${t[c]}${r}`,i="$1",d=(t[c].match(/\(/g)||[]).length/3;for(let l=0;l<d-1;l++)i+=`$${l*3+2}.${p.spaceAfter.abbreviation}`;i+=`$${(d-1)*3+2}.$${d*3+2}`,e=e.replace(new RegExp(u,"giu"),i)}return e}function up(e,p){let o=[];for(let u=0;u<p.singleWordAbbreviations.length;u++)o[u]=`(${p.singleWordAbbreviations[u]})(\\.)([${n.spaces}]?)`;let s=`([^\\p{L}${n.enDash}${n.emDash}${n.nbsp}\\.]|^)`,r="([\\p{L}\\d]+)([^\\.]|$)";for(let u=0;u<o.length;u++)e=e.replace(new RegExp(`${s}${o[u]}${r}`,"giu"),`$1$2$3${n.nbsp}$5$6`);let t=`([\\p{L}\\d])([${n.spaces}])`,c=`([^${n.spaces}\\p{L}\\d]|$)`;for(let u=0;u<o.length;u++)e=e.replace(new RegExp(`${t}${o[u]}${c}`,"giu"),`$1${n.nbsp}$3$4$5$6`);return e}function ip(e,p){return e=rp(e,p),e=cp(e,p),e=up(e,p),e}function $p(e){return e=e.replace(new RegExp("([^\\p{L}]|^)([\\p{Lu}]{2})([\\p{Ll}]{2,})","gu"),function(p,o,s,r){return`${o}${s.substring(0,1)}${s.substring(1).toLowerCase()}${r}`}),e.replace(new RegExp("(\\b)(?!iOS)([\\p{Ll}])([\\p{Lu}]{2,})","gu"),function(p,o,s,r){return`${o}${s.toUpperCase()}${r.toLowerCase()}`})}function dp(e){return e.replace(new RegExp(`(issn)(:?)([${n.spaces}]?)(\\d{4})([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)(\\d{4})`,"gi"),`ISSN$2${n.nbsp}$4-$6`)}function lp(e){let p=`([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)`;return e.replace(new RegExp(`(isbn)(:?)([${n.spaces}]?)(\\d+)`+p+"(\\d+)"+p+"(\\d+)"+p+"(X|\\d+)","gi"),`ISBN$2${n.nbsp}$4-$6-$8-$10`)}function fp(e){let p=`([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)`;return e.replace(new RegExp(`(isbn)(:?)([${n.spaces}]?)(\\d+)`+p+"(\\d+)"+p+"(\\d+)"+p+"(\\d+)"+p+"(X|\\d+)","gi"),`ISBN$2${n.nbsp}$4-$6-$8-$10-$12`)}function bp(e){let p=`([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)`;return e.replace(new RegExp("(\\d+)"+p+"(\\d+)"+p+"(\\d+)"+p+"(\\d+)"+p+"(X|\\d+?)","g"),"$1-$3-$5-$7-$9")}function mp(e){return e=dp(e),e=lp(e),e=fp(e),e=bp(e),e}function hp(e){let p=[];return h(e,n.emailPattern,p),h(e,n.urlPattern,p),h(e,n.filenamePattern,p),{processedText:gp(e,p),exceptions:p}}function h(e,p,o){const s=new RegExp(p,"gi"),r=e.match(s);return r&&r.forEach(t=>o.push(t)),o}function gp(e,p){return p.reduce((o,s,r)=>{const t=B(r);return o.replace(s,t)},e)}function xp(e,p){return p.reduce((o,s,r)=>{const t=B(r),c=new RegExp(t,"g");return o.replace(c,s)},e)}function Sp(e,p,o){p=typeof p>"u"?"en-us":p;let s=new me(p);o=typeof o>"u"?{removeLines:!0}:o;const{processedText:r,exceptions:t}=hp(e);return e=r,o.removeLines&&(e=he(e)),e=pn(e,s),e=Te(e,s),e=Ze(e),e=$n(e,s),e=_n(e,s),e=Pn(e,s),e=Vn(e),e=Yn(e,s),e=Jn(e,s),e=Kn(e,s),e=ep(e),e=np(e),e=sp(e),e=tp(e),e=$p(e),e=mp(e),e=ip(e,s),e=Be(e,s),e=xp(e,t),e}exports.fixTypos=Sp;