LINUX.ORG.RU

История изменений

Исправление Nervous, (текущая версия) :

Подержи-ка мой смузи.

const mapping = {
    anonymous: "Анонимус",
    Deleted: "Удаленный",
    Zhbert: "Жберт",
    "Vsevolod-linuxoid": "Всеволод",
    maxcom: "Админ",
    leave: "leave",
    cocucka: "Сосиска",
    zh:"ж", ZH:"Ж", Zh:"Ж", ch: "ч", CH: "Ч", Ch: "Ч", sh: "ш", SH: "Ш", Sh: "Ш",
    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: "З"
};

const retranslit = (string, mapping) => {
    let result = string;
    for (let key of Object.keys(mapping)) {
        const keyRegex = new RegExp(key, 'g');
        result = result.replace(keyRegex, mapping[key], 'g');
    }
    return result;
}

// tests

["ppppp", "maxcom", "alpha", "Zhbert", "zhbert", "Nervous", "NeRvOuS"].forEach(name => {
    console.log("%s: %s", name, retranslit(name, mapping));
});
ppppp: ппппп
maxcom: Админ
alpha: алпха
Zhbert: Жберт
zhbert: жберт
Nervous: Нервоус
NeRvOuS: НеРвОуС

Тупо в лоб, работает, но медленно. Но работает.

Исходная версия Nervous, :

Подержи-ка мой смузи.

const mapping = {
    anonymous: "Анонимус",
    Deleted: "Удаленный",
    Zhbert: "Жберт",
    "Vsevolod-linuxoid": "Всеволод",
    maxcom: "Админ",
    leave: "leave",
    cocucka: "Сосиска",
    zh:"ж", ZH:"Ж", Zh:"Ж", ch: "ч", CH: "Ч", Ch: "Ч", sh: "ш", SH: "Ш", Sh: "Ш",
    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: "З"
};

const retranslit = (string, mapping) => {
    let result = string;
    for (let key of Object.keys(mapping)) {
        const keyRegex = new RegExp(key, 'g');
        result = result.replace(keyRegex, mapping[key], 'g');
    }
    return result;
}

// tests

["ppppp", "maxcom", "alpha", "Zhbert", "zhbert", "Nervous", "NeRvOuS"].forEach(name => {
    console.log("%s: %s", name, retranslit(name, mapping));
});

Тупо в лоб, работает, но медленно. Но работает.