// ==UserScript==
// @name 国立アイヌ民族博物館アイヌ語アーカイブの半角を小書きに
// @namespace http://lit.link/toracatman
// @version 2024-10-23
// @description 「国立アイヌ民族博物館アイヌ語アーカイブ」という サイトの 半角カタカナを 小書きカタカナに します。
// @author トラネコマン
// @match https://ainugo.nam.go.jp/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT
// ==/UserScript==
var flag = "g";
var convert_sign_attr = "data-small";
var convert_sign_value = "true";
var replacement = "\x1a";
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(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;
for (var j = 0; j < c.length; j++) {
s = s.replace(new RegExp(c[j][0], flag), c[j][1]);
}
return s;
}
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);
})();