This commit is contained in:
2014-02-20 11:47:19 +04:00
parent 2b19e5ef1c
commit 10ac32af62

View File

@@ -56,6 +56,8 @@ class GuiB {
var object:Dynamic = instance(type); var object:Dynamic = instance(type);
new GuiF(object, data, links).fill(); new GuiF(object, data, links).fill();
return object; return object;
} else if (Std.is(data, String)) {
return GuiF.convertString(data, links);
} else { } else {
new GuiF(data, data, links).fill(); new GuiF(data, data, links).fill();
return data; return data;
@@ -82,6 +84,29 @@ class GuiF {
this.links = links; 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() { public function fill() {
var fields:Array<String> = Reflect.fields(data); var fields:Array<String> = Reflect.fields(data);
for (field in fields) { for (field in fields) {