Преглед на файлове

[config] "option+" in props.json allow adding items to "option" array

Clément Espeute преди 11 месеца
родител
ревизия
2feb3764c8
променени са 1 файла, в които са добавени 17 реда и са изтрити 2 реда
  1. 17 2
      hide/Config.hx

+ 17 - 2
hide/Config.hx

@@ -96,7 +96,14 @@ class Config {
 
 	function mergeRec( dst : Dynamic, src : Dynamic ) {
 		for( f in Reflect.fields(src) ) {
+			var append = false;
+
 			var v : Dynamic = Reflect.field(src,f);
+			if (StringTools.endsWith(f, "+")) {
+				append = true;
+				f = f.substr(0, f.length-1);
+			}
+
 			var t : Dynamic = Reflect.field(dst, f);
 			if( Type.typeof(v) == TObject ) {
 				if( t == null ) {
@@ -106,8 +113,16 @@ class Config {
 				mergeRec(t, v);
 			} else if( v == null )
 				Reflect.deleteField(dst, f);
-			else
-				Reflect.setField(dst,f,v);
+			else {
+				if (append && Type.typeof(v).match(TClass(Array))) {
+					var arr : Array<Dynamic> = cast t ?? [];
+					arr = arr.concat(cast v);
+					Reflect.setField(dst, f, arr);
+
+				} else {
+					Reflect.setField(dst,f,v);
+				}
+			}
 		}
 	}