Created
July 25, 2013 21:00
-
-
Save kriansa/6083725 to your computer and use it in GitHub Desktop.
Function to translate accented characters to ASCII equivalents. Stripped out from SugarJS. (https://github.com/andrewplummer/Sugar/)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Returns the string with accented and non-standard Latin-based characters converted into ASCII approximate equivalents. | |
* | |
* @returns {String} | |
*/ | |
String.prototype.normalize = function() { | |
var NormalizeSource = { | |
'A': /[AⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ]/g, | |
'B': /[BⒷBḂḄḆɃƂƁ]/g, | |
'C': /[CⒸCĆĈĊČÇḈƇȻꜾ]/g, | |
'D': /[DⒹDḊĎḌḐḒḎĐƋƊƉꝹ]/g, | |
'E': /[EⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎ]/g, | |
'F': /[FⒻFḞƑꝻ]/g, | |
'G': /[GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ]/g, | |
'H': /[HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ]/g, | |
'I': /[IⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ]/g, | |
'J': /[JⒿJĴɈ]/g, | |
'K': /[KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ]/g, | |
'L': /[LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ]/g, | |
'M': /[MⓂMḾṀṂⱮƜ]/g, | |
'N': /[NⓃNǸŃÑṄŇṆŅṊṈȠƝꞐꞤ]/g, | |
'O': /[OⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ]/g, | |
'P': /[PⓅPṔṖƤⱣꝐꝒꝔ]/g, | |
'Q': /[QⓆQꝖꝘɊ]/g, | |
'R': /[RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ]/g, | |
'S': /[SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ]/g, | |
'T': /[TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ]/g, | |
'U': /[UⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ]/g, | |
'V': /[VⓋVṼṾƲꝞɅ]/g, | |
'W': /[WⓌWẀẂŴẆẄẈⱲ]/g, | |
'X': /[XⓍXẊẌ]/g, | |
'Y': /[YⓎYỲÝŶỸȲẎŸỶỴƳɎỾ]/g, | |
'Z': /[ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ]/g, | |
'a': /[aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ]/g, | |
'b': /[bⓑbḃḅḇƀƃɓ]/g, | |
'c': /[cⓒcćĉċčçḉƈȼꜿↄ]/g, | |
'd': /[dⓓdḋďḍḑḓḏđƌɖɗꝺ]/g, | |
'e': /[eⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ]/g, | |
'f': /[fⓕfḟƒꝼ]/g, | |
'g': /[gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ]/g, | |
'h': /[hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ]/g, | |
'i': /[iⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı]/g, | |
'j': /[jⓙjĵǰɉ]/g, | |
'k': /[kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ]/g, | |
'l': /[lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ]/g, | |
'm': /[mⓜmḿṁṃɱɯ]/g, | |
'n': /[nⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ]/g, | |
'o': /[oⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔꝋꝍɵ]/g, | |
'p': /[pⓟpṕṗƥᵽꝑꝓꝕ]/g, | |
'q': /[qⓠqɋꝗꝙ]/g, | |
'r': /[rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ]/g, | |
's': /[sⓢsśṥŝṡšṧṣṩșşȿꞩꞅẛ]/g, | |
't': /[tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ]/g, | |
'u': /[uⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ]/g, | |
'v': /[vⓥvṽṿʋꝟʌ]/g, | |
'w': /[wⓦwẁẃŵẇẅẘẉⱳ]/g, | |
'x': /[xⓧxẋẍ]/g, | |
'y': /[yⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ]/g, | |
'z': /[zⓩzźẑżžẓẕƶȥɀⱬꝣ]/g, | |
'AA': /[Ꜳ]/g, | |
'AE': /[ÆǼǢ]/g, | |
'AO': /[Ꜵ]/g, | |
'AU': /[Ꜷ]/g, | |
'AV': /[ꜸꜺ]/g, | |
'AY': /[Ꜽ]/g, | |
'DZ': /[DZDŽ]/g, | |
'Dz': /[DzDž]/g, | |
'LJ': /[LJ]/g, | |
'Lj': /[Lj]/g, | |
'NJ': /[NJ]/g, | |
'Nj': /[Nj]/g, | |
'OI': /[Ƣ]/g, | |
'OO': /[Ꝏ]/g, | |
'OU': /[Ȣ]/g, | |
'TZ': /[Ꜩ]/g, | |
'VY': /[Ꝡ]/g, | |
'aa': /[ꜳ]/g, | |
'ae': /[æǽǣ]/g, | |
'ao': /[ꜵ]/g, | |
'au': /[ꜷ]/g, | |
'av': /[ꜹꜻ]/g, | |
'ay': /[ꜽ]/g, | |
'dz': /[dzdž]/g, | |
'hv': /[ƕ]/g, | |
'lj': /[lj]/g, | |
'nj': /[nj]/g, | |
'oi': /[ƣ]/g, | |
'ou': /[ȣ]/g, | |
'oo': /[ꝏ]/g, | |
'ss': /[ß]/g, | |
'tz': /[ꜩ]/g, | |
'vy': /[ꝡ]/g | |
}; | |
var value = this; | |
for (var normalized in NormalizeSource) { | |
var regexp = NormalizeSource[normalized]; | |
value = value.replace(regexp, normalized); | |
} | |
return value; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment