267 lines
9.7 KiB
Java
267 lines
9.7 KiB
Java
package io.gitlab.jfronny.chattransform;
|
||
|
||
import io.gitlab.jfronny.commons.serialize.gson.api.v1.Ignore;
|
||
import io.gitlab.jfronny.libjf.config.api.v1.*;
|
||
|
||
import java.util.LinkedHashMap;
|
||
import java.util.Map;
|
||
|
||
@JfConfig
|
||
public class Cfg {
|
||
@Entry public static Map<String, String> substitutions = new LinkedHashMap<>();
|
||
@Entry public static Mode mode = Mode.Live;
|
||
|
||
public enum Mode {
|
||
Live, OnSend
|
||
}
|
||
|
||
@Preset
|
||
public static void owo() {
|
||
substitutions.clear();
|
||
substitutions.put("r", "w");
|
||
substitutions.put("l", "w");
|
||
substitutions.put("R", "W");
|
||
substitutions.put("L", "W");
|
||
substitutions.put("no", "nu");
|
||
substitutions.put("has", "haz");
|
||
substitutions.put("have", "haz");
|
||
substitutions.put("you", "uu");
|
||
substitutions.put("the ", "da ");
|
||
substitutions.put("The ", "Da ");
|
||
}
|
||
|
||
@Ignore private static final String katakanaTable = """
|
||
a i u e o n
|
||
ア イ ウ エ オ ン
|
||
x ァ ィ ゥ ェ ォ
|
||
k カ キ ク ケ コ
|
||
ky キャ キュ キョ
|
||
s サ ス セ ソ
|
||
sh シャ シ シュ シェ ショ
|
||
t タ ティ ツ テ ト
|
||
ts ツ
|
||
ch チャ チ チュ チェ チョ
|
||
n ナ ニ ヌ ネ ノ
|
||
ny ニャ ニュ ニョ
|
||
h ハ ヒ フ ヘ ホ
|
||
hy ヒャ ヒュ ヒョ
|
||
f ファ フィ フ フェ フォ
|
||
m マ ミ ム メ モ
|
||
my ミャ ミュ ミョ
|
||
y ヤ ユ ヨ
|
||
r ラ リ ル レ ロ
|
||
ry リャ リィ リュ リェ リョ
|
||
w ワ ウィ ウェ ヲ
|
||
g ガ ギ グ ゲ ゴ
|
||
gy ギャ ギュ ギョ
|
||
z ザ ズ ゼ ゾ/ヂョ
|
||
j ジャ/ヂャ ジ/ヂ ジュ/ヂュ ジェ ジョ
|
||
d ダ ヅ デ ド
|
||
b バ ビ ブ ベ ボ
|
||
by ビャ ビュ ビョ
|
||
p パ ピ プ ペ ポ
|
||
py ピャ ピュ ピョ
|
||
v ゔ""";
|
||
|
||
@Ignore private static final String hiraganaTable = """
|
||
a i u e o n
|
||
あ い う え お ん
|
||
x ぁ ぃ ぅ ぇ ぉ
|
||
k か き く け こ
|
||
ky きゃ きゅ きょ
|
||
s さ す せ そ
|
||
sh しゃ し しゅ しょ
|
||
t た つ て と
|
||
ts つ
|
||
ch ちゃ ち ちゅ ちぇ ちょ
|
||
n な に ぬ ね の
|
||
ny にゃ にゅ にょ
|
||
h は ひ ふ へ ほ
|
||
hy ひゃ ひゅ ひょ
|
||
f ふ
|
||
m ま み む め も
|
||
my みゃ みゅ みょ
|
||
y や ゆ よ
|
||
r ら り る れ ろ
|
||
ry りゃ りぃ りゅ りぇ りょ
|
||
w わ ゐ ゑ を
|
||
g が ぎ ぐ げ ご
|
||
gy ぎゃ ぎゅ ぎょ
|
||
z ざ ず ぜ ぞ/ぢょ
|
||
j じゃ/ぢゃ じ/ぢ じゅ/ぢゅ じょ
|
||
d だ づ で ど
|
||
b ば び ぶ べ ぼ
|
||
by びゃ びゅ びょ
|
||
p ぱ ぴ ぷ ぺ ぽ
|
||
py ぴゃ ぴゅ ぴょ
|
||
v ゔ""";
|
||
|
||
@Ignore private static final char[] consonants = "bcdfghjklmprstwz".toCharArray();
|
||
|
||
private static void fromTable(String table) {
|
||
String[] rows = table.split("\n");
|
||
String[] colNames = rows[0].split("\t");
|
||
for (int i = 1; i < rows.length; i++) {
|
||
String row = rows[i];
|
||
String[] cols = row.split("\t");
|
||
String rowName = cols[0];
|
||
for (int j = 1; j < cols.length; j++) {
|
||
String kana = cols[j];
|
||
String value = rowName + colNames[j];
|
||
String[] kanas = kana.split("/");
|
||
for (String singleKana : kanas) {
|
||
if (!singleKana.isEmpty()) {
|
||
substitutions.put(value, singleKana);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
@Preset
|
||
public static void katakana() {
|
||
substitutions.clear();
|
||
substitutions.put("-", "ー");
|
||
// replaceTsus ッ
|
||
for (char c : consonants) {
|
||
substitutions.put("" + c + c, "ッ" + c);
|
||
}
|
||
// replaceNs ン
|
||
substitutions.put("nn", "ン");
|
||
// romajiToKatakanaTrie.convert
|
||
fromTable(katakanaTable);
|
||
// substitutions.put("che", "チェ");
|
||
// substitutions.put(".", "。");
|
||
// substitutions.put("shu", "シュ");
|
||
// substitutions.put("sha", "シャ");
|
||
// substitutions.put("\"", "「");
|
||
// substitutions.put("\"", "」");
|
||
// substitutions.put("sho", "ショ");
|
||
// substitutions.put("jo", "ジョ");
|
||
// substitutions.put("ⅴi", "ヴィ");
|
||
// substitutions.put("ju", "ジュ");
|
||
// substitutions.put("ja", "ジャ");
|
||
// substitutions.put("ve", "ヴェ");
|
||
// substitutions.put("ryo", "リョ");
|
||
// substitutions.put("ryu", "リュ");
|
||
// substitutions.put("rya", "リャ");
|
||
// substitutions.put("cho", "チョ");
|
||
// substitutions.put("chu", "チュ");
|
||
// substitutions.put("cha", "チャ");
|
||
// substitutions.put("hyo", "ヒョ");
|
||
// substitutions.put("hyu", "ヒュ");
|
||
// substitutions.put("hya", "ヒャ");
|
||
// substitutions.put("tsi", "ツィ");
|
||
// substitutions.put("dyo", "ヂョ");
|
||
// substitutions.put("dyu", "ヂュ");
|
||
// substitutions.put("dya", "ヂャ");
|
||
// substitutions.put("fi", "フィ");
|
||
// substitutions.put("byo", "ビョ");
|
||
// substitutions.put("byu", "ビュ");
|
||
// substitutions.put("fe", "フェ");
|
||
// substitutions.put("bya", "ビャ");
|
||
// substitutions.put("nyo", "ニョ");
|
||
// substitutions.put("nyu", "ニュ");
|
||
// substitutions.put("nya", "ニャ");
|
||
// substitutions.put("pya", "ピャ");
|
||
// substitutions.put("pyo", "ピョ");
|
||
// substitutions.put("pyu", "ピュ");
|
||
// substitutions.put("ti", "ティ");
|
||
// substitutions.put("a", "ア");
|
||
// substitutions.put("i", "イ");
|
||
// substitutions.put("u", "ウ");
|
||
// substitutions.put("e", "エ");
|
||
// substitutions.put("o", "オ");
|
||
// substitutions.put("ka", "カ");
|
||
// substitutions.put("ga", "ガ");
|
||
// substitutions.put("ki", "キ");
|
||
// substitutions.put("gi", "ギ");
|
||
// substitutions.put("ku", "ク");
|
||
// substitutions.put("gu", "グ");
|
||
// substitutions.put("ke", "ケ");
|
||
// substitutions.put("ge", "ゲ");
|
||
// substitutions.put("ko", "コ");
|
||
// substitutions.put("go", "ゴ");
|
||
// substitutions.put("sa", "サ");
|
||
// substitutions.put("za", "ザ");
|
||
// substitutions.put("shi", "シ");
|
||
// substitutions.put("ji", "ジ");
|
||
// substitutions.put("su", "ス");
|
||
// substitutions.put("zu", "ズ");
|
||
// substitutions.put("di", "ディ");
|
||
// substitutions.put("se", "セ");
|
||
// substitutions.put("wi", "ウィ");
|
||
// substitutions.put("ze", "ゼ");
|
||
// substitutions.put("so", "ソ");
|
||
// substitutions.put("zo", "ゾ");
|
||
// substitutions.put("ta", "タ");
|
||
// substitutions.put("da", "ダ");
|
||
// substitutions.put("chi", "チ");
|
||
// substitutions.put("ji", "ヂ");
|
||
// substitutions.put("tsu", "ツ");
|
||
// substitutions.put("zu", "ヅ");
|
||
// substitutions.put("te", "テ");
|
||
// substitutions.put("de", "デ");
|
||
// substitutions.put("we", "ウェ");
|
||
// substitutions.put("to", "ト");
|
||
// substitutions.put("do", "ド");
|
||
// substitutions.put("na", "ナ");
|
||
// substitutions.put("ni", "ニ");
|
||
// substitutions.put("nu", "ヌ");
|
||
// substitutions.put("ne", "ネ");
|
||
// substitutions.put("no", "ノ");
|
||
// substitutions.put("ha", "ハ");
|
||
// substitutions.put("ba", "バ");
|
||
// substitutions.put("kya", "キャ");
|
||
// substitutions.put("pa", "パ");
|
||
// substitutions.put("hi", "ヒ");
|
||
// substitutions.put("bi", "ビ");
|
||
// substitutions.put("pi", "ピ");
|
||
// substitutions.put("fu", "フ");
|
||
// substitutions.put("bu", "ブ");
|
||
// substitutions.put("pu", "プ");
|
||
// substitutions.put("he", "ヘ");
|
||
// substitutions.put("be", "ベ");
|
||
// substitutions.put("pe", "ペ");
|
||
// substitutions.put("ho", "ホ");
|
||
// substitutions.put("bo", "ボ");
|
||
// substitutions.put("kyo", "キョ");
|
||
// substitutions.put("po", "ポ");
|
||
// substitutions.put("ma", "マ");
|
||
// substitutions.put("kyu", "キュ");
|
||
// substitutions.put("mi", "ミ");
|
||
// substitutions.put("mu", "ム");
|
||
// substitutions.put("me", "メ");
|
||
// substitutions.put("mo", "モ");
|
||
// substitutions.put("ya", "ヤ");
|
||
// substitutions.put("yu", "ユ");
|
||
// substitutions.put("yo", "ヨ");
|
||
// substitutions.put("ra", "ラ");
|
||
// substitutions.put("ri", "リ");
|
||
// substitutions.put("ru", "ル");
|
||
// substitutions.put("re", "レ");
|
||
// substitutions.put("ro", "ロ");
|
||
// substitutions.put("wa", "ワ");
|
||
// substitutions.put("gyu", "ギュ");
|
||
// substitutions.put("wo", "ヲ");
|
||
// substitutions.put("n", "ン");
|
||
// substitutions.put("gya", "ギャ");
|
||
// substitutions.put("-", "ー");
|
||
// substitutions.put("gyo", "ギョ");
|
||
}
|
||
|
||
@Preset
|
||
public static void hiragana() {
|
||
substitutions.clear();
|
||
substitutions.put("-", "ー");
|
||
// replaceTsus っ
|
||
for (char c : consonants) {
|
||
substitutions.put("" + c + c, "っ" + c);
|
||
}
|
||
// replaceNs ん
|
||
substitutions.put("nn", "ん");
|
||
// romajiToKatakanaTrie.convert
|
||
fromTable(hiraganaTable);
|
||
}
|
||
}
|