29 lines
885 B
TypeScript
29 lines
885 B
TypeScript
|
export function nyaize(text: string): string {
|
|||
|
return (
|
|||
|
text
|
|||
|
// ja-JP
|
|||
|
.replaceAll("な", "にゃ")
|
|||
|
.replaceAll("ナ", "ニャ")
|
|||
|
.replaceAll("ナ", "ニャ")
|
|||
|
// en-US
|
|||
|
.replace(/(?<=n)a/gi, (x) => (x === "A" ? "YA" : "ya"))
|
|||
|
.replace(/(?<=morn)ing/gi, (x) => (x === "ING" ? "YAN" : "yan"))
|
|||
|
.replace(/(?<=every)one/gi, (x) => (x === "ONE" ? "NYAN" : "nyan"))
|
|||
|
.replace(/non(?=[bcdfghjklmnpqrstvwxyz])/gi, (x) =>
|
|||
|
x === "NON" ? "NYAN" : "nyan",
|
|||
|
)
|
|||
|
// ko-KR
|
|||
|
.replace(/[나-낳]/g, (match) =>
|
|||
|
String.fromCharCode(
|
|||
|
match.charCodeAt(0)! + "냐".charCodeAt(0) - "나".charCodeAt(0),
|
|||
|
),
|
|||
|
)
|
|||
|
.replace(/(다$)|(다(?=\.))|(다(?= ))|(다(?=!))|(다(?=\?))/gm, "다냥")
|
|||
|
.replace(/(야(?=\?))|(야$)|(야(?= ))/gm, "냥")
|
|||
|
// el-GR
|
|||
|
.replaceAll("να", "νια")
|
|||
|
.replaceAll("ΝΑ", "ΝΙΑ")
|
|||
|
.replaceAll("Να", "Νια")
|
|||
|
);
|
|||
|
}
|