[Libreoffice-commits] core.git: svl/source

Laurent Balland-Poirier laurent.balland-poirier at laposte.net
Tue May 3 12:08:17 UTC 2016


 svl/source/numbers/zformat.cxx |   37 ++++++++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 5 deletions(-)

New commits:
commit 88a79589843efc24f8af99bd511a1fff0f7bebef
Author: Laurent Balland-Poirier <laurent.balland-poirier at 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 <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at 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 == ']')
             {


More information about the Libreoffice-commits mailing list