You've already forked godot
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user