Greasy Fork

アイヌ語版ウィキペディアの文字変換

アイヌ語版ウィキペディアの文字変換をします。

目前为 2024-10-23 提交的版本。查看 最新版本

// ==UserScript==
// @name         アイヌ語版ウィキペディアの文字変換
// @namespace    http://lit.link/toracatman
// @version      2024-10-23
// @description  アイヌ語版ウィキペディアの文字変換をします。
// @author       トラネコマン
// @match        https://incubator.wikimedia.org/*Wp/ain*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      MIT
// ==/UserScript==

var char = "kana"; //kana=カタカナ、cyrillic=キリル文字

var convert_sign_attr = "data-convert";
var convert_sign_value = "true";
var separate = " | ";
var replacement = "\x1a";

var flag;
var c;
if (char == "kana") {
    flag = "ig";
    c = [
        ["á", "a"],		["í", "i"],			["ú", "u"],		["é", "e"],		["ó", "o"],
        ["(\\w)-(\\w)", "$1$2"],	["(\\w)=(\\w)", "$1$2"],
        [", ?", "、"],	["\\. ?", "。"],	[" ", " "],
        ["ah", "aㇵ"],	["ih", "iㇶ"],		["uh", "uㇷ"],	["eh", "eㇸ"],	["oh", "oㇹ"],
        ["ar", "aㇻ"],	["ir", "iㇼ"],		["ur", "uㇽ"],	["er", "eㇾ"],	["or", "oㇿ"],
        ["[hㇵ-ㇹ](?=h)", "ッ"],
        ["[hㇵ-ㇹ]a", "ハ"],
        ["[hㇵ-ㇹ]i", "ヒ"],
        ["[hㇵ-ㇹ]u", "フ"],
        ["[hㇵ-ㇹ]e", "ヘ"],
        ["[hㇵ-ㇹ]o", "ホ"],
        ["[rㇻ-ㇿ](?=r)", "ッ"],
        ["[rㇻ-ㇿ]a", "ラ"],
        ["[rㇻ-ㇿ]i", "リ"],
        ["[rㇻ-ㇿ]u", "ル"],
        ["[rㇻ-ㇿ]e", "レ"],
        ["[rㇻ-ㇿ]o", "ロ"],
        ["k(?=k)", "ッ"],	["ka", "カ"],	["ki", "キ"],	["ku", "ク"],	["ke", "ケ"],	["ko", "コ"],	["k", "ㇰ"],
        ["s(?=s)", "ッ"],	["sa", "サ"],	["si", "シ"],	["su", "ス"],	["se", "セ"],	["so", "ソ"],	["s", "ㇱ"],
        ["ta", "タ"],						["tu", "トゥ"],	["te", "テ"],	["to", "ト"],	["t", "ッ"],
        ["ca", "チャ"],	["cu", "チュ"],		["ce", "チェ"],	["co", "チョ"],	["ci", "チ"],
        ["na", "ナ"],	["ni", "ニ"],		["nu", "ヌ"],	["ne", "ネ"],	["no", "ノ"],	["n", "ン"],
        ["m(p|m)", "ン$1"],
        ["p(?=p)", "ッ"],	["pa", "パ"],	["pi", "ピ"],	["pu", "プ"],	["pe", "ペ"],	["po", "ポ"],	["p", "ㇷ゚"],
        ["ma", "マ"],	["mi", "ミ"],		["mu", "ム"],	["me", "メ"],	["mo", "モ"],	["m", "ㇺ"],
        ["ya", "ヤ"],						["yu", "ユ"],	["ye", "イェ"],	["yo", "ヨ"],	["y", "イ"],
        ["wa", "ワ"],										["we", "ウェ"],	["wo", "ウォ"],	["w", "ウ"],
        ["a", "ア"],	["i", "イ"],		["u", "ウ"],	["e", "エ"],	["o", "オ"]
    ];
}
else if (char == "cyrillic") {
    flag = "g";
    c = [
        ["Á", "Á"], ["á", "á"],
        ["Í", "Í"], ["í", "í"],
        ["Ú", "Ú"], ["ú", "ú"],
        ["É", "É"], ["é", "é"],
        ["Ó", "Ó"], ["ó", "ó"],
        ["Y(A|a)", "Я"], ["y(A|a)", "я"],
        ["Y(U|u)", "Ю"], ["y(U|u)", "ю"],
        ["Y(E|e)", "Е"], ["y(E|e)", "е"],
        ["Y(O|o)", "Ё"], ["y(O|o)", "ё"],
        ["Y", "Й"], ["y", "й"],
        ["A", "А"], ["a", "а"],
        ["I", "И"], ["i", "и"],
        ["U", "У"], ["u", "у"],
        ["E", "Э"], ["e", "э"],
        ["O", "О"], ["o", "о"],
        ["K", "К"], ["k", "к"],
        ["S", "С"], ["s", "с"],
        ["S", "Ш"], ["s", "ш"],
        ["T", "Т"], ["t", "т"],
        ["C", "Ч"], ["c", "ч"],
        ["C", "Ц"], ["c", "ц"],
        ["N", "Н"], ["n", "н"],
        ["H", "Х"], ["h", "х"],
        ["H", "Һ"], ["h", "һ"],
        ["P", "П"], ["p", "п"],
        ["M", "М"], ["m", "м"],
        ["R", "Р"], ["r", "р"],
        ["W", "Ў"], ["w", "ў"]
    ];
}

(function() {
    setInterval(() => {
        var a;
        a = document.querySelectorAll('style,.mw-parser-output [lang]:not([lang^="ain"]),.mw-parser-output [lang]:not([lang^="ain"]) *,.mw-editsection *,.external');
        if (a != null) {
            for (var i = 0; i < a.length; i++) {
                if (a[i].getAttribute(convert_sign_attr) == convert_sign_value) continue;
                a[i].setAttribute(convert_sign_attr, convert_sign_value);
            }
        }

        a = document.querySelectorAll('.mw-parser-output *,#mw-panel-toc-list :nth-child(n+2) *,#firstHeading *,#catlinks ul *,.mw-prefixindex-list *,.mw-allpages-chunk *,.mw-category *');
        if (a == null) return;
        for (var i = 0; i < a.length; i++) {
            if (a[i].getAttribute(convert_sign_attr) == convert_sign_value) continue;
            a[i].setAttribute(convert_sign_attr, convert_sign_value);

            if (!(a[i].hasChildNodes())) continue;
            var h = (b) => {
                var s = b.split(separate);
                for (var j = 0; j < c.length; j++) {
                    s[0] = s[0].replace(new RegExp(c[j][0], flag), c[j][1]);
                }
                return s.join(separate);
            }
            if (a[i].childElementCount == 0) {
                a[i].textContent = h(a[i].textContent);
            }
            else {
                var t = a[i];
                var p = document.createTextNode("");
                t.replaceWith(p);
                var r = document.createDocumentFragment();
                var e = t.firstElementChild;
                while (e != null) {
                    e.replaceWith(document.createTextNode(replacement));
                    r.appendChild(e);
                    e = t.firstElementChild;
                }
                var ss = h(t.textContent).split(replacement);
                t.textContent = "";
                t.appendChild(document.createTextNode(ss[0]));
                for (var j = 1; j < ss.length; j++) {
                    t.appendChild(r.firstElementChild);
                    t.appendChild(document.createTextNode(ss[j]));
                }
                p.replaceWith(t);
            }
        }
    }, 100);
})();