From 10ac32af626230750c253e0b86fe2ad3e912b653 Mon Sep 17 00:00:00 2001 From: shmyga Date: Thu, 20 Feb 2014 11:47:19 +0400 Subject: [PATCH] fix --- haxework/gui/GuiBuilder.hx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/haxework/gui/GuiBuilder.hx b/haxework/gui/GuiBuilder.hx index 475768f..34b637b 100755 --- a/haxework/gui/GuiBuilder.hx +++ b/haxework/gui/GuiBuilder.hx @@ -56,6 +56,8 @@ class GuiB { var object:Dynamic = instance(type); new GuiF(object, data, links).fill(); return object; + } else if (Std.is(data, String)) { + return GuiF.convertString(data, links); } else { new GuiF(data, data, links).fill(); return data; @@ -82,6 +84,29 @@ class GuiF { this.links = links; } + public static function convertString(value:Dynamic, ?links:Dynamic):Dynamic { + var s:String = cast(value, String); + var c:String = s.charAt(0); + if (c == "#") { + value = Reflect.field(links, s.substr(1)); + } else if (c == "~") { + var a:Array = s.substr(1).split(":"); + var e:Enum = Type.resolveEnum(a[0]); + value = Type.createEnum(e, a[1]); + } else if (c == "@") { + if (s.charAt(1) == "~") { + var a:Array = s.substr(2).split(":"); + value = Assets.getBitmapData(a[1]); + } else { + var a:Array = s.substr(1).split(":"); + value = Reflect.field(Provider.get(IResources), a[0]).get(a[1]); + } + } else if (~/0x[A-Fa-f\d]{6}/.match(value)) { + value = Std.parseInt(value); + } + return value; + } + public function fill() { var fields:Array = Reflect.fields(data); for (field in fields) {