UNPKG

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
/*! * 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) */ "use strict";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;