// list of similar chars
// useful for suggestion mechanism
/* jshint esversion:6 */
/* jslint esversion:6 */
${map}
var char_player = {
/*
oDistanceBetweenChars:
- with Jaro-Winkler, values between 1 and 10
- with Damerau-Levenshtein, values / 10 (between 0 and 1: 0.1, 0.2 ... 0.9)
*/
oDistanceBetweenChars: {
"a": { "a": 0, "á": .1, "à": .1, "â": .1, "ã": .1 },
"á": { "a": .1, "á": 0, "à": .1, "â": .1, "ã": .1 },
"à": { "a": .1, "á": .1, "à": 0, "â": .1, "ã": .1 },
"â": { "a": .1, "á": .1, "à": .1, "â": 0, "ã": .1 },
"ã": { "a": .1, "á": .1, "à": .1, "â": .1, "ã": 0 },
"e": { "e": 0, "é": .1, "è": .1, "ê": .1, "ẽ": .1 },
"é": { "e": .1, "é": 0, "è": .1, "ê": .1, "ẽ": .1 },
"è": { "e": .1, "é": .1, "è": 0, "ê": .1, "ẽ": .1 },
"ê": { "e": .1, "é": .1, "è": .1, "ê": 0, "ẽ": .1 },
"ẽ": { "e": .1, "é": .1, "è": .1, "ê": .1, "ẽ": 0 },
"i": { "i": 0, "í": .1, "ì": .1, "î": .1, "ĩ": .1 },
"í": { "i": .1, "í": 0, "ì": .1, "î": .1, "ĩ": .1 },
"ì": { "i": .1, "í": .1, "ì": 0, "î": .1, "ĩ": .1 },
"î": { "i": .1, "í": .1, "ì": .1, "î": 0, "ĩ": .1 },
"ĩ": { "i": .1, "í": .1, "ì": .1, "î": .1, "ĩ": 0 },
"o": { "o": 0, "ó": .1, "ò": .1, "ô": .1, "õ": .1 },
"ó": { "o": .1, "ó": 0, "ò": .1, "ô": .1, "õ": .1 },
"ò": { "o": .1, "ó": .1, "ò": 0, "ô": .1, "õ": .1 },
"ô": { "o": .1, "ó": .1, "ò": .1, "ô": 0, "õ": .1 },
"õ": { "o": .1, "ó": .1, "ò": .1, "ô": .1, "õ": 0 },
"u": { "u": 0, "ú": .1, "ù": .1, "û": .1, "ũ": .1 },
"ú": { "u": .1, "ú": 0, "ù": .1, "û": .1, "ũ": .1 },
"ù": { "u": .1, "ú": .1, "ù": 0, "û": .1, "ũ": .1 },
"û": { "u": .1, "ú": .1, "ù": .1, "û": 0, "ũ": .1 },
"ũ": { "u": .1, "ú": .1, "ù": .1, "û": .1, "ũ": 0 },
"y": { "y": 0, "ý": .1, "ỳ": .1, "ŷ": .1, "ỹ": .1 },
"ý": { "y": .1, "ý": 0, "ỳ": .1, "ŷ": .1, "ỹ": .1 },
"ỳ": { "y": .1, "ý": .1, "ỳ": 0, "ŷ": .1, "ỹ": .1 },
"ŷ": { "y": .1, "ý": .1, "ỳ": .1, "ŷ": 0, "ỹ": .1 },
"ỹ": { "y": .1, "ý": .1, "ỳ": .1, "ŷ": .1, "ỹ": 0 },
// consonnes
"b": { "b": 0, "d": .8, "h": .9 },
"c": { "c": 0, "ç": .1, "k": .5, "q": .5, "s": .5, "x": .5, "z": .8 },
"ç": { "c": .1, "ç": 0, "k": .5, "q": .5, "s": .5, "x": .5, "z": .8 },
"d": { "d": 0, "b": .8 },
"f": { "f": 0, "v": .8 },
"g": { "g": 0, "j": .5, "q": .8 },
"h": { "h": 0, "b": .9 },
"j": { "j": 0, "g": .5, "i": .8 },
"k": { "k": 0, "c": .5, "q": .1, "x": .5 },
"l": { "l": 0, "i": .8 },
"m": { "m": 0, "n": .6 },
"n": { "n": 0, "ñ": .1, "m": .6, "r": .8 },
"p": { "p": 0, "q": .8 },
"q": { "q": 0, "c": .5, "k": .1, "p": .8, "g": .8 },
"r": { "r": 0, "n": .8, "j": .9 },
"s": { "s": 0, "c": .5, "ç": .1, "x": .5, "z": .5 },
"t": { "t": 0, "d": .9 },
"v": { "v": 0, "f": .8, "w": .2 },
"w": { "w": 0, "v": .2 },
"x": { "x": 0, "c": .5, "k": .5, "q": .5, "s": .5 },
"z": { "z": 0, "s": .5 }
},
distanceBetweenChars: function (c1, c2) {
if (c1 == c2) {
return 0;
}
if (this.oDistanceBetweenChars.hasOwnProperty(c1) && this.oDistanceBetweenChars[c1].hasOwnProperty(c2)) {
return this.oDistanceBetweenChars[c1][c2];
}
return 1;
},
aVowel: new Set("aáàâäāeéèêëēiíìîïīoóòôöōuúùûüūyýỳŷÿȳœæAÁÀÂÄĀEÉÈÊËĒIÍÌÎÏĪOÓÒÔÖŌUÚÙÛÜŪYÝỲŶŸȲŒÆ"),
aConsonant: new Set("bcçdfghjklmnñpqrstvwxzBCÇDFGHJKLMNÑPQRSTVWXZ"),
aDouble: new Set("bcdfjklmnprstzBCDFJKLMNPRSTZ"), // letters that may be used twice successively
// Similar chars
d1to1: new Map([
["'", "'’"], // U+0027: apostrophe droite
["’", "’"], // U+2019: apostrophe typographique (sera utilisée par défaut)
["ʼ", "ʼ’"], // U+02BC: Lettre modificative apostrophe
["‘", "‘’"], // U+2018: guillemet-apostrophe culbuté
["‛", "‛’"], // U+201B: guillemet-virgule supérieur culbuté
["´", "´’"], // U+00B4: accent aigu
["`", "`’"], // U+0060: accent grave
["′", "′’"], // U+2032: prime
["‵", "‵’"], // U+2035: prime réfléchi
["՚", "՚’"], // U+055A: apostrophe arménienne
["ꞌ", "ꞌ’"], // U+A78C: latin minuscule saltillo
["Ꞌ", "Ꞌ’"], // U+A78B: latin majuscule saltillo
["1", "1₁liîLIÎ"],
["2", "2₂zZ"],
["3", "3₃eéèêEÉÈÊ"],
["4", "4₄aàâAÀÂ"],
["5", "5₅sgSG"],
["6", "6₆bdgBDG"],
["7", "7₇ltLT"],
["8", "8₈bB"],
["9", "9₉gbdGBD"],
["0", "0₀oôOÔ"],
["a", "aAàÀâÂáÁäÄāĀæÆ"],
["A", "AaÀàÂâÁáÄäĀ⯿"],
["à", "aAàÀâÂáÁäÄāĀæÆ"],
["À", "AaÀàÂâÁáÄäĀ⯿"],
["â", "aAàÀâÂáÁäÄāĀæÆ"],
["Â", "AaÀàÂâÁáÄäĀ⯿"],
["á", "aAàÀâÂáÁäÄāĀæÆ"],
["Á", "AaÀàÂâÁáÄäĀ⯿"],
["ä", "aAàÀâÂáÁäÄāĀæÆ"],
["Ä", "AaÀàÂâÁáÄäĀ⯿"],
["æ", "æÆéÉaA"],
["Æ", "ÆæÉéAa"],
["b", "bB"],
["B", "Bb"],
["c", "cCçÇsSkKqQśŚŝŜ"],
["C", "CcÇçSsKkQqŚśŜŝ"],
["ç", "cCçÇsSkKqQśŚŝŜ"],
["Ç", "CcÇçSsKkQqŚśŜŝ"],
["d", "dDðÐ"],
["D", "DdÐð"],
["e", "eEéÉèÈêÊëËēĒœŒ"],
["E", "EeÉéÈèÊêËëĒēŒœ"],
["é", "eEéÉèÈêÊëËēĒœŒ"],
["É", "EeÉéÈèÊêËëĒēŒœ"],
["ê", "eEéÉèÈêÊëËēĒœŒ"],
["Ê", "EeÉéÈèÊêËëĒēŒœ"],
["è", "eEéÉèÈêÊëËēĒœŒ"],
["È", "EeÉéÈèÊêËëĒēŒœ"],
["ë", "eEéÉèÈêÊëËēĒœŒ"],
["Ë", "EeÉéÈèÊêËëĒēŒœ"],
["f", "fF"],
["F", "Ff"],
["g", "gGjJĵĴ"],
["G", "GgJjĴĵ"],
["h", "hH"],
["H", "Hh"],
["i", "iIîÎïÏyYíÍìÌīĪÿŸ"],
["I", "IiÎîÏïYyÍíÌìĪīŸÿ"],
["î", "iIîÎïÏyYíÍìÌīĪÿŸ"],
["Î", "IiÎîÏïYyÍíÌìĪīŸÿ"],
["ï", "iIîÎïÏyYíÍìÌīĪÿŸ"],
["Ï", "IiÎîÏïYyÍíÌìĪīŸÿ"],
["í", "iIîÎïÏyYíÍìÌīĪÿŸ"],
["Í", "IiÎîÏïYyÍíÌìĪīŸÿ"],
["ì", "iIîÎïÏyYíÍìÌīĪÿŸ"],
["Ì", "IiÎîÏïYyÍíÌìĪīŸÿ"],
["j", "jJgGĵĴ"],
["J", "JjGgĴĵ"],
["k", "kKcCqQ"],
["K", "KkCcQq"],
["l", "lLłŁ"],
["L", "LlŁł"],
["m", "mMḿḾ"],
["M", "MmḾḿ"],
["n", "nNñÑńŃǹǸ"],
["N", "NnÑñŃńǸǹ"],
["o", "oOôÔóÓòÒöÖōŌœŒ"],
["O", "OoÔôÓóÒòÖöŌōŒœ"],
["ô", "oOôÔóÓòÒöÖōŌœŒ"],
["Ô", "OoÔôÓóÒòÖöŌōŒœ"],
["ó", "oOôÔóÓòÒöÖōŌœŒ"],
["Ó", "OoÔôÓóÒòÖöŌōŒœ"],
["ò", "oOôÔóÓòÒöÖōŌœŒ"],
["Ò", "OoÔôÓóÒòÖöŌōŒœ"],
["ö", "oOôÔóÓòÒöÖōŌœŒ"],
["Ö", "OoÔôÓóÒòÖöŌōŒœ"],
["œ", "œŒoOôÔeEéÉèÈêÊëË"],
["Œ", "ŒœOoÔôEeÉéÈèÊêËë"],
["p", "pPṕṔ"],
["P", "PpṔṕ"],
["q", "qQcCkK"],
["Q", "QqCcKk"],
["r", "rRŕŔ"],
["R", "RrŔŕ"],
["s", "sScCçÇśŚŝŜ"],
["S", "SsCcÇ猜Ŝŝ"],
["ś", "sScCçÇśŚŝŜ"],
["Ś", "SsCcÇ猜Ŝŝ"],
["ŝ", "sScCçÇśŚŝŜ"],
["Ŝ", "SsCcÇ猜Ŝŝ"],
["t", "tT"],
["T", "Tt"],
["u", "uUûÛùÙüÜúÚūŪ"],
["U", "UuÛûÙùÜüÚúŪū"],
["û", "uUûÛùÙüÜúÚūŪ"],
["Û", "UuÛûÙùÜüÚúŪū"],
["ù", "uUûÛùÙüÜúÚūŪ"],
["Ù", "UuÛûÙùÜüÚúŪū"],
["ü", "uUûÛùÙüÜúÚūŪ"],
["Ü", "UuÛûÙùÜüÚúŪū"],
["ú", "uUûÛùÙüÜúÚūŪ"],
["Ú", "UuÛûÙùÜüÚúŪū"],
["v", "vVwW"],
["V", "VvWw"],
["w", "wWvV"],
["W", "WwVv"],
["x", "xXcCkK"],
["X", "XxCcKk"],
["y", "yYiIîÎÿŸŷŶýÝỳỲȳȲ"],
["Y", "YyIiÎîŸÿŶŷÝýỲỳȲȳ"],
["ÿ", "yYiIîÎÿŸŷŶýÝỳỲȳȲ"],
["Ÿ", "YyIiÎîŸÿŶŷÝýỲỳȲȳ"],
["ŷ", "yYiIîÎÿŸŷŶýÝỳỲȳȲ"],
["Ŷ", "YyIiÎîŸÿŶŷÝýỲỳȲȳ"],
["ý", "yYiIîÎÿŸŷŶýÝỳỲȳȲ"],
["Ý", "YyIiÎîŸÿŶŷÝýỲỳȲȳ"],
["ỳ", "yYiIîÎÿŸŷŶýÝỳỲȳȲ"],
["Ỳ", "YyIiÎîŸÿŶŷÝýỲỳȲȳ"],
["z", "zZsSẑẐźŹ"],
["Z", "ZzSsẐẑŹź"],
]),
d1toX: new Map([
["æ", ["ae",]],
["Æ", ["AE",]],
["b", ["bb",]],
["B", ["BB",]],
["c", ["cc", "ss", "qu", "ch"]],
["C", ["CC", "SS", "QU", "CH"]],
["d", ["dd",]],
["D", ["DD",]],
["é", ["ai", "ei"]],
["É", ["AI", "EI"]],
["f", ["ff", "ph"]],
["F", ["FF", "PH"]],
["g", ["gu", "ge", "gg", "gh"]],
["G", ["GU", "GE", "GG", "GH"]],
["j", ["jj", "dj"]],
["J", ["JJ", "DJ"]],
["k", ["qu", "ck", "ch", "cu", "kk", "kh"]],
["K", ["QU", "CK", "CH", "CU", "KK", "KH"]],
["l", ["ll",]],
["L", ["LL",]],
["m", ["mm", "mn"]],
["M", ["MM", "MN"]],
["n", ["nn", "nm", "mn"]],
["N", ["NN", "NM", "MN"]],
["o", ["au", "eau"]],
["O", ["AU", "EAU"]],
["œ", ["oe", "eu"]],
["Œ", ["OE", "EU"]],
["p", ["pp", "ph"]],
["P", ["PP", "PH"]],
["q", ["qu", "ch", "cq", "ck", "kk"]],
["Q", ["QU", "CH", "CQ", "CK", "KK"]],
["r", ["rr",]],
["R", ["RR",]],
["s", ["ss", "sh"]],
["S", ["SS", "SH"]],
["t", ["tt", "th"]],
["T", ["TT", "TH"]],
["x", ["cc", "ct", "xx"]],
["X", ["CC", "CT", "XX"]],
["z", ["ss", "zh"]],
["Z", ["SS", "ZH"]],
]),
get1toXReplacement: function (cPrev, cCur, cNext) {
if (this.aConsonant.has(cCur) && (this.aConsonant.has(cPrev) || this.aConsonant.has(cNext))) {
return [];
}
return this.d1toX.gl_get(cCur, []);
},
d2toX: new Map([
["am", ["an", "en", "em"]],
["AM", ["AN", "EN", "EM"]],
["an", ["am", "en", "em"]],
["AN", ["AM", "EN", "EM"]],
["au", ["eau", "o", "ô"]],
["AU", ["EAU", "O", "Ô"]],
["em", ["an", "am", "en"]],
["EM", ["AN", "AM", "EN"]],
["en", ["an", "am", "em"]],
["EN", ["AN", "AM", "EM"]],
["ae", ["æ", "é"]],
["AE", ["Æ", "É"]],
["ai", ["ei", "é", "è", "ê", "ë"]],
["AI", ["EI", "É", "È", "Ê", "Ë"]],
["ei", ["ai", "é", "è", "ê", "ë"]],
["EI", ["AI", "É", "È", "Ê", "Ë"]],
["ch", ["sh", "c", "ss"]],
["CH", ["SH", "C", "SS"]],
["ck", ["qu", "q"]],
["CK", ["QU", "Q"]],
["ct", ["x", "cc"]],
["CT", ["X", "CC"]],
["oa", ["oi",]],
["OA", ["OI",]],
["oe", ["œ",]],
["OE", ["Œ",]],
["oi", ["oa", "oie"]],
["OI", ["OA", "OIE"]],
["gg", ["gu",]],
["GG", ["GU",]],
["gu", ["gg",]],
["GU", ["GG",]],
["ph", ["f",]],
["PH", ["F",]],
["qu", ["q", "cq", "ck", "c", "k"]],
["QU", ["Q", "CQ", "CK", "C", "K"]],
["ss", ["c", "ç"]],
["SS", ["C", "Ç"]],
["un", ["ein",]],
["UN", ["EIN",]],
]),
// End of word
dFinal1: new Map([
["a", ["as", "at", "ant", "ah"]],
["A", ["AS", "AT", "ANT", "AH"]],
["c", ["ch", "que"]],
["C", ["CH", "QUE"]],
["e", ["et", "er", "ets", "ée", "ez", "ai", "ais", "ait", "ent", "eh"]],
["E", ["ET", "ER", "ETS", "ÉE", "EZ", "AI", "AIS", "AIT", "ENT", "EH"]],
["é", ["et", "er", "ets", "ée", "ez", "ai", "ais", "ait"]],
["É", ["ET", "ER", "ETS", "ÉE", "EZ", "AI", "AIS", "AIT"]],
["è", ["et", "er", "ets", "ée", "ez", "ai", "ais", "ait"]],
["È", ["ET", "ER", "ETS", "ÉE", "EZ", "AI", "AIS", "AIT"]],
["ê", ["et", "er", "ets", "ée", "ez", "ai", "ais", "ait"]],
["Ê", ["ET", "ER", "ETS", "ÉE", "EZ", "AI", "AIS", "AIT"]],
["ë", ["et", "er", "ets", "ée", "ez", "ai", "ais", "ait"]],
["Ë", ["ET", "ER", "ETS", "ÉE", "EZ", "AI", "AIS", "AIT"]],
["g", ["gh",]],
["G", ["GH",]],
["i", ["is", "it", "ie", "in"]],
["I", ["IS", "IT", "IE", "IN"]],
["k", ["que"]],
["K", ["QUE"]],
["n", ["nt", "nd", "ns", "nh"]],
["N", ["NT", "ND", "NS", "NH"]],
["o", ["aut", "ot", "os"]],
["O", ["AUT", "OT", "OS"]],
["ô", ["aut", "ot", "os"]],
["Ô", ["AUT", "OT", "OS"]],
["ö", ["aut", "ot", "os"]],
["Ö", ["AUT", "OT", "OS"]],
["p", ["ph",]],
["P", ["PH",]],
["s", ["sh",]],
["S", ["SH",]],
["t", ["th",]],
["T", ["TH",]],
["u", ["ut", "us", "uh"]],
["U", ["UT", "US", "UH"]],
]),
dFinal2: new Map([
["ai", ["aient", "ais", "et"]],
["AI", ["AIENT", "AIS", "ET"]],
["an", ["ant", "ent"]],
["AN", ["ANT", "ENT"]],
["en", ["ent", "ant", "ène", "enne"]],
["EN", ["ENT", "ANT", "ÈNE", "ENNE"]],
["ei", ["ait", "ais"]],
["EI", ["AIT", "AIS"]],
["on", ["ons", "ont"]],
["ON", ["ONS", "ONT"]],
["oi", ["ois", "oit", "oix"]],
["OI", ["OIS", "OIT", "OIX"]],
])
};
if (typeof(exports) !== 'undefined') {
exports.aVowel = char_player.aVowel;
exports.aConsonant = char_player.aConsonant;
exports.aDouble = char_player.aDouble;
exports.d1to1 = char_player.d1to1;
exports.d1toX = char_player.d1toX;
exports.get1toXReplacement = char_player.get1toXReplacement;
exports.d2toX = char_player.d2toX;
exports.dFinal1 = char_player.dFinal1;
exports.dFinal2 = char_player.dFinal2;
exports.aPfx1 = char_player.aPfx1;
exports.aPfx2 = char_player.aPfx2;
}