svl/source/numbers/zformat.cxx | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-)
New commits: commit 88a79589843efc24f8af99bd511a1fff0f7bebef Author: Laurent Balland-Poirier <laurent.balland-poir...@laposte.net> Date: Sun May 1 11:59:45 2016 +0200 tdf#61996 Skip quoted text in number format Quoted text should be detected and skiped before detecting conditions Change-Id: I1c78fed7f543fb335fbb8ec9ed50d9ab9dd10aa7 Reviewed-on: https://gerrit.libreoffice.org/24550 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Eike Rathke <er...@redhat.com> diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index 8da58b5..eebee2a 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -1109,13 +1109,18 @@ SvNumberformat::~SvNumberformat() * ---------------+-------------------+----------------------------+--------------- * Old State | Symbol read | Event | New state * ---------------+-------------------+----------------------------+--------------- - * SsStart | ; | Pos-- | SsGetString + * SsStart | " | Symbol += Character | SsGetQuoted + * | ; | Pos-- | SsGetString * | [ | Symbol += Character | SsGetBracketed * | ] | Error | SsStop * | BLANK | | * | Else | Symbol += Character | SsGetString * ---------------+-------------------+----------------------------+--------------- - * SsGetString | ; | | SsStop + * SsGetString | " | Symbol += Character | SsGetQuoted + * | ; | | SsStop + * | Else | Symbol += Character | + * ---------------+-------------------+----------------------------+--------------- + * SsGetQuoted | " | Symbol += Character | SsGetString * | Else | Symbol += Character | * ---------------+-------------------+----------------------------+--------------- * SsGetBracketed | <, > = | del [ | @@ -1146,7 +1151,8 @@ enum ScanState SsGetString, // format string SsGetPrefix, // color or NatNumN SsGetTime, // [HH] for time - SsGetBracketed // any [...] not decided yet + SsGetBracketed, // any [...] not decided yet + SsGetQuoted // quoted text }; // read a string until ']' and delete spaces in input @@ -1350,7 +1356,12 @@ short SvNumberformat::ImpNextSymbol(OUStringBuffer& rString, switch (eState) { case SsStart: - if (cToken == '[') + if (cToken == '\"') + { + eState = SsGetQuoted; + sBuffSymbol.append(cToken); + } + else if (cToken == '[') { eState = SsGetBracketed; sBuffSymbol.append(cToken); @@ -1478,7 +1489,12 @@ short SvNumberformat::ImpNextSymbol(OUStringBuffer& rString, } break; case SsGetString: - if (cToken == ';' && (nPos < 2 || !IsCombiningSymbol( rString, nPos-2))) + if (cToken == '\"') + { + eState = SsGetQuoted; + sBuffSymbol.append(cToken); + } + else if (cToken == ';' && (nPos < 2 || !IsCombiningSymbol( rString, nPos-2))) { eState = SsStop; } @@ -1487,6 +1503,17 @@ short SvNumberformat::ImpNextSymbol(OUStringBuffer& rString, sBuffSymbol.append(cToken); } break; + case SsGetQuoted: + if (cToken == '\"') + { + eState = SsGetString; + sBuffSymbol.append(cToken); + } + else + { + sBuffSymbol.append(cToken); + } + break; case SsGetTime: if (cToken == ']') { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits