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 <ci@libreoffice.org> Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
This commit is contained in:
committed by
Eike Rathke
parent
f23c32e4bf
commit
88a7958984
@@ -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 == ']')
|
||||
{
|
||||
|
Reference in New Issue
Block a user