From 8d3d1232660a5442a5a3ac6a185485f39fed14dd Mon Sep 17 00:00:00 2001 From: Joseph Cloutier Date: Thu, 21 Dec 2023 17:18:54 -0500 Subject: [PATCH] Add `unique` parameter to `ConfigData.push()`. --- src/lime/tools/ConfigData.hx | 15 ++++++++++----- src/lime/tools/ProjectXMLParser.hx | 17 ++--------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/lime/tools/ConfigData.hx b/src/lime/tools/ConfigData.hx index b6cafa33b..8e8ab7d12 100644 --- a/src/lime/tools/ConfigData.hx +++ b/src/lime/tools/ConfigData.hx @@ -373,7 +373,7 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic } } - public function push(id:String, value:Dynamic):Void + public function push(id:String, value:Dynamic, ?unique:Bool = false):Void { var tree = id.split("."); var current = this; @@ -399,13 +399,18 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic if (Reflect.hasField(current, field)) { - if (!Reflect.hasField(current, field + ARRAY)) + var array:Array = Reflect.field(current, field + ARRAY); + + if (array == null) { - Reflect.setField(current, field + ARRAY, Reflect.hasField(current, field) ? [ObjectTools.deepCopy(Reflect.field(current, field))] : []); + array = [ObjectTools.deepCopy(Reflect.field(current, field))]; + Reflect.setField(current, field + ARRAY, array); } - var array:Array = Reflect.field(current, field + ARRAY); - array.push(value); + if (array.indexOf(value) == -1) + { + array.push(value); + } } Reflect.setField(current, field, value); diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index 6f6bc7dc1..611b4c6a7 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -1797,21 +1797,8 @@ class ProjectXMLParser extends HXProject case "install-location": config.set("android.install-location", value); - case "extension": - var extensions = config.getArrayString("android.extension"); - - if (extensions == null || extensions.indexOf(value) == -1) - { - config.push("android.extension", value); - } - - case "permission": - var permissions = config.getArrayString("android.permission"); - - if (permissions == null || permissions.indexOf(value) == -1) - { - config.push("android.permission", value); - } + case "extension", "permission": + config.push("android." + name, value, true); case "gradle-version": config.set("android.gradle-version", value);