36491: Multibyte support for parameter expansion flags B,E,N

This commit is contained in:
Jun-ichi Takimoto 2015-09-12 20:35:56 +09:00
parent c76f4f96a6
commit 8b1676e3b7
3 changed files with 23 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2015-09-12 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
* 36491: Src/glob.c, Test/D07multibyte.ztst: Multibyte
support for the parameter expansion flags B, E and N.
2015-09-11 Daniel Shahaf <d.s@daniel.shahaf.name>
* 36443: Doc/Zsh/zle.yo Src/Zle/zle_refresh.c: Set

View file

@ -2491,17 +2491,17 @@ get_match_ret(char *s, int b, int e, int fl, char *replstr,
ll += 1 + (l - (e - b));
if (fl & SUB_BIND) {
/* position of start of matched portion */
sprintf(buf, "%d ", b + 1);
sprintf(buf, "%d ", MB_METASTRLEN2END(s, 0, s+b) + 1);
ll += (bl = strlen(buf));
}
if (fl & SUB_EIND) {
/* position of end of matched portion */
sprintf(buf + bl, "%d ", e + 1);
sprintf(buf + bl, "%d ", MB_METASTRLEN2END(s, 0, s+e) + 1);
ll += (bl = strlen(buf));
}
if (fl & SUB_LEN) {
/* length of matched portion */
sprintf(buf + bl, "%d ", e - b);
sprintf(buf + bl, "%d ", MB_METASTRLEN2END(s+b, 0, s+e));
ll += (bl = strlen(buf));
}
if (bl)

View file

@ -293,6 +293,21 @@
>Ἐν ἀρχῇ ἦν ὁ λόγος, καὶ ὁ λόγος ἦν πρὸς τὸν θεόν, καὶ ἦν ὁ λόγος
>Ἐν ἀρχῇ ἦν ὁ λόγος, καὶ ὁ λόγος ἦν πρὸς τὸν θεόν, καὶ
a="1ë34ë6"
print ${(BEN)a#*4}
print ${(BEN)a##*ë}
print ${(BEN)a%4*}
print ${(BEN)a%%ë*}
print ${(SBEN)a#ë3}
print ${(SBEN)a%4ë}
0:Flags B, E, N and S in ${...#...} and ${...%...}
>1 5 4
>1 6 5
>4 7 3
>2 7 5
>2 4 2
>4 6 2
foo=(κατέβην χθὲς εἰς Πειραιᾶ)
print ${(l.3..¥.r.3..£.)foo}
print ${(l.4..¥.r.2..£.)foo}