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