国立アイヌ民族博物館アイヌ語アーカイブの半角を小書きに

「国立アイヌ民族博物館アイヌ語アーカイブ」という サイトの 半角カタカナを 小書きカタカナに します。

// ==UserScript==
// @name         国立アイヌ民族博物館アイヌ語アーカイブの半角を小書きに
// @namespace    http://lit.link/toracatman
// @version      2024-04-08
// @description  「国立アイヌ民族博物館アイヌ語アーカイブ」という サイトの 半角カタカナを 小書きカタカナに します。
// @author       トラネコマン
// @match        https://ainugo.nam.go.jp/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      MIT
// ==/UserScript==

var c = [
    ["ク", "ㇰ"],
    ["シ", "ㇱ"],
    ["ス", "ㇲ"],
    ["ト", "ㇳ"],
    ["ヌ", "ㇴ"],
    ["ハ", "ㇵ"],
    ["ヒ", "ㇶ"],
    ["プ", "ㇷ゚"],
    ["フ", "ㇷ"],
    ["ヘ", "ㇸ"],
    ["ホ", "ㇹ"],
    ["ム", "ㇺ"],
    ["ラ", "ㇻ"],
    ["リ", "ㇼ"],
    ["ル", "ㇽ"],
    ["レ", "ㇾ"],
    ["ロ", "ㇿ"],
];

(function() {
    setInterval(() => {
        var a = document.querySelectorAll("dd,dd *,.kana,.word,.ainu,.ainu *");
        if (a == null) return;
        for (var i = 0; i < a.length; i++) {
            if (a[i].getAttribute("data-small") == "true") continue;
            a[i].setAttribute("data-small", "true");

			if (!(a[i].hasChildNodes())) continue;
            if (a[i].childElementCount == 0) {
                var s = a[i].textContent;

                for (var j = 0; j < c.length; j++) {
                    s = s.replace(new RegExp(c[j][0], "gu"), c[j][1]);
                }

                a[i].textContent = s;
            }
            else {
                var t = a[i];
                var p = document.createTextNode("");
                t.replaceWith(p);
                var f = document.createDocumentFragment();
                f.appendChild(t);
                var r = document.createDocumentFragment();
                var e = t.firstElementChild;
                while (e != null) {
                    e.replaceWith(document.createTextNode("\x1a"));
                    r.appendChild(e);
                    e = t.firstElementChild;
                }
                var s = t.textContent;

                for (var j = 0; j < c.length; j++) {
                    s = s.replace(new RegExp(c[j][0], "gu"), c[j][1]);
                }

                var ss = s.split("\x1a");
                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(f);
            }
        }
    }, 100);
})();