From 362716bb7f669eb7e85e658e52bec7c6a82676a2 Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Sat, 2 Mar 2024 17:14:59 +0100
Subject: [PATCH] feat: #162

---
 source/data/transformer.mjs | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/source/data/transformer.mjs b/source/data/transformer.mjs
index 434c425f7..9580e33a1 100644
--- a/source/data/transformer.mjs
+++ b/source/data/transformer.mjs
@@ -775,7 +775,39 @@ function transform(value) {
 			defaultValue = convertSpecialStrings(defaultValue, value);
 
 			return translations.getText(key, defaultValue);
-
+	
+		case "set-toggle":
+		case "set-set":
+		case "set-remove":
+			 let modifier = args.shift();
+			let delimiter = args.shift();
+			if (delimiter === undefined) {
+				delimiter = " ";
+			}
+			
+			const set = new Set(value.split(delimiter));
+			const toggle = new Set(modifier.split(delimiter));
+			if (this.command === "set-toggle") {
+				for (const t of toggle) {
+					if (set.has(t)) {
+						set.delete(t);
+					} else {
+						set.add(t);
+					}
+				}
+			} else if (this.command === "set-set") {
+				for (const t of toggle) {
+					set.add(t);
+				}
+			} else if (this.command === "set-remove") {
+				for (const t of toggle) {
+					set.delete(t);
+				}
+			}
+			return Array.from(set).join(delimiter);
+			
+			
+			
 		default:
 			throw new Error(`unknown command ${this.command}`);
 	}
-- 
GitLab