Skip to content

Instantly share code, notes, and snippets.

@mdchaney
Last active October 14, 2024 05:00
Show Gist options
  • Save mdchaney/f7f54e8eefe227eb15699d24f35ca664 to your computer and use it in GitHub Desktop.
Save mdchaney/f7f54e8eefe227eb15699d24f35ca664 to your computer and use it in GitHub Desktop.
JavaScript unaccent - remove diacritics from utf-8 strings
const ACCENT_MAP = {
" ":" ","¨":" ","ª":"a","¯":" ","²":"2","³":"3","´":" ","¸":" ","¹":"1",
"º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C",
"È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ñ":"N",
"Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U",
"Ü":"U","Ý":"Y","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae",
"ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i",
"ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u",
"û":"u","ü":"u","ý":"y","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A",
"ą":"a","Ć":"C","ć":"c","Ĉ":"C","ĉ":"c","Ċ":"C","ċ":"c","Č":"C","č":"c",
"Ď":"D","ď":"d","Đ":"D","đ":"d","Ē":"E","ē":"e","Ĕ":"E","ĕ":"e","Ė":"E",
"ė":"e","Ę":"E","ę":"e","Ě":"E","ě":"e","Ĝ":"G","ĝ":"g","Ğ":"G","ğ":"g",
"Ġ":"G","ġ":"g","Ģ":"G","ģ":"g","Ĥ":"H","ĥ":"h","Ħ":"H","ħ":"h","Ĩ":"I",
"ĩ":"i","Ī":"I","ī":"i","Ĭ":"I","ĭ":"i","Į":"I","į":"i","İ":"I","IJ":"IJ",
"ij":"ij","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","Ĺ":"L","ĺ":"l","Ļ":"L","ļ":"l",
"Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N",
"ň":"n","Ō":"O","ō":"o","Ŏ":"O","ŏ":"o","Ő":"O","ő":"o","Ŕ":"R","ŕ":"r",
"Ŗ":"R","ŗ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ŝ":"S","ŝ":"s","Ş":"S",
"ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ŧ":"T","ŧ":"t",
"Ũ":"U","ũ":"u","Ū":"U","ū":"u","Ŭ":"U","ŭ":"u","Ů":"U","ů":"u","Ű":"U",
"ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z",
"ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ſ":"s","ƀ":"b","Ɓ":"B","Ƃ":"B",
"ƃ":"b","Ƈ":"C","ƈ":"c","Ɗ":"D","Ƌ":"D","ƌ":"d","Ƒ":"F","ƒ":"f","Ɠ":"G",
"Ɨ":"I","Ƙ":"K","ƙ":"k","ƚ":"l","Ɲ":"N","ƞ":"n","Ɵ":"O","Ơ":"O","ơ":"o",
"Ƥ":"P","ƥ":"p","ƫ":"t","Ƭ":"T","ƭ":"t","Ʈ":"T","Ư":"U","ư":"u","Ʋ":"V",
"Ƴ":"Y","ƴ":"y","Ƶ":"Z","ƶ":"z","DŽ":"DZ","Dž":"Dz","dž":"dz","LJ":"LJ",
"Lj":"Lj","lj":"lj","NJ":"NJ","Nj":"Nj","nj":"nj","Ǎ":"A","ǎ":"a","Ǐ":"I",
"ǐ":"i","Ǒ":"O","ǒ":"o","Ǔ":"U","ǔ":"u","Ǖ":"U","ǖ":"u","Ǘ":"U","ǘ":"u",
"Ǚ":"U","ǚ":"u","Ǜ":"U","ǜ":"u","Ǟ":"A","ǟ":"a","Ǡ":"A","ǡ":"a","Ǣ":"AE",
"ǣ":"ae","Ǥ":"G","ǥ":"g","Ǧ":"G","ǧ":"g","Ǩ":"K","ǩ":"k","Ǫ":"O","ǫ":"o",
"Ǭ":"O","ǭ":"o","ǰ":"j","DZ":"DZ","Dz":"Dz","dz":"dz","Ǵ":"G","ǵ":"g","Ǹ":"N",
"ǹ":"n","Ǻ":"A","ǻ":"a","Ǽ":"AE","ǽ":"ae","Ǿ":"O","ǿ":"o","Ȁ":"A","ȁ":"a",
"Ȃ":"A","ȃ":"a","Ȅ":"E","ȅ":"e","Ȇ":"E","ȇ":"e","Ȉ":"I","ȉ":"i","Ȋ":"I",
"ȋ":"i","Ȍ":"O","ȍ":"o","Ȏ":"O","ȏ":"o","Ȑ":"R","ȑ":"r","Ȓ":"R","ȓ":"r",
"Ȕ":"U","ȕ":"u","Ȗ":"U","ȗ":"u","Ș":"S","ș":"s","Ț":"T","ț":"t","Ȟ":"H",
"ȟ":"h","Ƞ":"N","ȡ":"d","Ȥ":"Z","ȥ":"z","Ȧ":"A","ȧ":"a","Ȩ":"E","ȩ":"e",
"Ȫ":"O","ȫ":"o","Ȭ":"O","ȭ":"o","Ȯ":"O","ȯ":"o","Ȱ":"O","ȱ":"o","Ȳ":"Y",
"ȳ":"y","ȴ":"l","ȵ":"n","ȶ":"t","ɓ":"b","ɕ":"c","ɖ":"d","ɗ":"d","ɠ":"g",
"ɦ":"h","ɨ":"i","ɫ":"l","ɬ":"l","ɭ":"l","ɱ":"m","ɲ":"n","ɳ":"n","ɼ":"r",
"ɽ":"r","ɾ":"r","ʂ":"s","ʈ":"t","ʋ":"v","ʐ":"z","ʑ":"z","ʝ":"j","ʠ":"q",
"ʰ":"h","ʱ":"h","ʲ":"j","ʳ":"r","ʷ":"w","ʸ":"y","˘":" ","˙":" ","˚":" ",
"˛":" ","˜":" ","˝":" ","ˡ":"l","ˢ":"s","ˣ":"x","ͺ":" ",";":";","΄":" ",
"΅":" ","ᴬ":"A","ᴭ":"AE","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I",
"ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T",
"ᵁ":"U","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᵈ":"d","ᵉ":"e","ᵍ":"g","ᵏ":"k","ᵐ":"m",
"ᵒ":"o","ᵖ":"p","ᵗ":"t","ᵘ":"u","ᵛ":"v","ᵢ":"i","ᵣ":"r","ᵤ":"u","ᵥ":"v",
"Ḁ":"A","ḁ":"a","Ḃ":"B","ḃ":"b","Ḅ":"B","ḅ":"b","Ḇ":"B","ḇ":"b","Ḉ":"C",
"ḉ":"c","Ḋ":"D","ḋ":"d","Ḍ":"D","ḍ":"d","Ḏ":"D","ḏ":"d","Ḑ":"D","ḑ":"d",
"Ḓ":"D","ḓ":"d","Ḕ":"E","ḕ":"e","Ḗ":"E","ḗ":"e","Ḙ":"E","ḙ":"e","Ḛ":"E",
"ḛ":"e","Ḝ":"E","ḝ":"e","Ḟ":"F","ḟ":"f","Ḡ":"G","ḡ":"g","Ḣ":"H","ḣ":"h",
"Ḥ":"H","ḥ":"h","Ḧ":"H","ḧ":"h","Ḩ":"H","ḩ":"h","Ḫ":"H","ḫ":"h","Ḭ":"I",
"ḭ":"i","Ḯ":"I","ḯ":"i","Ḱ":"K","ḱ":"k","Ḳ":"K","ḳ":"k","Ḵ":"K","ḵ":"k",
"Ḷ":"L","ḷ":"l","Ḹ":"L","ḹ":"l","Ḻ":"L","ḻ":"l","Ḽ":"L","ḽ":"l","Ḿ":"M",
"ḿ":"m","Ṁ":"M","ṁ":"m","Ṃ":"M","ṃ":"m","Ṅ":"N","ṅ":"n","Ṇ":"N","ṇ":"n",
"Ṉ":"N","ṉ":"n","Ṋ":"N","ṋ":"n","Ṍ":"O","ṍ":"o","Ṏ":"O","ṏ":"o","Ṑ":"O",
"ṑ":"o","Ṓ":"O","ṓ":"o","Ṕ":"P","ṕ":"p","Ṗ":"P","ṗ":"p","Ṙ":"R","ṙ":"r",
"Ṛ":"R","ṛ":"r","Ṝ":"R","ṝ":"r","Ṟ":"R","ṟ":"r","Ṡ":"S","ṡ":"s","Ṣ":"S",
"ṣ":"s","Ṥ":"S","ṥ":"s","Ṧ":"S","ṧ":"s","Ṩ":"S","ṩ":"s","Ṫ":"T","ṫ":"t",
"Ṭ":"T","ṭ":"t","Ṯ":"T","ṯ":"t","Ṱ":"T","ṱ":"t","Ṳ":"U","ṳ":"u","Ṵ":"U",
"ṵ":"u","Ṷ":"U","ṷ":"u","Ṹ":"U","ṹ":"u","Ṻ":"U","ṻ":"u","Ṽ":"V","ṽ":"v",
"Ṿ":"V","ṿ":"v","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","Ẇ":"W",
"ẇ":"w","Ẉ":"W","ẉ":"w","Ẋ":"X","ẋ":"x","Ẍ":"X","ẍ":"x","Ẏ":"Y","ẏ":"y",
"Ẑ":"Z","ẑ":"z","Ẓ":"Z","ẓ":"z","Ẕ":"Z","ẕ":"z","ẖ":"h","ẗ":"t","ẘ":"w",
"ẙ":"y","ẛ":"s","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A",
"ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a",
"Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E",
"ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e",
"Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I",
"ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o",
"Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O",
"ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u",
"Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U",
"ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y",
"Ỹ":"Y","ỹ":"y","᾽":" ","᾿":" ","῀":" ","῁":" ","῍":" ","῎":" ","῏":" ",
"῝":" ","῞":" ","῟":" ","῭":" ","΅":" ","`":"`","´":" ","῾":" "," ":" ",
" ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" ",
" ":" ","‗":" ","․":".","‥":"..","…":"..."," ":" ","‼":"!!","‾":" ","⁅":"[",
"⁆":"]","⁇":"??","⁈":"?!","⁉":"!?"," ":" ","⁰":"0","ⁱ":"i","⁴":"4","⁵":"5",
"⁶":"6","⁷":"7","⁸":"8","⁹":"9","⁺":"+","⁼":"=","⁽":"(","⁾":")","ⁿ":"n",
"₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8",
"₉":"9","₊":"+","₌":"=","₍":"(","₎":")","₨":"Rs","℀":"a/c","℁":"a/s",
"ℂ":"C","℅":"c/o","℆":"c/u","ℊ":"g","ℋ":"H","ℌ":"H","ℍ":"H","ℎ":"h","ℏ":"h",
"ℐ":"I","ℑ":"I","ℒ":"L","ℓ":"l","ℕ":"N","№":"No","ℙ":"P","ℚ":"Q","ℛ":"R",
"ℜ":"R","ℝ":"R","℠":"SM","℡":"TEL","™":"TM","ℤ":"Z","ℨ":"Z","K":"K","Å":"A",
"ℬ":"B","ℭ":"C","ℯ":"e","ℰ":"E","ℱ":"F","ℳ":"M","ℴ":"o","ℹ":"i","℻":"FAX",
"ⅅ":"D","ⅆ":"d","ⅇ":"e","ⅈ":"i","ⅉ":"j","Ⅰ":"I","Ⅱ":"II","Ⅲ":"III","Ⅳ":"IV",
"Ⅴ":"V","Ⅵ":"VI","Ⅶ":"VII","Ⅷ":"VIII","Ⅸ":"IX","Ⅹ":"X","Ⅺ":"XI","Ⅻ":"XII",
"Ⅼ":"L","Ⅽ":"C","Ⅾ":"D","Ⅿ":"M","ⅰ":"i","ⅱ":"ii","ⅲ":"iii","ⅳ":"iv","ⅴ":"v",
"ⅵ":"vi","ⅶ":"vii","ⅷ":"viii","ⅸ":"ix","ⅹ":"x","ⅺ":"xi","ⅻ":"xii","ⅼ":"l",
"ⅽ":"c","ⅾ":"d","ⅿ":"m","≠":"=","≮":"\u003c","≯":"\u003e","⍿":"|","①":"1",
"②":"2","③":"3","④":"4","⑤":"5","⑥":"6","⑦":"7","⑧":"8","⑨":"9","⑩":"10",
"⑪":"11","⑫":"12","⑬":"13","⑭":"14","⑮":"15","⑯":"16","⑰":"17","⑱":"18",
"⑲":"19","⑳":"20","⑴":"(1)","⑵":"(2)","⑶":"(3)","⑷":"(4)","⑸":"(5)",
"⑹":"(6)","⑺":"(7)","⑻":"(8)","⑼":"(9)","⑽":"(10)","⑾":"(11)","⑿":"(12)",
"⒀":"(13)","⒁":"(14)","⒂":"(15)","⒃":"(16)","⒄":"(17)","⒅":"(18)",
"⒆":"(19)","⒇":"(20)","⒈":"1.","⒉":"2.","⒊":"3.","⒋":"4.","⒌":"5.","⒍":"6.",
"⒎":"7.","⒏":"8.","⒐":"9.","⒑":"10.","⒒":"11.","⒓":"12.","⒔":"13.",
"⒕":"14.","⒖":"15.","⒗":"16.","⒘":"17.","⒙":"18.","⒚":"19.","⒛":"20.",
"⒜":"(a)","⒝":"(b)","⒞":"(c)","⒟":"(d)","⒠":"(e)","⒡":"(f)","⒢":"(g)",
"⒣":"(h)","⒤":"(i)","⒥":"(j)","⒦":"(k)","⒧":"(l)","⒨":"(m)","⒩":"(n)",
"⒪":"(o)","⒫":"(p)","⒬":"(q)","⒭":"(r)","⒮":"(s)","⒯":"(t)","⒰":"(u)",
"⒱":"(v)","⒲":"(w)","⒳":"(x)","⒴":"(y)","⒵":"(z)","Ⓐ":"A","Ⓑ":"B","Ⓒ":"C",
"Ⓓ":"D","Ⓔ":"E","Ⓕ":"F","Ⓖ":"G","Ⓗ":"H","Ⓘ":"I","Ⓙ":"J","Ⓚ":"K","Ⓛ":"L",
"Ⓜ":"M","Ⓝ":"N","Ⓞ":"O","Ⓟ":"P","Ⓠ":"Q","Ⓡ":"R","Ⓢ":"S","Ⓣ":"T","Ⓤ":"U",
"Ⓥ":"V","Ⓦ":"W","Ⓧ":"X","Ⓨ":"Y","Ⓩ":"Z","ⓐ":"a","ⓑ":"b","ⓒ":"c","ⓓ":"d",
"ⓔ":"e","ⓕ":"f","ⓖ":"g","ⓗ":"h","ⓘ":"i","ⓙ":"j","ⓚ":"k","ⓛ":"l","ⓜ":"m",
"ⓝ":"n","ⓞ":"o","ⓟ":"p","ⓠ":"q","ⓡ":"r","ⓢ":"s","ⓣ":"t","ⓤ":"u","ⓥ":"v",
"ⓦ":"w","ⓧ":"x","ⓨ":"y","ⓩ":"z","⓪":"0","⦋":"[","⦌":"]","⦍":"[","⦎":"]",
"⦏":"[","⦐":"]","⧶":"/","⧷":"\\","⨢":"+","⨣":"+","⨤":"+","⨥":"+","⨦":"+",
"⨧":"+","⨨":"+","⩦":"=","⩴":"::=","⩵":"==","⩶":"===","⩷":"=","⪮":"=",
"⫯":"|","⫰":"|"," ":" ","゛":" ","゜":" ","㉐":"PTE","㉑":"21","㉒":"22",
"㉓":"23","㉔":"24","㉕":"25","㉖":"26","㉗":"27","㉘":"28","㉙":"29","㉚":"30",
"㉛":"31","㉜":"32","㉝":"33","㉞":"34","㉟":"35","㊱":"36","㊲":"37","㊳":"38",
"㊴":"39","㊵":"40","㊶":"41","㊷":"42","㊸":"43","㊹":"44","㊺":"45","㊻":"46",
"㊼":"47","㊽":"48","㊾":"49","㊿":"50","㋌":"Hg","㋍":"erg","㋎":"eV","㋏":"LTD",
"㍱":"hPa","㍲":"da","㍳":"AU","㍴":"bar","㍵":"oV","㍶":"pc","㍷":"dm","㍸":"dm2",
"㍹":"dm3","㍺":"IU","㎀":"pA","㎁":"nA","㎃":"mA","㎄":"kA","㎅":"KB","㎆":"MB",
"㎇":"GB","㎈":"cal","㎉":"kcal","㎊":"pF","㎋":"nF","㎎":"mg","㎏":"kg","㎐":"Hz",
"㎑":"kHz","㎒":"MHz","㎓":"GHz","㎔":"THz","㎖":"ml","㎗":"dl","㎘":"kl","㎙":"fm",
"㎚":"nm","㎜":"mm","㎝":"cm","㎞":"km","㎟":"mm2","㎠":"cm2","㎡":"m2","㎢":"km2",
"㎣":"mm3","㎤":"cm3","㎥":"m3","㎦":"km3","㎩":"Pa","㎪":"kPa","㎫":"MPa",
"㎬":"GPa","㎭":"rad","㎰":"ps","㎱":"ns","㎳":"ms","㎴":"pV","㎵":"nV","㎷":"mV",
"㎸":"kV","㎹":"MV","㎺":"pW","㎻":"nW","㎽":"mW","㎾":"kW","㎿":"MW","㏂":"a.m.",
"㏃":"Bq","㏄":"cc","㏅":"cd","㏇":"Co.","㏈":"dB","㏉":"Gy","㏊":"ha","㏋":"HP",
"㏌":"in","㏍":"KK","㏎":"KM","㏏":"kt","㏐":"lm","㏑":"ln","㏒":"log","㏓":"lx",
"㏔":"mb","㏕":"mil","㏖":"mol","㏗":"PH","㏘":"p.m.","㏙":"PPM","㏚":"PR",
"㏛":"sr","㏜":"Sv","㏝":"Wb","㏿":"gal","ff":"ff","fi":"fi","fl":"fl","ffi":"ffi",
"ffl":"ffl","ſt":"ts","st":"st","﬩":"+","ﱞ":" ","ﱟ":" ","ﱠ":" ","ﱡ":" ","ﱢ":" ",
"ﱣ":" ","︰":"..","︳":"_","︴":"_","︵":"(","︶":")","︷":"{","︸":"}","﹇":"[",
"﹈":"]","﹉":" ","﹊":" ","﹋":" ","﹌":" ","﹍":"_","﹎":"_","﹏":"_","﹐":",",
"﹒":".","﹔":";","﹕":":","﹖":"?","﹗":"!","﹙":"(","﹚":")","﹛":"{","﹜":"}",
"﹟":"#","﹠":"\u0026","﹡":"*","﹢":"+","﹣":"-","﹤":"\u003c","﹥":"\u003e",
"﹦":"=","﹨":"\\","﹩":"$","﹪":"%","﹫":"@","ﹰ":" ","ﹲ":" ","ﹴ":" ","ﹶ":" ",
"ﹸ":" ","ﹺ":" ","ﹼ":" ","ﹾ":" ","!":"!",""":"\"","#":"#","$":"$","%":"%",
"&":"\u0026","'":"'","(":"(",")":")","*":"*","+":"+",",":",","-":"-",
".":".","/":"/","0":"0","1":"1","2":"2","3":"3","4":"4","5":"5","6":"6",
"7":"7","8":"8","9":"9",":":":",";":";","<":"\u003c","=":"=",">":"\u003e",
"?":"?","@":"@","A":"A","B":"B","C":"C","D":"D","E":"E","F":"F","G":"G",
"H":"H","I":"I","J":"J","K":"K","L":"L","M":"M","N":"N","O":"O","P":"P",
"Q":"Q","R":"R","S":"S","T":"T","U":"U","V":"V","W":"W","X":"X","Y":"Y",
"Z":"Z","[":"[","\":"\\","]":"]","^":"^","_":"_","`":"`","a":"a","b":"b",
"c":"c","d":"d","e":"e","f":"f","g":"g","h":"h","i":"i","j":"j","k":"k",
"l":"l","m":"m","n":"n","o":"o","p":"p","q":"q","r":"r","s":"s","t":"t",
"u":"u","v":"v","w":"w","x":"x","y":"y","z":"z","{":"{","|":"|","}":"}",
"~":"~"," ̄":" "};
export const unaccent = function(str) {
return str.normalize().split('').map(char => ACCENT_MAP[char] || char).join('');
}
To use this, simply import "unaccent" into your module:
import { unaccent } from 'unaccent'
Then, you can use it to unaccent strings:
unaccent("Beyoncé") => "Beyonce"
This includes the list from the SixArm unaccent gem for Ruby:
https://github.com/SixArm/sixarm_ruby_unaccent
Which is based on the older Perl implementation of text::unaccent:
https://metacpan.org/pod/Text::Unaccent
There are thousands of conversions in the original. I have filtered them down to items that specifically map to only ASCII characters. With the gem loaded, you can recreate this map easily from irb:
> puts String::ACCENTMAP.select { |k,v| v.chars.all? { |c| c.ord < 128 } }.to_h.to_json;
I wrapped it around 72 characters to make the source more readable. As you can see, it's trivial to get the entire mapping by simply using:
> puts Srirng::ACCENTMAP.to_json;
For my purposes with primarily western characters the smaller map will work fine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment