ツイーヨ変換 ブックマークレット

Twitterにおける「ツイート」→「ツイーヨ」のような変換規則が気になったので、変換するブックマークレットを作ってみました。

f:id:kamocyc:20200801110232g:plain

github.com

下記をブックマークのURLに登録すれば動きます。

javascript:(function(){var d=document;d=d.selection?d.selection.createRange().text:d.getSelection().toString();console.log(d);prompt("Result:",function(e){function g(a){return a.match(/^[\u30a1-\u30f6\u30fc]+$/)?!0:!1}var h=[{from:"\u30d5\u30a9",to:"\u30d2\u30e7",tail:!1},{from:"\u30e9",to:"\u30e4",tail:!1},{from:"\u30eb",to:"\u30e6",tail:!1},{from:"\u30c8",to:"\u30e8",tail:!1},{from:"\u30c9",to:"\u30e8",tail:!1},{from:"\u30ed",to:"\u30e8",tail:!1}],k=h.map(function(a){return a.from}).join("|"),l=new Map(h.map(function(a){return[a.from,a]}));return e.replace(new RegExp("("+k+")","g"),function(a,f,b){f=l.get(a);b+=a.length;var c;if(c=f.tail){--b;c=e.length;if(b>=c)throw Error("Illegal index");c=!(b===c-1||b===c-2&&"\u30fc"===e[c-1]||!g(e[b+1])||"\u30fc"===e[b+1]&&!g(e[b+2]))}return c?a:f.to})}(d))})();

「アンドロイド」 → 「アンヨヨイヨ」、「フォロワー」 → 「ヒョヨワー」などと変換されます。(ラ、ル、ロは変換しすぎかも)

参考にしたのは下記まとめです。 7年前にすでに考えられていたので、たぶん当プログラムと同じようなことをしている人は既にたくさんいると思います。

togetter.com

役立ったページなど