fix
This commit is contained in:
@@ -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<String> = s.substr(1).split(":");
|
||||
var e:Enum<Dynamic> = Type.resolveEnum(a[0]);
|
||||
value = Type.createEnum(e, a[1]);
|
||||
} else if (c == "@") {
|
||||
if (s.charAt(1) == "~") {
|
||||
var a:Array<String> = s.substr(2).split(":");
|
||||
value = Assets.getBitmapData(a[1]);
|
||||
} else {
|
||||
var a:Array<String> = 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<String> = Reflect.fields(data);
|
||||
for (field in fields) {
|
||||
|
||||
Reference in New Issue
Block a user