1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Add Object support for String.format

This commit is contained in:
Mansur Isaev
2022-09-16 14:12:27 +04:00
committed by kobewi
parent 748f4079e3
commit 98c89f17c4
2 changed files with 19 additions and 2 deletions

View File

@@ -33,6 +33,7 @@
#include "core/crypto/crypto_core.h"
#include "core/math/color.h"
#include "core/math/math_funcs.h"
#include "core/object/object.h"
#include "core/os/memory.h"
#include "core/string/print_string.h"
#include "core/string/string_name.h"
@@ -4064,8 +4065,18 @@ String String::format(const Variant &values, const String &placeholder) const {
for (const Variant &key : keys) {
new_string = new_string.replace(placeholder.replace("_", key), d[key]);
}
} else if (values.get_type() == Variant::OBJECT) {
Object *obj = values.get_validated_object();
ERR_FAIL_NULL_V(obj, new_string);
List<PropertyInfo> props;
obj->get_property_list(&props);
for (const PropertyInfo &E : props) {
new_string = new_string.replace(placeholder.replace("_", E.name), obj->get(E.name));
}
} else {
ERR_PRINT(String("Invalid type: use Array or Dictionary.").ascii().get_data());
ERR_PRINT(String("Invalid type: use Array, Dictionary or Object.").ascii().get_data());
}
return new_string;