Zuletzt aktiv 3 weeks ago

nuno hat die Gist bearbeitet 3 weeks ago. Zu Änderung gehen

1 file changed, 32 insertions

interpolate(Datei erstellt)

@@ -0,0 +1,32 @@
1 + export function interpolate(
2 + message: string,
3 + username: string,
4 + serverNickname: string | null,
5 + globalNickname: string | null,
6 + aliases: string[]
7 + ): string {
8 + const displayName = serverNickname ?? globalNickname ?? username;
9 + const dt = getNow();
10 +
11 + let result = message
12 + .replace(/\{username\}/g, username)
13 + .replace(/\{server_nickname\}/g, serverNickname ?? displayName)
14 + .replace(/\{nickname\}/g, globalNickname ?? username)
15 + .replace(/\{alias\[random\]\}/g, () =>
16 + aliases.length > 0 ? aliases[Math.floor(Math.random() * aliases.length)] : displayName
17 + )
18 + .replace(/\{alias\[(\d+)\]\}/g, (_, i: string) => aliases[parseInt(i)] ?? displayName)
19 + .replace(/\{alias\}/g, aliases[0] ?? displayName)
20 + .replace(/\{DAY\}/g, dt.dayName.toUpperCase())
21 + .replace(/\{Day\}/g, dt.dayName.charAt(0).toUpperCase() + dt.dayName.slice(1))
22 + .replace(/\{day\}/g, dt.dayName)
23 + .replace(/\{MONTH\}/g, dt.monthName.toUpperCase())
24 + .replace(/\{Month\}/g, dt.monthName.charAt(0).toUpperCase() + dt.monthName.slice(1))
25 + .replace(/\{month\}/g, dt.monthName)
26 + .replace(/\{month_num\}/g, String(dt.monthNum).padStart(2, "0"))
27 + .replace(/\{date_full\}/g, `${String(dt.dayNum).padStart(2,"0")}-${String(dt.monthNum).padStart(2,"0")}-${dt.yearNum}`)
28 + .replace(/\{date\}/g, dt.dateKey)
29 + .replace(/\{day_num\}/g, String(dt.dayNum).padStart(2, "0"));
30 +
31 + return resolveEmojiTokens(result);
32 + }
Neuer Älter