[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - svl/source

Laurent Balland-Poirier laurent.balland-poirier at laposte.net
Wed May 25 15:43:18 UTC 2016


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

New commits:
commit 9a2b656dbd4acadcfc144ba8db7c9657c7a72f1f
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>
    (cherry picked from commit 88a79589843efc24f8af99bd511a1fff0f7bebef)
    Reviewed-on: https://gerrit.libreoffice.org/25453
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

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 == ']')
             {


More information about the Libreoffice-commits mailing list