replace_personal(): Grossschreibung am Stringanfang
Wenn der Ersetzungsstring am Anfang des Strings ist,
sollte er gross geschrieben werden, falls <caps>
wahr ist. (#21994)
Change-Id: Ie953f7258cfb4f5e3a578c61ffa8433d99301b41
diff --git a/secure/simul_efun/simul_efun.c b/secure/simul_efun/simul_efun.c
index 84e0b78..f27bdea 100644
--- a/secure/simul_efun/simul_efun.c
+++ b/secure/simul_efun/simul_efun.c
@@ -1810,7 +1810,8 @@
parts = regexplode(str, "@WE[A-SU]*[0-9]");
i = sizeof(parts);
- if (i>1) {
+ if (i>1)
+ {
int j, t;
closure *name_cls;
@@ -1823,7 +1824,8 @@
else if (stringp(obs[j]))
name_cls[j] = obs[j];
- while ((i-= 2)>0) {
+ while ((i-= 2)>0)
+ {
int ob_nr;
// zu ersetzendes Token in Fall und Objektindex aufspalten
ob_nr = parts[i][<1]-'1';
@@ -1889,28 +1891,37 @@
default:
continue;
}
-
+
// wenn tmp ein String war, weisen wir es hier pauschal zu
if (stringp(tmp))
parts[i] = tmp;
// auf Wunsch wird nach Satzenden gross geschrieben
if (caps)
- switch (parts[i-1][<2..]) {
- case ". ": case "! ": case "? ":
- case ".": case "!": case "?":
- case ".\n": case "!\n": case "?\n":
- case "\" ": case "\"\n":
+ {
+ // Wenn das vorhergehende parts[i] == "" ist, sind wir am Anfang vom
+ // String und dies wird wie ein Satzende vorher behandelt.
+ if (parts[i-1] == "")
parts[i] = capitalize(parts[i]);
- break;
+ else
+ {
+ switch (parts[i-1][<2..])
+ {
+ case ". ": case "! ": case "? ":
+ case ".": case "!": case "?":
+ case ".\n": case "!\n": case "?\n":
+ case "\" ": case "\"\n":
+ parts[i] = capitalize(parts[i]);
+ break;
+ }
}
+ }
}
return implode(parts, "");
}
return str;
}
-
//replacements for dropped efuns in LD
#if !__EFUN_DEFINED__(extract)
deprecated varargs string extract(string str, int from, int to) {