summaryrefslogtreecommitdiffstats
path: root/core/string/ustring.cpp
diff options
context:
space:
mode:
authorHaoyu Qiu <timothyqiu32@gmail.com>2021-12-15 23:01:06 +0800
committerHaoyu Qiu <timothyqiu32@gmail.com>2021-12-16 17:49:22 +0800
commite4e4e475f8f1a1d8b82ef7ad636da8536e8c6554 (patch)
tree584197a87c47a265d71a97df3fcd69d8e5a57783 /core/string/ustring.cpp
parentedd3ca45016a4ee8cc5f7c1108e1c71bfa2a86ab (diff)
downloadredot-engine-e4e4e475f8f1a1d8b82ef7ad636da8536e8c6554.tar.gz
Make `--doctool` locale aware
* Adds `indent(str)` to `String`: * Indent the (multiline) string with the given indentation. * This method is added in order to keep the translated XML correctly indented. * Moves the loading of tool/doc translation into `editor/editor_translation.{h,cpp}`. * This will be used from both `EditorSettings` and the doc tool from `main`. * Makes use of doc translation when generating XML class references, and setup the translation locale based on `-l LOCALE` CLI parameter. The XML class reference won't be translated if `-l LOCALE` parameter is not given, or when it's `-l en`.
Diffstat (limited to 'core/string/ustring.cpp')
-rw-r--r--core/string/ustring.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp
index ac8e2ece12..779270fe47 100644
--- a/core/string/ustring.cpp
+++ b/core/string/ustring.cpp
@@ -3507,6 +3507,27 @@ char32_t String::unicode_at(int p_idx) const {
return operator[](p_idx);
}
+String String::indent(const String &p_prefix) const {
+ String new_string;
+ int line_start = 0;
+
+ for (int i = 0; i < length(); i++) {
+ const char32_t c = operator[](i);
+ if (c == '\n') {
+ if (i == line_start) {
+ new_string += c; // Leave empty lines empty.
+ } else {
+ new_string += p_prefix + substr(line_start, i - line_start + 1);
+ }
+ line_start = i + 1;
+ }
+ }
+ if (line_start != length()) {
+ new_string += p_prefix + substr(line_start);
+ }
+ return new_string;
+}
+
String String::dedent() const {
String new_string;
String indent;