svl/source/numbers/zformat.cxx | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-)
New commits: commit 9a2b656dbd4acadcfc144ba8db7c9657c7a72f1f Author: Laurent Balland-Poirier <[email protected]> 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 <[email protected]> Reviewed-by: Eike Rathke <[email protected]> Tested-by: Eike Rathke <[email protected]> (cherry picked from commit 88a79589843efc24f8af99bd511a1fff0f7bebef) Reviewed-on: https://gerrit.libreoffice.org/25453 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index c9f08ad..29402f8 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -1110,13 +1110,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 [ | @@ -1147,7 +1152,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 @@ -1351,7 +1357,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); @@ -1479,7 +1490,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; } @@ -1488,6 +1504,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 [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
