Chat-Transform/src/client/java/io/gitlab/jfronny/chattransform/Cfg.java

143 lines
4.6 KiB
Java
Raw Normal View History

2023-03-18 19:19:00 +01:00
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("-", "");
for (char c : consonants) {
substitutions.put("" + c + c, "" + c);
}
substitutions.put("nn", "");
fromTable(katakanaTable);
}
@Preset
public static void hiragana() {
substitutions.clear();
substitutions.put("-", "");
for (char c : consonants) {
substitutions.put("" + c + c, "" + c);
}
substitutions.put("nn", "");
fromTable(hiraganaTable);
}
}