Cleaning up some XFA locale related code

This CL removes some unused locale related code and formats other bits.

Change-Id: I172fc16a634a8982c00bfaf84fdcd4cd277eb36d
Reviewed-on: https://pdfium-review.googlesource.com/6077
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fgas/crt/cfgas_formatstring.cpp b/xfa/fgas/crt/cfgas_formatstring.cpp
index 30dba7b..aa8f53a 100644
--- a/xfa/fgas/crt/cfgas_formatstring.cpp
+++ b/xfa/fgas/crt/cfgas_formatstring.cpp
@@ -21,6 +21,10 @@
 #define FX_LOCALECATEGORY_ZeroHash 0x568cb500
 #define FX_LOCALECATEGORY_NullHash 0x052931bb
 
+#define FX_NUMSTYLE_Percent 0x01
+#define FX_NUMSTYLE_Exponent 0x02
+#define FX_NUMSTYLE_DotVorv 0x04
+
 namespace {
 
 struct FX_LOCALESUBCATEGORYINFO {
@@ -126,9 +130,9 @@
         wchar_t ch = pStrPattern[iPattern++];
         iKeyValue = ConvertHex(iKeyValue, ch);
       }
-      if (iKeyValue != 0) {
-        wsOutput += (wchar_t)(iKeyValue & 0x0000FFFF);
-      }
+      if (iKeyValue != 0)
+        wsOutput += static_cast<wchar_t>(iKeyValue & 0x0000FFFF);
+
       continue;
     }
     wsOutput += pStrPattern[iPattern++];
@@ -139,9 +143,9 @@
 CFX_WideString GetLiteralTextReverse(const wchar_t* pStrPattern,
                                      int32_t& iPattern) {
   CFX_WideString wsOutput;
-  if (pStrPattern[iPattern] != '\'') {
+  if (pStrPattern[iPattern] != '\'')
     return wsOutput;
-  }
+
   iPattern--;
   int32_t iQuote = 1;
   while (iPattern >= 0) {
@@ -192,11 +196,11 @@
     ccf++;
   }
   iDotIndex = wsNum.Find('.');
-  if (iDotIndex < 0) {
-    iDotIndex = iLenf;
-    return false;
-  }
-  return true;
+  if (iDotIndex >= 0)
+    return true;
+
+  iDotIndex = iLenf;
+  return false;
 }
 
 bool ParseLocaleDate(const CFX_WideString& wsDate,
@@ -239,21 +243,19 @@
     }
     uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0');
     if (dwSymbol == FXBSTR_ID(0, 0, 'D', '1')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       day = str[cc++] - '0';
-      if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
+      if (cc < len && FXSYS_isDecimalDigit(str[cc]))
         day = day * 10 + str[cc++] - '0';
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'D', '2')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       day = str[cc++] - '0';
-      if (cc < len) {
+      if (cc < len)
         day = day * 10 + str[cc++] - '0';
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '1')) {
       int i = 0;
       while (cc < len && i < 3 && FXSYS_isDecimalDigit(str[cc])) {
@@ -263,21 +265,19 @@
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '3')) {
       cc += 3;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '1')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       month = str[cc++] - '0';
-      if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
+      if (cc < len && FXSYS_isDecimalDigit(str[cc]))
         month = month * 10 + str[cc++] - '0';
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '2')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       month = str[cc++] - '0';
-      if (cc < len) {
+      if (cc < len)
         month = month * 10 + str[cc++] - '0';
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '3')) {
       CFX_WideString wsMonthNameAbbr;
       uint16_t i = 0;
@@ -301,9 +301,8 @@
         wsMonthName = pLocale->GetMonthName(i, false);
         if (wsMonthName.IsEmpty())
           continue;
-        if (!wcsncmp(wsMonthName.c_str(), str + cc, wsMonthName.GetLength())) {
+        if (!wcsncmp(wsMonthName.c_str(), str + cc, wsMonthName.GetLength()))
           break;
-        }
       }
       if (i < 12) {
         cc += wsMonthName.GetLength();
@@ -323,9 +322,8 @@
           break;
         }
       }
-      if (i < 12) {
+      if (i < 12)
         cc += wsDayNameAbbr.GetLength();
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'E', '4')) {
       CFX_WideString wsDayName;
       int32_t i = 0;
@@ -333,44 +331,38 @@
         wsDayName = pLocale->GetDayName(i, false);
         if (wsDayName == L"")
           continue;
-        if (!wcsncmp(wsDayName.c_str(), str + cc, wsDayName.GetLength())) {
+        if (!wcsncmp(wsDayName.c_str(), str + cc, wsDayName.GetLength()))
           break;
-        }
       }
-      if (i < 12) {
+      if (i < 12)
         cc += wsDayName.GetLength();
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'e', '1')) {
       cc += 1;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'G', '1')) {
       cc += 2;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'Y', '2')) {
-      if (cc + 2 > len) {
+      if (cc + 2 > len || !FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
-      if (!FXSYS_isDecimalDigit(str[cc])) {
-        return false;
-      }
+
       year = str[cc++] - '0';
-      if (cc >= len || !FXSYS_isDecimalDigit(str[cc])) {
+      if (cc >= len || !FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       year = year * 10 + str[cc++] - '0';
-      if (year <= 29) {
+      if (year <= 29)
         year += 2000;
-      } else {
+      else
         year += 1900;
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'Y', '4')) {
       int i = 0;
       year = 0;
-      if (cc + 4 > len) {
+      if (cc + 4 > len)
         return false;
-      }
+
       while (i < 4) {
-        if (!FXSYS_isDecimalDigit(str[cc])) {
+        if (!FXSYS_isDecimalDigit(str[cc]))
           return false;
-        }
+
         year = year * 10 + str[cc] - '0';
         cc++;
         i++;
@@ -398,12 +390,11 @@
                  (tzLocale.tzHour < 0 ? -tzLocale.tzMinute : tzLocale.tzMinute);
   iMinuteDiff -= tzDiff.tzHour * 60 +
                  (tzDiff.tzHour < 0 ? -tzDiff.tzMinute : tzDiff.tzMinute);
-  while (iMinuteDiff > 1440) {
+  while (iMinuteDiff > 1440)
     iMinuteDiff -= 1440;
-  }
-  while (iMinuteDiff < 0) {
+  while (iMinuteDiff < 0)
     iMinuteDiff += 1440;
-  }
+
   wHour = iMinuteDiff / 60;
   wMinute = iMinuteDiff % 60;
 }
@@ -436,19 +427,22 @@
       cc += iLiteralLen;
       ccf++;
       continue;
-    } else if (wsTimeSymbols.Find(strf[ccf]) == -1) {
+    }
+    if (wsTimeSymbols.Find(strf[ccf]) == -1) {
       if (strf[ccf] != str[cc])
         return false;
       cc++;
       ccf++;
       continue;
     }
+
     uint32_t dwSymbolNum = 1;
     wchar_t dwCharSymbol = strf[ccf++];
     while (ccf < lenf && strf[ccf] == dwCharSymbol) {
       ccf++;
       dwSymbolNum++;
     }
+
     uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0');
     if (dwSymbol == FXBSTR_ID(0, 0, 'k', '1') ||
         dwSymbol == FXBSTR_ID(0, 0, 'H', '1') ||
@@ -458,79 +452,71 @@
         return false;
       }
       hour = str[cc++] - '0';
-      if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
+      if (cc < len && FXSYS_isDecimalDigit(str[cc]))
         hour = hour * 10 + str[cc++] - '0';
-      }
-      if (dwSymbol == FXBSTR_ID(0, 0, 'K', '1') && hour == 24) {
+      if (dwSymbol == FXBSTR_ID(0, 0, 'K', '1') && hour == 24)
         hour = 0;
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'k', '2') ||
                dwSymbol == FXBSTR_ID(0, 0, 'H', '2') ||
                dwSymbol == FXBSTR_ID(0, 0, 'h', '2') ||
                dwSymbol == FXBSTR_ID(0, 0, 'K', '2')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       hour = str[cc++] - '0';
-      if (cc >= len) {
+      if (cc >= len)
         return false;
-      }
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       hour = hour * 10 + str[cc++] - '0';
-      if (dwSymbol == FXBSTR_ID(0, 0, 'K', '2') && hour == 24) {
+      if (dwSymbol == FXBSTR_ID(0, 0, 'K', '2') && hour == 24)
         hour = 0;
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '1')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       minute = str[cc++] - '0';
-      if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
+      if (cc < len && FXSYS_isDecimalDigit(str[cc]))
         minute = minute * 10 + str[cc++] - '0';
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '2')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       minute = str[cc++] - '0';
-      if (cc >= len) {
+      if (cc >= len)
         return false;
-      }
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       minute = minute * 10 + str[cc++] - '0';
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'S', '1')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       second = str[cc++] - '0';
-      if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
+      if (cc < len && FXSYS_isDecimalDigit(str[cc]))
         second = second * 10 + str[cc++] - '0';
-      }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'S', '2')) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       second = str[cc++] - '0';
-      if (cc >= len) {
+      if (cc >= len)
         return false;
-      }
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       second = second * 10 + str[cc++] - '0';
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'F', '3')) {
-      if (cc + 3 >= len) {
+      if (cc + 3 >= len)
         return false;
-      }
+
       int i = 0;
       while (i < 3) {
-        if (!FXSYS_isDecimalDigit(str[cc])) {
+        if (!FXSYS_isDecimalDigit(str[cc]))
           return false;
-        }
+
         millisecond = millisecond * 10 + str[cc++] - '0';
         i++;
       }
@@ -548,9 +534,9 @@
         bPM = true;
       }
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'Z', '1')) {
-      if (cc + 3 > len) {
+      if (cc + 3 > len)
         continue;
-      }
+
       uint32_t dwHash = str[cc++];
       dwHash = (dwHash << 8) | str[cc++];
       dwHash = (dwHash << 8) | str[cc++];
@@ -588,13 +574,11 @@
   if (bHasA) {
     if (bPM) {
       hour += 12;
-      if (hour == 24) {
+      if (hour == 24)
         hour = 12;
-      }
     } else {
-      if (hour == 12) {
+      if (hour == 12)
         hour = 0;
-      }
     }
   }
   datetime->SetTime(hour, minute, second, millisecond);
@@ -679,10 +663,12 @@
       wsResult += GetLiteralText(strf, ccf, lenf);
       ccf++;
       continue;
-    } else if (wsDateSymbols.Find(strf[ccf]) == -1) {
+    }
+    if (wsDateSymbols.Find(strf[ccf]) == -1) {
       wsResult += strf[ccf++];
       continue;
     }
+
     uint32_t dwSymbolNum = 1;
     wchar_t dwCharSymbol = strf[ccf++];
     while (ccf < lenf && strf[ccf] == dwCharSymbol) {
@@ -700,18 +686,18 @@
       wsResult += wsDay;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '1')) {
       uint16_t nDays = 0;
-      for (int i = 1; i < month; i++) {
+      for (int i = 1; i < month; i++)
         nDays += GetSolarMonthDays(year, i);
-      }
+
       nDays += day;
       CFX_WideString wsDays;
       wsDays.Format(L"%d", nDays);
       wsResult += wsDays;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '3')) {
       uint16_t nDays = 0;
-      for (int i = 1; i < month; i++) {
+      for (int i = 1; i < month; i++)
         nDays += GetSolarMonthDays(year, i);
-      }
+
       nDays += day;
       CFX_WideString wsDays;
       wsDays.Format(L"%03d", nDays);
@@ -786,20 +772,22 @@
   uint16_t wHour = hour;
   bool bPM = false;
   if (wsTimePattern.Find('A') != -1) {
-    if (wHour >= 12) {
+    if (wHour >= 12)
       bPM = true;
-    }
   }
+
   CFX_WideStringC wsTimeSymbols(gs_wsTimeSymbols);
   while (ccf < lenf) {
     if (strf[ccf] == '\'') {
       wsResult += GetLiteralText(strf, ccf, lenf);
       ccf++;
       continue;
-    } else if (wsTimeSymbols.Find(strf[ccf]) == -1) {
+    }
+    if (wsTimeSymbols.Find(strf[ccf]) == -1) {
       wsResult += strf[ccf++];
       continue;
     }
+
     uint32_t dwSymbolNum = 1;
     wchar_t dwCharSymbol = strf[ccf++];
     while (ccf < lenf && strf[ccf] == dwCharSymbol) {
@@ -808,16 +796,16 @@
     }
     uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0');
     if (dwSymbol == FXBSTR_ID(0, 0, 'h', '1')) {
-      if (wHour > 12) {
+      if (wHour > 12)
         wHour -= 12;
-      }
+
       CFX_WideString wsHour;
       wsHour.Format(L"%d", wHour == 0 ? 12 : wHour);
       wsResult += wsHour;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'h', '2')) {
-      if (wHour > 12) {
+      if (wHour > 12)
         wHour -= 12;
-      }
+
       CFX_WideString wsHour;
       wsHour.Format(L"%02d", wHour == 0 ? 12 : wHour);
       wsResult += wsHour;
@@ -830,9 +818,9 @@
       wsHour.Format(L"%02d", wHour == 0 ? 24 : wHour);
       wsResult += wsHour;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'k', '1')) {
-      if (wHour > 12) {
+      if (wHour > 12)
         wHour -= 12;
-      }
+
       CFX_WideString wsHour;
       wsHour.Format(L"%d", wHour);
       wsResult += wsHour;
@@ -841,9 +829,9 @@
       wsHour.Format(L"%d", wHour);
       wsResult += wsHour;
     } else if (dwSymbol == FXBSTR_ID(0, 0, 'k', '2')) {
-      if (wHour > 12) {
+      if (wHour > 12)
         wHour -= 12;
-      }
+
       CFX_WideString wsHour;
       wsHour.Format(L"%02d", wHour);
       wsResult += wsHour;
@@ -922,74 +910,67 @@
   int32_t month = 1;
   int32_t day = 1;
   uint16_t wYear = 0;
-  int cc_start = 0, cc = 0;
+  int cc_start = 0;
+  int cc = 0;
   const wchar_t* str = wsDate.c_str();
   int len = wsDate.GetLength();
-  if (len > 10) {
+  if (len > 10)
     return false;
-  }
+
   while (cc < len && cc < 4) {
-    if (!FXSYS_isDecimalDigit(str[cc])) {
+    if (!FXSYS_isDecimalDigit(str[cc]))
       return false;
-    }
+
     wYear = wYear * 10 + str[cc++] - '0';
   }
   year = wYear;
-  if (cc < 4 || wYear < 1900) {
+  if (cc < 4 || wYear < 1900)
     return false;
-  }
   if (cc < len) {
-    if (str[cc] == '-') {
+    if (str[cc] == '-')
       cc++;
-    }
+
     cc_start = cc;
     uint8_t tmpM = 0;
     while (cc < len && cc < cc_start + 2) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       tmpM = tmpM * 10 + str[cc++] - '0';
     }
     month = tmpM;
-    if (cc == cc_start + 1 || tmpM > 12 || tmpM < 1) {
+    if (cc == cc_start + 1 || tmpM > 12 || tmpM < 1)
       return false;
-    }
     if (cc < len) {
-      if (str[cc] == '-') {
+      if (str[cc] == '-')
         cc++;
-      }
+
       uint8_t tmpD = 0;
       cc_start = cc;
       while (cc < len && cc < cc_start + 2) {
-        if (!FXSYS_isDecimalDigit(str[cc])) {
+        if (!FXSYS_isDecimalDigit(str[cc]))
           return false;
-        }
+
         tmpD = tmpD * 10 + str[cc++] - '0';
       }
       day = tmpD;
-      if (tmpD < 1) {
+      if (tmpD < 1)
         return false;
-      }
       if ((tmpM == 1 || tmpM == 3 || tmpM == 5 || tmpM == 7 || tmpM == 8 ||
            tmpM == 10 || tmpM == 12) &&
           tmpD > 31) {
         return false;
       }
-      if ((tmpM == 4 || tmpM == 6 || tmpM == 9 || tmpM == 11) && tmpD > 30) {
+      if ((tmpM == 4 || tmpM == 6 || tmpM == 9 || tmpM == 11) && tmpD > 30)
         return false;
-      }
-      bool iLeapYear;
-      if ((wYear % 4 == 0 && wYear % 100 != 0) || wYear % 400 == 0) {
-        iLeapYear = true;
-      } else {
-        iLeapYear = false;
-      }
-      if ((iLeapYear && tmpM == 2 && tmpD > 29) ||
-          (!iLeapYear && tmpM == 2 && tmpD > 28)) {
+
+      bool iLeapYear =
+          ((wYear % 4 == 0 && wYear % 100 != 0) || wYear % 400 == 0);
+      if (tmpM == 2 && tmpD > (iLeapYear ? 29 : 28))
         return false;
-      }
     }
   }
+
   datetime->SetDate(year, month, day);
   return true;
 }
@@ -1004,54 +985,52 @@
   uint8_t minute = 0;
   uint8_t second = 0;
   uint16_t millisecond = 0;
-  int cc_start = 0, cc = cc_start;
+  int cc_start = 0;
+  int cc = 0;
   const wchar_t* str = wsTime.c_str();
   int len = wsTime.GetLength();
   while (cc < len && cc < 2) {
-    if (!FXSYS_isDecimalDigit(str[cc])) {
+    if (!FXSYS_isDecimalDigit(str[cc]))
       return false;
-    }
+
     hour = hour * 10 + str[cc++] - '0';
   }
-  if (cc < 2 || hour >= 24) {
+  if (cc < 2 || hour >= 24)
     return false;
-  }
   if (cc < len) {
-    if (str[cc] == ':') {
+    if (str[cc] == ':')
       cc++;
-    }
+
     cc_start = cc;
     while (cc < len && cc < cc_start + 2) {
-      if (!FXSYS_isDecimalDigit(str[cc])) {
+      if (!FXSYS_isDecimalDigit(str[cc]))
         return false;
-      }
+
       minute = minute * 10 + str[cc++] - '0';
     }
-    if (cc == cc_start + 1 || minute >= 60) {
+    if (cc == cc_start + 1 || minute >= 60)
       return false;
-    }
     if (cc < len) {
-      if (str[cc] == ':') {
+      if (str[cc] == ':')
         cc++;
-      }
+
       cc_start = cc;
       while (cc < len && cc < cc_start + 2) {
-        if (!FXSYS_isDecimalDigit(str[cc])) {
+        if (!FXSYS_isDecimalDigit(str[cc]))
           return false;
-        }
+
         second = second * 10 + str[cc++] - '0';
       }
-      if (cc == cc_start + 1 || second >= 60) {
+      if (cc == cc_start + 1 || second >= 60)
         return false;
-      }
       if (cc < len) {
         if (str[cc] == '.') {
           cc++;
           cc_start = cc;
           while (cc < len && cc < cc_start + 3) {
-            if (!FXSYS_isDecimalDigit(str[cc])) {
+            if (!FXSYS_isDecimalDigit(str[cc]))
               return false;
-            }
+
             millisecond = millisecond * 10 + str[cc++] - '0';
           }
           if (cc < cc_start + 3)
@@ -1063,6 +1042,7 @@
           tzDiff.tzMinute = 0;
           if (str[cc] != 'Z')
             cc += ParseTimeZone(str + cc, len - cc, &tzDiff);
+
           ResolveZone(hour, minute, tzDiff, pLocale);
         }
       }
@@ -1115,12 +1095,10 @@
       CFX_WideString wsCategory(pStr[ccf]);
       ccf++;
       while (true) {
-        if (ccf == iLenf) {
+        if (ccf == iLenf)
           return eCategory;
-        }
-        if (pStr[ccf] == '.' || pStr[ccf] == '(') {
+        if (pStr[ccf] == '.' || pStr[ccf] == '(')
           break;
-        }
         if (pStr[ccf] == '{') {
           bBraceOpen = true;
           break;
@@ -1128,16 +1106,15 @@
         wsCategory += pStr[ccf];
         ccf++;
       }
+
       uint32_t dwHash = FX_HashCode_GetW(wsCategory.AsStringC(), false);
       if (dwHash == FX_LOCALECATEGORY_DateHash) {
-        if (eCategory == FX_LOCALECATEGORY_Time) {
+        if (eCategory == FX_LOCALECATEGORY_Time)
           return FX_LOCALECATEGORY_DateTime;
-        }
         eCategory = FX_LOCALECATEGORY_Date;
       } else if (dwHash == FX_LOCALECATEGORY_TimeHash) {
-        if (eCategory == FX_LOCALECATEGORY_Date) {
+        if (eCategory == FX_LOCALECATEGORY_Date)
           return FX_LOCALECATEGORY_DateTime;
-        }
         eCategory = FX_LOCALECATEGORY_Time;
       } else if (dwHash == FX_LOCALECATEGORY_DateTimeHash) {
         return FX_LOCALECATEGORY_DateTime;
@@ -1158,10 +1135,9 @@
   return eCategory;
 }
 
-IFX_Locale* CFGAS_FormatString::GetTextFormat(const CFX_WideString& wsPattern,
-                                              const CFX_WideStringC& wsCategory,
-                                              CFX_WideString& wsPurgePattern) {
-  IFX_Locale* pLocale = nullptr;
+void CFGAS_FormatString::GetTextFormat(const CFX_WideString& wsPattern,
+                                       const CFX_WideStringC& wsCategory,
+                                       CFX_WideString& wsPurgePattern) {
   int32_t ccf = 0;
   int32_t iLenf = wsPattern.GetLength();
   const wchar_t* pStr = wsPattern.c_str();
@@ -1180,17 +1156,15 @@
         wsSearchCategory += pStr[ccf];
         ccf++;
       }
-      if (wsSearchCategory != wsCategory) {
+      if (wsSearchCategory != wsCategory)
         continue;
-      }
+
       while (ccf < iLenf) {
         if (pStr[ccf] == '(') {
           ccf++;
           CFX_WideString wsLCID;
-          while (ccf < iLenf && pStr[ccf] != ')') {
+          while (ccf < iLenf && pStr[ccf] != ')')
             wsLCID += pStr[ccf++];
-          }
-          pLocale = GetPatternLocale(wsLCID);
         } else if (pStr[ccf] == '{') {
           bBrackOpen = true;
           break;
@@ -1202,17 +1176,10 @@
     }
     ccf++;
   }
-  if (!bBrackOpen) {
+  if (!bBrackOpen)
     wsPurgePattern = wsPattern;
-  }
-  if (!pLocale) {
-    pLocale = m_pLocaleMgr->GetDefLocale();
-  }
-  return pLocale;
 }
-#define FX_NUMSTYLE_Percent 0x01
-#define FX_NUMSTYLE_Exponent 0x02
-#define FX_NUMSTYLE_DotVorv 0x04
+
 IFX_Locale* CFGAS_FormatString::GetNumericFormat(
     const CFX_WideString& wsPattern,
     int32_t& iDotIndex,
@@ -1248,19 +1215,19 @@
         if (pStr[ccf] == '(') {
           ccf++;
           CFX_WideString wsLCID;
-          while (ccf < iLenf && pStr[ccf] != ')') {
+          while (ccf < iLenf && pStr[ccf] != ')')
             wsLCID += pStr[ccf++];
-          }
-          pLocale = GetPatternLocale(wsLCID);
+
+          pLocale = m_pLocaleMgr->GetLocaleByName(wsLCID);
         } else if (pStr[ccf] == '{') {
           bBrackOpen = true;
           break;
         } else if (pStr[ccf] == '.') {
           CFX_WideString wsSubCategory;
           ccf++;
-          while (ccf < iLenf && pStr[ccf] != '(' && pStr[ccf] != '{') {
+          while (ccf < iLenf && pStr[ccf] != '(' && pStr[ccf] != '{')
             wsSubCategory += pStr[ccf++];
-          }
+
           uint32_t dwSubHash =
               FX_HashCode_GetW(wsSubCategory.AsStringC(), false);
           FX_LOCALENUMSUBCATEGORY eSubCategory = FX_LOCALENUMPATTERN_Decimal;
@@ -1284,9 +1251,9 @@
             dwStyle |= FX_NUMSTYLE_DotVorv;
           }
           wsPurgePattern += wsSubCategory;
-          if (eSubCategory == FX_LOCALENUMPATTERN_Percent) {
+          if (eSubCategory == FX_LOCALENUMPATTERN_Percent)
             dwStyle |= FX_NUMSTYLE_Percent;
-          }
+
           continue;
         }
         ccf++;
@@ -1309,12 +1276,10 @@
     }
     ccf++;
   }
-  if (!bFindDot) {
+  if (!bFindDot)
     iDotIndex = wsPurgePattern.GetLength();
-  }
-  if (!pLocale) {
+  if (!pLocale)
     pLocale = m_pLocaleMgr->GetDefLocale();
-  }
   return pLocale;
 }
 
@@ -1322,15 +1287,16 @@
                                    const CFX_WideString& wsPattern,
                                    CFX_WideString& wsValue) {
   wsValue.clear();
-  if (wsSrcText.IsEmpty() || wsPattern.IsEmpty()) {
+  if (wsSrcText.IsEmpty() || wsPattern.IsEmpty())
     return false;
-  }
+
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"text", wsTextFormat);
-  if (wsTextFormat.IsEmpty()) {
+  if (wsTextFormat.IsEmpty())
     return false;
-  }
-  int32_t iText = 0, iPattern = 0;
+
+  int32_t iText = 0;
+  int32_t iPattern = 0;
   const wchar_t* pStrText = wsSrcText.c_str();
   int32_t iLenText = wsSrcText.GetLength();
   const wchar_t* pStrPattern = wsTextFormat.c_str();
@@ -1414,7 +1380,6 @@
   int32_t iGroupLen = wsGroupSymbol.GetLength();
   CFX_WideString wsMinus = pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus);
   int32_t iMinusLen = wsMinus.GetLength();
-  int cc = 0, ccf = 0;
   const wchar_t* str = wsSrcNum.c_str();
   int len = wsSrcNum.GetLength();
   const wchar_t* strf = wsNumFormat.c_str();
@@ -1428,25 +1393,25 @@
     bReverseParse = true;
   }
   bReverseParse = false;
-  ccf = dot_index_f - 1;
-  cc = dot_index - 1;
+  int ccf = dot_index_f - 1;
+  int cc = dot_index - 1;
   while (ccf >= 0 && cc >= 0) {
     switch (strf[ccf]) {
       case '\'': {
         CFX_WideString wsLiteral = GetLiteralTextReverse(strf, ccf);
         int32_t iLiteralLen = wsLiteral.GetLength();
         cc -= iLiteralLen - 1;
-        if (cc < 0 || wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) {
+        if (cc < 0 || wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen))
           return false;
-        }
+
         cc--;
         ccf--;
         break;
       }
       case '9':
-        if (!FXSYS_isDecimalDigit(str[cc])) {
+        if (!FXSYS_isDecimalDigit(str[cc]))
           return false;
-        }
+
         wsValue = str[cc] + wsValue;
         cc--;
         ccf--;
@@ -1474,9 +1439,9 @@
           cc--;
         } else {
           cc -= iMinusLen - 1;
-          if (cc < 0 || wcsncmp(str + cc, wsMinus.c_str(), iMinusLen)) {
+          if (cc < 0 || wcsncmp(str + cc, wsMinus.c_str(), iMinusLen))
             return false;
-          }
+
           cc--;
           bNeg = true;
         }
@@ -1487,54 +1452,57 @@
           cc--;
         } else {
           cc -= iMinusLen - 1;
-          if (cc < 0 || wcsncmp(str + cc, wsMinus.c_str(), iMinusLen)) {
+          if (cc < 0 || wcsncmp(str + cc, wsMinus.c_str(), iMinusLen))
             return false;
-          }
+
           cc--;
           bNeg = true;
         }
         ccf--;
         break;
       case 'E': {
-        if (cc >= dot_index) {
+        if (cc >= dot_index)
           return false;
-        }
+
         bool bExpSign = false;
         while (cc >= 0) {
-          if (str[cc] == 'E' || str[cc] == 'e') {
+          if (str[cc] == 'E' || str[cc] == 'e')
             break;
-          }
           if (FXSYS_isDecimalDigit(str[cc])) {
             iExponent = iExponent + (str[cc] - '0') * 10;
             cc--;
             continue;
-          } else if (str[cc] == '+') {
+          }
+          if (str[cc] == '+') {
             cc--;
             continue;
-          } else if (cc - iMinusLen + 1 > 0 &&
-                     !wcsncmp(str + (cc - iMinusLen + 1), wsMinus.c_str(),
-                              iMinusLen)) {
+          }
+          if (cc - iMinusLen + 1 > 0 && !wcsncmp(str + (cc - iMinusLen + 1),
+                                                 wsMinus.c_str(), iMinusLen)) {
             bExpSign = true;
             cc -= iMinusLen;
-          } else {
-            return false;
+            continue;
           }
+
+          return false;
         }
         cc--;
         iExponent = bExpSign ? -iExponent : iExponent;
         ccf--;
-      } break;
+        break;
+      }
       case '$': {
         CFX_WideString wsSymbol =
             pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_CurrencySymbol);
         int32_t iSymbolLen = wsSymbol.GetLength();
         cc -= iSymbolLen - 1;
-        if (cc < 0 || wcsncmp(str + cc, wsSymbol.c_str(), iSymbolLen)) {
+        if (cc < 0 || wcsncmp(str + cc, wsSymbol.c_str(), iSymbolLen))
           return false;
-        }
+
         cc--;
         ccf--;
-      } break;
+        break;
+      }
       case 'r':
         if (ccf - 1 >= 0 && strf[ccf - 1] == 'c') {
           if (str[cc] == 'R' && cc - 1 >= 0 && str[cc - 1] == 'C') {
@@ -1592,13 +1560,14 @@
             pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Percent);
         int32_t iSysmbolLen = wsSymbol.GetLength();
         cc -= iSysmbolLen - 1;
-        if (cc < 0 || wcsncmp(str + cc, wsSymbol.c_str(), iSysmbolLen)) {
+        if (cc < 0 || wcsncmp(str + cc, wsSymbol.c_str(), iSysmbolLen))
           return false;
-        }
+
         cc--;
         ccf--;
         bHavePercentSymbol = true;
-      } break;
+        break;
+      }
       case '8':
         return false;
       case ',': {
@@ -1612,29 +1581,30 @@
           }
         }
         ccf--;
-      } break;
+        break;
+      }
       case '(':
-        if (str[cc] == L'(') {
+        if (str[cc] == L'(')
           bNeg = true;
-        } else if (str[cc] != L' ') {
+        else if (str[cc] != L' ')
           return false;
-        }
+
         cc--;
         ccf--;
         break;
       case ')':
-        if (str[cc] == L')') {
+        if (str[cc] == L')')
           bNeg = true;
-        } else if (str[cc] != L' ') {
+        else if (str[cc] != L' ')
           return false;
-        }
+
         cc--;
         ccf--;
         break;
       default:
-        if (strf[ccf] != str[cc]) {
+        if (strf[ccf] != str[cc])
           return false;
-        }
+
         cc--;
         ccf--;
     }
@@ -1644,13 +1614,11 @@
       bNeg = true;
       cc--;
     }
-    if (cc >= 0) {
+    if (cc >= 0)
       return false;
-    }
   }
-  if (dot_index < len && (dwFormatStyle & FX_NUMSTYLE_DotVorv)) {
+  if (dot_index < len && (dwFormatStyle & FX_NUMSTYLE_DotVorv))
     wsValue += '.';
-  }
   if (!bReverseParse) {
     ccf = dot_index_f + 1;
     cc = (dot_index == len) ? len : dot_index + 1;
@@ -1668,10 +1636,10 @@
           break;
         }
         case '9':
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
-          { wsValue += str[cc]; }
+
+          wsValue += str[cc];
           cc++;
           ccf++;
           break;
@@ -1720,9 +1688,9 @@
           ccf++;
           break;
         case 'E': {
-          if (cc >= len || (str[cc] != 'E' && str[cc] != 'e')) {
+          if (cc >= len || (str[cc] != 'E' && str[cc] != 'e'))
             return false;
-          }
+
           bool bExpSign = false;
           cc++;
           if (cc < len) {
@@ -1734,15 +1702,16 @@
             }
           }
           while (cc < len) {
-            if (!FXSYS_isDecimalDigit(str[cc])) {
+            if (!FXSYS_isDecimalDigit(str[cc]))
               break;
-            }
+
             iExponent = iExponent * 10 + str[cc] - '0';
             cc++;
           }
           iExponent = bExpSign ? -iExponent : iExponent;
           ccf++;
-        } break;
+          break;
+        }
         case '$': {
           CFX_WideString wsSymbol =
               pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_CurrencySymbol);
@@ -1753,7 +1722,8 @@
           }
           cc += iSymbolLen;
           ccf++;
-        } break;
+          break;
+        }
         case 'c':
           if (ccf + 1 < lenf && strf[ccf + 1] == 'r') {
             if (str[cc] == 'C' && cc + 1 < len && str[cc + 1] == 'R') {
@@ -1810,9 +1780,9 @@
           bHavePercentSymbol = true;
         } break;
         case '8': {
-          while (ccf < lenf && strf[ccf] == '8') {
+          while (ccf < lenf && strf[ccf] == '8')
             ccf++;
-          }
+
           while (cc < len && FXSYS_isDecimalDigit(str[cc])) {
             wsValue += str[cc];
             cc++;
@@ -1824,36 +1794,36 @@
             cc += iGroupLen;
           }
           ccf++;
-        } break;
+          break;
+        }
         case '(':
-          if (str[cc] == L'(') {
+          if (str[cc] == L'(')
             bNeg = true;
-          } else if (str[cc] != L' ') {
+          else if (str[cc] != L' ')
             return false;
-          }
+
           cc++;
           ccf++;
           break;
         case ')':
-          if (str[cc] == L')') {
+          if (str[cc] == L')')
             bNeg = true;
-          } else if (str[cc] != L' ') {
+          else if (str[cc] != L' ')
             return false;
-          }
+
           cc++;
           ccf++;
           break;
         default:
-          if (strf[ccf] != str[cc]) {
+          if (strf[ccf] != str[cc])
             return false;
-          }
+
           cc++;
           ccf++;
       }
     }
-    if (cc != len) {
+    if (cc != len)
       return false;
-    }
   }
   if (iExponent || bHavePercentSymbol) {
     CFX_Decimal decimal = CFX_Decimal(wsValue.AsStringC());
@@ -1861,14 +1831,14 @@
       decimal = decimal *
                 CFX_Decimal(FXSYS_pow(10, static_cast<float>(iExponent)), 3);
     }
-    if (bHavePercentSymbol) {
+    if (bHavePercentSymbol)
       decimal = decimal / CFX_Decimal(100);
-    }
+
     wsValue = decimal;
   }
-  if (bNeg) {
+  if (bNeg)
     wsValue = L'-' + wsValue;
-  }
+
   return true;
 }
 
@@ -1901,9 +1871,9 @@
           wsDatePattern = wsPattern.Left(ccf);
           wsTimePattern = wsPattern.Right(wsPattern.GetLength() - ccf);
           wsTimePattern.SetAt(0, ' ');
-          if (!pLocale) {
+          if (!pLocale)
             pLocale = m_pLocaleMgr->GetDefLocale();
-          }
+
           return FX_DATETIMETYPE_DateTime;
         }
         wsCategory += pStr[ccf];
@@ -1912,9 +1882,8 @@
       if (!(iFindCategory & 1) && wsCategory == L"date") {
         iFindCategory |= 1;
         eCategory = FX_LOCALECATEGORY_Date;
-        if (iFindCategory & 2) {
+        if (iFindCategory & 2)
           iFindCategory = 4;
-        }
       } else if (!(iFindCategory & 2) && wsCategory == L"time") {
         iFindCategory |= 2;
         eCategory = FX_LOCALECATEGORY_Time;
@@ -1928,19 +1897,19 @@
         if (pStr[ccf] == '(') {
           ccf++;
           CFX_WideString wsLCID;
-          while (ccf < iLenf && pStr[ccf] != ')') {
+          while (ccf < iLenf && pStr[ccf] != ')')
             wsLCID += pStr[ccf++];
-          }
-          pLocale = GetPatternLocale(wsLCID);
+
+          pLocale = m_pLocaleMgr->GetLocaleByName(wsLCID);
         } else if (pStr[ccf] == '{') {
           bBraceOpen = true;
           break;
         } else if (pStr[ccf] == '.') {
           CFX_WideString wsSubCategory;
           ccf++;
-          while (ccf < iLenf && pStr[ccf] != '(' && pStr[ccf] != '{') {
+          while (ccf < iLenf && pStr[ccf] != '(' && pStr[ccf] != '{')
             wsSubCategory += pStr[ccf++];
-          }
+
           uint32_t dwSubHash =
               FX_HashCode_GetW(wsSubCategory.AsStringC(), false);
           FX_LOCALEDATETIMESUBCATEGORY eSubCategory =
@@ -1953,10 +1922,10 @@
               break;
             }
           }
-          if (!pLocale) {
+          if (!pLocale)
             pLocale = m_pLocaleMgr->GetDefLocale();
-          }
           ASSERT(pLocale);
+
           switch (eCategory) {
             case FX_LOCALECATEGORY_Date:
               wsDatePattern =
@@ -1982,11 +1951,11 @@
     } else if (pStr[ccf] == '}') {
       bBraceOpen = false;
       if (!wsTempPattern.IsEmpty()) {
-        if (eCategory == FX_LOCALECATEGORY_Time) {
+        if (eCategory == FX_LOCALECATEGORY_Time)
           wsTimePattern = wsTempPattern;
-        } else if (eCategory == FX_LOCALECATEGORY_Date) {
+        else if (eCategory == FX_LOCALECATEGORY_Date)
           wsDatePattern = wsTempPattern;
-        }
+
         wsTempPattern.clear();
       }
     } else {
@@ -1994,16 +1963,15 @@
     }
     ccf++;
   }
+
   if (!wsTempPattern.IsEmpty()) {
-    if (eCategory == FX_LOCALECATEGORY_Date) {
+    if (eCategory == FX_LOCALECATEGORY_Date)
       wsDatePattern += wsTempPattern;
-    } else {
+    else
       wsTimePattern += wsTempPattern;
-    }
   }
-  if (!pLocale) {
+  if (!pLocale)
     pLocale = m_pLocaleMgr->GetDefLocale();
-  }
   if (!iFindCategory) {
     wsTimePattern.clear();
     wsDatePattern = wsPattern;
@@ -2017,22 +1985,19 @@
                                        CFX_DateTime* dtValue) {
   dtValue->Reset();
 
-  if (wsSrcDateTime.IsEmpty() || wsPattern.IsEmpty()) {
+  if (wsSrcDateTime.IsEmpty() || wsPattern.IsEmpty())
     return false;
-  }
+
   CFX_WideString wsDatePattern, wsTimePattern;
   IFX_Locale* pLocale = nullptr;
   FX_DATETIMETYPE eCategory =
       GetDateTimeFormat(wsPattern, pLocale, wsDatePattern, wsTimePattern);
-  if (!pLocale) {
+  if (!pLocale)
     return false;
-  }
-  if (eCategory == FX_DATETIMETYPE_Unknown) {
+  if (eCategory == FX_DATETIMETYPE_Unknown)
     eCategory = eDateTimeType;
-  }
-  if (eCategory == FX_DATETIMETYPE_Unknown) {
+  if (eCategory == FX_DATETIMETYPE_Unknown)
     return false;
-  }
   if (eCategory == FX_DATETIMETYPE_TimeDate) {
     int32_t iStart = 0;
     if (!ParseLocaleTime(wsSrcDateTime, wsTimePattern, pLocale, dtValue,
@@ -2058,11 +2023,14 @@
   }
   return true;
 }
+
 bool CFGAS_FormatString::ParseZero(const CFX_WideString& wsSrcText,
                                    const CFX_WideString& wsPattern) {
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"zero", wsTextFormat);
-  int32_t iText = 0, iPattern = 0;
+
+  int32_t iText = 0;
+  int32_t iPattern = 0;
   const wchar_t* pStrText = wsSrcText.c_str();
   int32_t iLenText = wsSrcText.GetLength();
   const wchar_t* pStrPattern = wsTextFormat.c_str();
@@ -2079,20 +2047,23 @@
       iText += iLiteralLen;
       iPattern++;
       continue;
-    } else if (pStrPattern[iPattern] != pStrText[iText]) {
-      return false;
-    } else {
-      iText++;
-      iPattern++;
     }
+    if (pStrPattern[iPattern] != pStrText[iText])
+      return false;
+
+    iText++;
+    iPattern++;
   }
   return iPattern == iLenPattern && iText == iLenText;
 }
+
 bool CFGAS_FormatString::ParseNull(const CFX_WideString& wsSrcText,
                                    const CFX_WideString& wsPattern) {
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"null", wsTextFormat);
-  int32_t iText = 0, iPattern = 0;
+
+  int32_t iText = 0;
+  int32_t iPattern = 0;
   const wchar_t* pStrText = wsSrcText.c_str();
   int32_t iLenText = wsSrcText.GetLength();
   const wchar_t* pStrPattern = wsTextFormat.c_str();
@@ -2109,28 +2080,31 @@
       iText += iLiteralLen;
       iPattern++;
       continue;
-    } else if (pStrPattern[iPattern] != pStrText[iText]) {
-      return false;
-    } else {
-      iText++;
-      iPattern++;
     }
+    if (pStrPattern[iPattern] != pStrText[iText])
+      return false;
+
+    iText++;
+    iPattern++;
   }
   return iPattern == iLenPattern && iText == iLenText;
 }
+
 bool CFGAS_FormatString::FormatText(const CFX_WideString& wsSrcText,
                                     const CFX_WideString& wsPattern,
                                     CFX_WideString& wsOutput) {
-  if (wsPattern.IsEmpty()) {
+  if (wsPattern.IsEmpty())
     return false;
-  }
+
   int32_t iLenText = wsSrcText.GetLength();
-  if (iLenText == 0) {
+  if (iLenText == 0)
     return false;
-  }
+
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"text", wsTextFormat);
-  int32_t iText = 0, iPattern = 0;
+
+  int32_t iText = 0;
+  int32_t iPattern = 0;
   const wchar_t* pStrText = wsSrcText.c_str();
   const wchar_t* pStrPattern = wsTextFormat.c_str();
   int32_t iLenPattern = wsTextFormat.GetLength();
@@ -2142,16 +2116,16 @@
         break;
       }
       case 'A':
-        if (iText >= iLenText || !FXSYS_iswalpha(pStrText[iText])) {
+        if (iText >= iLenText || !FXSYS_iswalpha(pStrText[iText]))
           return false;
-        }
+
         wsOutput += pStrText[iText++];
         iPattern++;
         break;
       case 'X':
-        if (iText >= iLenText) {
+        if (iText >= iLenText)
           return false;
-        }
+
         wsOutput += pStrText[iText++];
         iPattern++;
         break;
@@ -2165,9 +2139,9 @@
         iPattern++;
         break;
       case '9':
-        if (iText >= iLenText || !FXSYS_isDecimalDigit(pStrText[iText])) {
+        if (iText >= iLenText || !FXSYS_isDecimalDigit(pStrText[iText]))
           return false;
-        }
+
         wsOutput += pStrText[iText++];
         iPattern++;
         break;
@@ -2182,30 +2156,31 @@
 bool CFGAS_FormatString::FormatStrNum(const CFX_WideStringC& wsInputNum,
                                       const CFX_WideString& wsPattern,
                                       CFX_WideString& wsOutput) {
-  if (wsInputNum.IsEmpty() || wsPattern.IsEmpty()) {
+  if (wsInputNum.IsEmpty() || wsPattern.IsEmpty())
     return false;
-  }
+
   int32_t dot_index_f = -1;
   uint32_t dwNumStyle = 0;
   CFX_WideString wsNumFormat;
   IFX_Locale* pLocale =
       GetNumericFormat(wsPattern, dot_index_f, dwNumStyle, wsNumFormat);
-  if (!pLocale || wsNumFormat.IsEmpty()) {
+  if (!pLocale || wsNumFormat.IsEmpty())
     return false;
-  }
+
   int32_t cc = 0, ccf = 0;
   const wchar_t* strf = wsNumFormat.c_str();
   int lenf = wsNumFormat.GetLength();
   CFX_WideString wsSrcNum(wsInputNum);
   wsSrcNum.TrimLeft('0');
-  if (wsSrcNum.IsEmpty() || wsSrcNum[0] == '.') {
+  if (wsSrcNum.IsEmpty() || wsSrcNum[0] == '.')
     wsSrcNum.Insert(0, '0');
-  }
+
   CFX_Decimal decimal = CFX_Decimal(wsSrcNum.AsStringC());
   if (dwNumStyle & FX_NUMSTYLE_Percent) {
     decimal = decimal * CFX_Decimal(100);
     wsSrcNum = decimal;
   }
+
   int32_t exponent = 0;
   if (dwNumStyle & FX_NUMSTYLE_Exponent) {
     int fixed_count = 0;
@@ -2222,6 +2197,7 @@
       }
       ccf++;
     }
+
     int threshold = 1;
     while (fixed_count > 1) {
       threshold *= 10;
@@ -2244,6 +2220,7 @@
       }
     }
   }
+
   bool bTrimTailZeros = false;
   int32_t iTreading =
       GetNumTrailingLimit(wsNumFormat, dot_index_f, bTrimTailZeros);
@@ -2256,6 +2233,7 @@
     wsSrcNum.TrimRight(L"0");
     wsSrcNum.TrimRight(L".");
   }
+
   CFX_WideString wsGroupSymbol =
       pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping);
   bool bNeg = false;
@@ -2263,22 +2241,23 @@
     bNeg = true;
     wsSrcNum.Delete(0, 1);
   }
+
   bool bAddNeg = false;
   const wchar_t* str = wsSrcNum.c_str();
   int len = wsSrcNum.GetLength();
   int dot_index = wsSrcNum.Find('.');
-  if (dot_index == -1) {
+  if (dot_index == -1)
     dot_index = len;
-  }
+
   ccf = dot_index_f - 1;
   cc = dot_index - 1;
   while (ccf >= 0) {
     switch (strf[ccf]) {
       case '9':
         if (cc >= 0) {
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
+
           wsOutput = str[cc] + wsOutput;
           cc--;
         } else {
@@ -2288,26 +2267,24 @@
         break;
       case 'z':
         if (cc >= 0) {
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
-          if (str[0] != '0') {
+          if (str[0] != '0')
             wsOutput = str[cc] + wsOutput;
-          }
+
           cc--;
         }
         ccf--;
         break;
       case 'Z':
         if (cc >= 0) {
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
-          if (str[0] == '0') {
+          if (str[0] == '0')
             wsOutput = L' ' + wsOutput;
-          } else {
+          else
             wsOutput = str[cc] + wsOutput;
-          }
+
           cc--;
         } else {
           wsOutput = L' ' + wsOutput;
@@ -2336,52 +2313,52 @@
         CFX_WideString wsExp;
         wsExp.Format(L"E%+d", exponent);
         wsOutput = wsExp + wsOutput;
-      }
         ccf--;
         break;
+      }
       case '$': {
         wsOutput =
             pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_CurrencySymbol) +
             wsOutput;
-      }
         ccf--;
         break;
+      }
       case 'r':
         if (ccf - 1 >= 0 && strf[ccf - 1] == 'c') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput = L"CR" + wsOutput;
-          }
+
           ccf -= 2;
           bAddNeg = true;
         }
         break;
       case 'R':
         if (ccf - 1 >= 0 && strf[ccf - 1] == 'C') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput = L"CR" + wsOutput;
-          } else {
+          else
             wsOutput = L"  " + wsOutput;
-          }
+
           ccf -= 2;
           bAddNeg = true;
         }
         break;
       case 'b':
         if (ccf - 1 >= 0 && strf[ccf - 1] == 'd') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput = L"db" + wsOutput;
-          }
+
           ccf -= 2;
           bAddNeg = true;
         }
         break;
       case 'B':
         if (ccf - 1 >= 0 && strf[ccf - 1] == 'D') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput = L"DB" + wsOutput;
-          } else {
+          else
             wsOutput = L"  " + wsOutput;
-          }
+
           ccf -= 2;
           bAddNeg = true;
         }
@@ -2389,30 +2366,30 @@
       case '%': {
         wsOutput =
             pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Percent) + wsOutput;
-      }
         ccf--;
         break;
+      }
       case ',':
-        if (cc >= 0) {
+        if (cc >= 0)
           wsOutput = wsGroupSymbol + wsOutput;
-        }
+
         ccf--;
         break;
       case '(':
-        if (bNeg) {
+        if (bNeg)
           wsOutput = L"(" + wsOutput;
-        } else {
+        else
           wsOutput = L" " + wsOutput;
-        }
+
         bAddNeg = true;
         ccf--;
         break;
       case ')':
-        if (bNeg) {
+        if (bNeg)
           wsOutput = L")" + wsOutput;
-        } else {
+        else
           wsOutput = L" " + wsOutput;
-        }
+
         ccf--;
         break;
       case '\'':
@@ -2424,13 +2401,13 @@
         ccf--;
     }
   }
+
   if (cc >= 0) {
     int nPos = dot_index % 3;
     wsOutput.clear();
     for (int32_t i = 0; i < dot_index; i++) {
-      if (i % 3 == nPos && i != 0) {
+      if (i % 3 == nPos && i != 0)
         wsOutput += wsGroupSymbol;
-      }
       wsOutput += wsSrcNum[i];
     }
     if (dot_index < len) {
@@ -2456,14 +2433,12 @@
   if (strf[dot_index_f] == 'V') {
     wsOutput += wsDotSymbol;
   } else if (strf[dot_index_f] == '.') {
-    if (dot_index < len) {
+    if (dot_index < len)
       wsOutput += wsDotSymbol;
-    } else {
-      if (strf[dot_index_f + 1] == '9' || strf[dot_index_f + 1] == 'Z') {
-        wsOutput += wsDotSymbol;
-      }
-    }
+    else if (strf[dot_index_f + 1] == '9' || strf[dot_index_f + 1] == 'Z')
+      wsOutput += wsDotSymbol;
   }
+
   ccf = dot_index_f + 1;
   cc = dot_index + 1;
   while (ccf < lenf) {
@@ -2474,9 +2449,9 @@
         break;
       case '9':
         if (cc < len) {
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
+
           wsOutput += str[cc];
           cc++;
         } else {
@@ -2486,9 +2461,9 @@
         break;
       case 'z':
         if (cc < len) {
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
+
           wsOutput += str[cc];
           cc++;
         }
@@ -2496,9 +2471,9 @@
         break;
       case 'Z':
         if (cc < len) {
-          if (!FXSYS_isDecimalDigit(str[cc])) {
+          if (!FXSYS_isDecimalDigit(str[cc]))
             return false;
-          }
+
           wsOutput += str[cc];
           cc++;
         } else {
@@ -2511,7 +2486,8 @@
         wsExp.Format(L"E%+d", exponent);
         wsOutput += wsExp;
         ccf++;
-      } break;
+        break;
+      }
       case '$':
         wsOutput +=
             pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_CurrencySymbol);
@@ -2519,40 +2495,40 @@
         break;
       case 'c':
         if (ccf + 1 < lenf && strf[ccf + 1] == 'r') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput += L"CR";
-          }
+
           ccf += 2;
           bAddNeg = true;
         }
         break;
       case 'C':
         if (ccf + 1 < lenf && strf[ccf + 1] == 'R') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput += L"CR";
-          } else {
+          else
             wsOutput += L"  ";
-          }
+
           ccf += 2;
           bAddNeg = true;
         }
         break;
       case 'd':
         if (ccf + 1 < lenf && strf[ccf + 1] == 'b') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput += L"db";
-          }
+
           ccf += 2;
           bAddNeg = true;
         }
         break;
       case 'D':
         if (ccf + 1 < lenf && strf[ccf + 1] == 'B') {
-          if (bNeg) {
+          if (bNeg)
             wsOutput += L"DB";
-          } else {
+          else
             wsOutput += L"  ";
-          }
+
           ccf += 2;
           bAddNeg = true;
         }
@@ -2574,20 +2550,20 @@
         ccf++;
         break;
       case '(':
-        if (bNeg) {
+        if (bNeg)
           wsOutput += '(';
-        } else {
+        else
           wsOutput += ' ';
-        }
+
         bAddNeg = true;
         ccf++;
         break;
       case ')':
-        if (bNeg) {
+        if (bNeg)
           wsOutput += ')';
-        } else {
+        else
           wsOutput += ' ';
-        }
+
         ccf++;
         break;
       default:
@@ -2604,9 +2580,8 @@
 bool CFGAS_FormatString::FormatNum(const CFX_WideString& wsSrcNum,
                                    const CFX_WideString& wsPattern,
                                    CFX_WideString& wsOutput) {
-  if (wsSrcNum.IsEmpty() || wsPattern.IsEmpty()) {
+  if (wsSrcNum.IsEmpty() || wsPattern.IsEmpty())
     return false;
-  }
   return FormatStrNum(wsSrcNum.AsStringC(), wsPattern, wsOutput);
 }
 
@@ -2614,16 +2589,16 @@
                                         const CFX_WideString& wsPattern,
                                         CFX_WideString& wsOutput,
                                         FX_DATETIMETYPE eDateTimeType) {
-  if (wsSrcDateTime.IsEmpty() || wsPattern.IsEmpty()) {
+  if (wsSrcDateTime.IsEmpty() || wsPattern.IsEmpty())
     return false;
-  }
+
   CFX_WideString wsDatePattern, wsTimePattern;
   IFX_Locale* pLocale = nullptr;
   FX_DATETIMETYPE eCategory =
       GetDateTimeFormat(wsPattern, pLocale, wsDatePattern, wsTimePattern);
-  if (!pLocale) {
+  if (!pLocale)
     return false;
-  }
+
   if (eCategory == FX_DATETIMETYPE_Unknown) {
     if (eDateTimeType == FX_DATETIMETYPE_Time) {
       wsTimePattern = wsDatePattern;
@@ -2631,9 +2606,9 @@
     }
     eCategory = eDateTimeType;
   }
-  if (eCategory == FX_DATETIMETYPE_Unknown) {
+  if (eCategory == FX_DATETIMETYPE_Unknown)
     return false;
-  }
+
   CFX_DateTime dt;
   int32_t iT = wsSrcDateTime.Find(L"T");
   if (iT < 0) {
@@ -2666,9 +2641,9 @@
 
 bool CFGAS_FormatString::FormatZero(const CFX_WideString& wsPattern,
                                     CFX_WideString& wsOutput) {
-  if (wsPattern.IsEmpty()) {
+  if (wsPattern.IsEmpty())
     return false;
-  }
+
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"zero", wsTextFormat);
   int32_t iPattern = 0;
@@ -2686,11 +2661,12 @@
   }
   return true;
 }
+
 bool CFGAS_FormatString::FormatNull(const CFX_WideString& wsPattern,
                                     CFX_WideString& wsOutput) {
-  if (wsPattern.IsEmpty()) {
+  if (wsPattern.IsEmpty())
     return false;
-  }
+
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"null", wsTextFormat);
   int32_t iPattern = 0;
@@ -2701,15 +2677,8 @@
       wsOutput += GetLiteralText(pStrPattern, iPattern, iLenPattern);
       iPattern++;
       continue;
-    } else {
-      wsOutput += pStrPattern[iPattern++];
-      continue;
     }
+    wsOutput += pStrPattern[iPattern++];
   }
   return true;
 }
-
-IFX_Locale* CFGAS_FormatString::GetPatternLocale(
-    const CFX_WideString& wsLocale) {
-  return m_pLocaleMgr->GetLocaleByName(wsLocale);
-}
diff --git a/xfa/fgas/crt/cfgas_formatstring.h b/xfa/fgas/crt/cfgas_formatstring.h
index be3c310..a8cb917 100644
--- a/xfa/fgas/crt/cfgas_formatstring.h
+++ b/xfa/fgas/crt/cfgas_formatstring.h
@@ -53,9 +53,9 @@
   bool FormatNull(const CFX_WideString& wsPattern, CFX_WideString& wsOutput);
 
  private:
-  IFX_Locale* GetTextFormat(const CFX_WideString& wsPattern,
-                            const CFX_WideStringC& wsCategory,
-                            CFX_WideString& wsPurgePattern);
+  void GetTextFormat(const CFX_WideString& wsPattern,
+                     const CFX_WideStringC& wsCategory,
+                     CFX_WideString& wsPurgePattern);
   IFX_Locale* GetNumericFormat(const CFX_WideString& wsPattern,
                                int32_t& iDotIndex,
                                uint32_t& dwStyle,
@@ -67,7 +67,6 @@
                                     IFX_Locale*& pLocale,
                                     CFX_WideString& wsDatePattern,
                                     CFX_WideString& wsTimePattern);
-  IFX_Locale* GetPatternLocale(const CFX_WideString& wsLocale);
 
   CXFA_LocaleMgr* m_pLocaleMgr;
 };
diff --git a/xfa/fxfa/app/cxfa_ffnumericedit.cpp b/xfa/fxfa/app/cxfa_ffnumericedit.cpp
index a2aad63..09ea524 100644
--- a/xfa/fxfa/app/cxfa_ffnumericedit.cpp
+++ b/xfa/fxfa/app/cxfa_ffnumericedit.cpp
@@ -91,7 +91,7 @@
 
   CFX_WideString wsFormat;
   CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(m_pDataAcc.Get());
-  widgetValue.GetNumbericFormat(wsFormat, iLeads, iFracs);
+  widgetValue.GetNumericFormat(wsFormat, iLeads, iFracs);
   return widgetValue.ValidateNumericTemp(wsText, wsFormat,
                                          m_pDataAcc->GetLocal());
 }
diff --git a/xfa/fxfa/cxfa_widgetacc.cpp b/xfa/fxfa/cxfa_widgetacc.cpp
index d4a6125..3c136df 100644
--- a/xfa/fxfa/cxfa_widgetacc.cpp
+++ b/xfa/fxfa/cxfa_widgetacc.cpp
@@ -409,7 +409,8 @@
       return XFA_EVENTERROR_NotExist;
 
     CXFA_LocaleValue lcValue = XFA_GetLocaleValue(this);
-    if (!lcValue.ValidateValue(lcValue.GetValue(), wsPicture, pLocale)) {
+    if (!lcValue.ValidateValue(lcValue.GetValue(), wsPicture, pLocale,
+                               nullptr)) {
       IXFA_AppProvider* pAppProvider = GetAppProvider();
       if (!pAppProvider)
         return XFA_EVENTERROR_NotExist;
diff --git a/xfa/fxfa/parser/cxfa_localevalue.cpp b/xfa/fxfa/parser/cxfa_localevalue.cpp
index c563f440..113c8cc 100644
--- a/xfa/fxfa/parser/cxfa_localevalue.cpp
+++ b/xfa/fxfa/parser/cxfa_localevalue.cpp
@@ -16,41 +16,83 @@
 #include "xfa/fxfa/parser/cxfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
-CXFA_LocaleValue::CXFA_LocaleValue() {
-  m_dwType = XFA_VT_NULL;
-  m_bValid = true;
-  m_pLocaleMgr = nullptr;
+namespace {
+
+FX_LOCALECATEGORY ValueCategory(FX_LOCALECATEGORY eCategory,
+                                uint32_t dwValueType) {
+  if (eCategory != FX_LOCALECATEGORY_Unknown)
+    return eCategory;
+
+  switch (dwValueType) {
+    case XFA_VT_BOOLEAN:
+    case XFA_VT_INTEGER:
+    case XFA_VT_DECIMAL:
+    case XFA_VT_FLOAT:
+      return FX_LOCALECATEGORY_Num;
+    case XFA_VT_TEXT:
+      return FX_LOCALECATEGORY_Text;
+    case XFA_VT_DATE:
+      return FX_LOCALECATEGORY_Date;
+    case XFA_VT_TIME:
+      return FX_LOCALECATEGORY_Time;
+    case XFA_VT_DATETIME:
+      return FX_LOCALECATEGORY_DateTime;
+  }
+  return FX_LOCALECATEGORY_Unknown;
 }
-CXFA_LocaleValue::CXFA_LocaleValue(const CXFA_LocaleValue& value) {
-  m_dwType = XFA_VT_NULL;
-  m_bValid = true;
-  m_pLocaleMgr = nullptr;
-  *this = value;
+
+bool ValueSplitDateTime(const CFX_WideString& wsDateTime,
+                        CFX_WideString& wsDate,
+                        CFX_WideString& wsTime) {
+  wsDate = L"";
+  wsTime = L"";
+  if (wsDateTime.IsEmpty())
+    return false;
+
+  int nSplitIndex = wsDateTime.Find('T');
+  if (nSplitIndex < 0)
+    nSplitIndex = wsDateTime.Find(' ');
+  if (nSplitIndex < 0)
+    return false;
+
+  wsDate = wsDateTime.Left(nSplitIndex);
+  wsTime = wsDateTime.Right(wsDateTime.GetLength() - nSplitIndex - 1);
+  return true;
 }
-CXFA_LocaleValue::CXFA_LocaleValue(uint32_t dwType,
-                                   CXFA_LocaleMgr* pLocaleMgr) {
-  m_dwType = dwType;
-  m_bValid = (m_dwType != XFA_VT_NULL);
-  m_pLocaleMgr = pLocaleMgr;
-}
+
+}  // namespace
+
+CXFA_LocaleValue::CXFA_LocaleValue()
+    : m_pLocaleMgr(nullptr), m_dwType(XFA_VT_NULL), m_bValid(true) {}
+
+CXFA_LocaleValue::CXFA_LocaleValue(const CXFA_LocaleValue& value)
+    : m_pLocaleMgr(value.m_pLocaleMgr),
+      m_wsValue(value.m_wsValue),
+      m_dwType(value.m_dwType),
+      m_bValid(value.m_bValid) {}
+
+CXFA_LocaleValue::CXFA_LocaleValue(uint32_t dwType, CXFA_LocaleMgr* pLocaleMgr)
+    : m_pLocaleMgr(pLocaleMgr),
+      m_dwType(dwType),
+      m_bValid(m_dwType != XFA_VT_NULL) {}
+
 CXFA_LocaleValue::CXFA_LocaleValue(uint32_t dwType,
                                    const CFX_WideString& wsValue,
-                                   CXFA_LocaleMgr* pLocaleMgr) {
-  m_wsValue = wsValue;
-  m_dwType = dwType;
-  m_pLocaleMgr = pLocaleMgr;
-  m_bValid = ValidateCanonicalValue(wsValue, dwType);
-}
+                                   CXFA_LocaleMgr* pLocaleMgr)
+    : m_pLocaleMgr(pLocaleMgr),
+      m_wsValue(wsValue),
+      m_dwType(dwType),
+      m_bValid(ValidateCanonicalValue(wsValue, dwType)) {}
+
 CXFA_LocaleValue::CXFA_LocaleValue(uint32_t dwType,
                                    const CFX_WideString& wsValue,
                                    const CFX_WideString& wsFormat,
                                    IFX_Locale* pLocale,
-                                   CXFA_LocaleMgr* pLocaleMgr) {
-  m_pLocaleMgr = pLocaleMgr;
-  m_bValid = true;
-  m_dwType = dwType;
-  m_bValid = ParsePatternValue(wsValue, wsFormat, pLocale);
-}
+                                   CXFA_LocaleMgr* pLocaleMgr)
+    : m_pLocaleMgr(pLocaleMgr),
+      m_dwType(dwType),
+      m_bValid(ParsePatternValue(wsValue, wsFormat, pLocale)) {}
+
 CXFA_LocaleValue& CXFA_LocaleValue::operator=(const CXFA_LocaleValue& value) {
   m_wsValue = value.m_wsValue;
   m_dwType = value.m_dwType;
@@ -58,28 +100,8 @@
   m_pLocaleMgr = value.m_pLocaleMgr;
   return *this;
 }
+
 CXFA_LocaleValue::~CXFA_LocaleValue() {}
-static FX_LOCALECATEGORY XFA_ValugeCategory(FX_LOCALECATEGORY eCategory,
-                                            uint32_t dwValueType) {
-  if (eCategory == FX_LOCALECATEGORY_Unknown) {
-    switch (dwValueType) {
-      case XFA_VT_BOOLEAN:
-      case XFA_VT_INTEGER:
-      case XFA_VT_DECIMAL:
-      case XFA_VT_FLOAT:
-        return FX_LOCALECATEGORY_Num;
-      case XFA_VT_TEXT:
-        return FX_LOCALECATEGORY_Text;
-      case XFA_VT_DATE:
-        return FX_LOCALECATEGORY_Date;
-      case XFA_VT_TIME:
-        return FX_LOCALECATEGORY_Time;
-      case XFA_VT_DATETIME:
-        return FX_LOCALECATEGORY_DateTime;
-    }
-  }
-  return eCategory;
-}
 
 bool CXFA_LocaleValue::ValidateValue(const CFX_WideString& wsValue,
                                      const CFX_WideString& wsPattern,
@@ -99,35 +121,29 @@
   int32_t i = 0;
   for (; i < iCount && !bRet; i++) {
     CFX_WideString wsFormat = wsPatterns[i];
-    FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat);
-    eCategory = XFA_ValugeCategory(eCategory, m_dwType);
-    switch (eCategory) {
+    switch (ValueCategory(pFormat->GetCategory(wsFormat), m_dwType)) {
       case FX_LOCALECATEGORY_Null:
         bRet = pFormat->ParseNull(wsValue, wsFormat);
-        if (!bRet) {
+        if (!bRet)
           bRet = wsValue.IsEmpty();
-        }
         break;
       case FX_LOCALECATEGORY_Zero:
         bRet = pFormat->ParseZero(wsValue, wsFormat);
-        if (!bRet) {
+        if (!bRet)
           bRet = wsValue == L"0";
-        }
         break;
       case FX_LOCALECATEGORY_Num: {
         CFX_WideString fNum;
         bRet = pFormat->ParseNum(wsValue, wsFormat, fNum);
-        if (!bRet) {
+        if (!bRet)
           bRet = pFormat->FormatNum(wsValue, wsFormat, wsOutput);
-        }
         break;
       }
       case FX_LOCALECATEGORY_Text:
         bRet = pFormat->ParseText(wsValue, wsFormat, wsOutput);
         wsOutput.clear();
-        if (!bRet) {
+        if (!bRet)
           bRet = pFormat->FormatText(wsValue, wsFormat, wsOutput);
-        }
         break;
       case FX_LOCALECATEGORY_Date: {
         CFX_DateTime dt;
@@ -169,19 +185,12 @@
   }
   if (bRet && pMatchFormat)
     *pMatchFormat = wsPatterns[i - 1];
-
   if (pLocale)
     m_pLocaleMgr->SetDefLocale(locale);
 
   return bRet;
 }
 
-CFX_WideString CXFA_LocaleValue::GetValue() const {
-  return m_wsValue;
-}
-uint32_t CXFA_LocaleValue::GetType() const {
-  return m_dwType;
-}
 double CXFA_LocaleValue::GetDoubleNum() const {
   if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER ||
                    m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) {
@@ -189,7 +198,8 @@
     uint32_t dwFractional = 0;
     int32_t nExponent = 0;
     int32_t cc = 0;
-    bool bNegative = false, bExpSign = false;
+    bool bNegative = false;
+    bool bExpSign = false;
     const wchar_t* str = m_wsValue.c_str();
     int len = m_wsValue.GetLength();
     while (FXSYS_iswspace(str[cc]) && cc < len)
@@ -214,6 +224,7 @@
       cc++;
       nIntegralLen++;
     }
+
     nIntegral = bNegative ? -nIntegral : nIntegral;
     int32_t scale = 0;
     double fraction = 0.0;
@@ -261,24 +272,22 @@
 }
 
 CFX_DateTime CXFA_LocaleValue::GetDate() const {
-  if (m_bValid && m_dwType == XFA_VT_DATE) {
-    CFX_DateTime dt;
-    FX_DateFromCanonical(m_wsValue, &dt);
-    return dt;
-  }
-  return CFX_DateTime();
+  if (!m_bValid || m_dwType != XFA_VT_DATE)
+    return CFX_DateTime();
+
+  CFX_DateTime dt;
+  FX_DateFromCanonical(m_wsValue, &dt);
+  return dt;
 }
 
 CFX_DateTime CXFA_LocaleValue::GetTime() const {
-  if (m_bValid && m_dwType == XFA_VT_TIME) {
-    ASSERT(m_pLocaleMgr);
+  if (!m_bValid || m_dwType != XFA_VT_TIME)
+    return CFX_DateTime();
 
-    CFX_DateTime dt;
-    FX_TimeFromCanonical(m_wsValue.AsStringC(), &dt,
-                         m_pLocaleMgr->GetDefLocale());
-    return dt;
-  }
-  return CFX_DateTime();
+  CFX_DateTime dt;
+  FX_TimeFromCanonical(m_wsValue.AsStringC(), &dt,
+                       m_pLocaleMgr->GetDefLocale());
+  return dt;
 }
 
 bool CXFA_LocaleValue::SetDate(const CFX_DateTime& d) {
@@ -339,18 +348,16 @@
   wsResult.clear();
   bool bRet = false;
   auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr);
-  FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat);
-  eCategory = XFA_ValugeCategory(eCategory, m_dwType);
+  FX_LOCALECATEGORY eCategory =
+      ValueCategory(pFormat->GetCategory(wsFormat), m_dwType);
   switch (eCategory) {
     case FX_LOCALECATEGORY_Null:
-      if (m_wsValue.IsEmpty()) {
+      if (m_wsValue.IsEmpty())
         bRet = pFormat->FormatNull(wsFormat, wsResult);
-      }
       break;
     case FX_LOCALECATEGORY_Zero:
-      if (m_wsValue == L"0") {
+      if (m_wsValue == L"0")
         bRet = pFormat->FormatZero(wsFormat, wsResult);
-      }
       break;
     case FX_LOCALECATEGORY_Num:
       bRet = pFormat->FormatNum(m_wsValue, wsFormat, wsResult);
@@ -384,39 +391,20 @@
   return bRet;
 }
 
-static bool XFA_ValueSplitDateTime(const CFX_WideString& wsDateTime,
-                                   CFX_WideString& wsDate,
-                                   CFX_WideString& wsTime) {
-  wsDate = L"";
-  wsTime = L"";
-  if (wsDateTime.IsEmpty()) {
-    return false;
-  }
-  int nSplitIndex = -1;
-  nSplitIndex = wsDateTime.Find('T');
-  if (nSplitIndex < 0) {
-    nSplitIndex = wsDateTime.Find(' ');
-  }
-  if (nSplitIndex < 0) {
-    return false;
-  }
-  wsDate = wsDateTime.Left(nSplitIndex);
-  wsTime = wsDateTime.Right(wsDateTime.GetLength() - nSplitIndex - 1);
-  return true;
-}
 bool CXFA_LocaleValue::ValidateCanonicalValue(const CFX_WideString& wsValue,
                                               uint32_t dwVType) {
-  if (wsValue.IsEmpty()) {
+  if (wsValue.IsEmpty())
     return true;
-  }
+
   CFX_DateTime dt;
   switch (dwVType) {
     case XFA_VT_DATE: {
       if (ValidateCanonicalDate(wsValue, &dt))
         return true;
 
-      CFX_WideString wsDate, wsTime;
-      if (XFA_ValueSplitDateTime(wsValue, wsDate, wsTime) &&
+      CFX_WideString wsDate;
+      CFX_WideString wsTime;
+      if (ValueSplitDateTime(wsValue, wsDate, wsTime) &&
           ValidateCanonicalDate(wsDate, &dt)) {
         return true;
       }
@@ -426,8 +414,9 @@
       if (ValidateCanonicalTime(wsValue))
         return true;
 
-      CFX_WideString wsDate, wsTime;
-      if (XFA_ValueSplitDateTime(wsValue, wsDate, wsTime) &&
+      CFX_WideString wsDate;
+      CFX_WideString wsTime;
+      if (ValueSplitDateTime(wsValue, wsDate, wsTime) &&
           ValidateCanonicalTime(wsTime)) {
         return true;
       }
@@ -435,7 +424,7 @@
     }
     case XFA_VT_DATETIME: {
       CFX_WideString wsDate, wsTime;
-      if (XFA_ValueSplitDateTime(wsValue, wsDate, wsTime) &&
+      if (ValueSplitDateTime(wsValue, wsDate, wsTime) &&
           ValidateCanonicalDate(wsDate, &dt) && ValidateCanonicalTime(wsTime)) {
         return true;
       }
@@ -443,82 +432,80 @@
   }
   return true;
 }
+
 bool CXFA_LocaleValue::ValidateCanonicalDate(const CFX_WideString& wsDate,
                                              CFX_DateTime* unDate) {
-  const uint16_t LastDay[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-  const uint16_t wCountY = 4, wCountM = 2, wCountD = 2;
+  static const uint16_t LastDay[12] = {31, 28, 31, 30, 31, 30,
+                                       31, 31, 30, 31, 30, 31};
+  static const uint16_t wCountY = 4;
+  static const uint16_t wCountM = 2;
+  static const uint16_t wCountD = 2;
   int nLen = wsDate.GetLength();
-  if (nLen < wCountY || nLen > wCountY + wCountM + wCountD + 2) {
+  if (nLen < wCountY || nLen > wCountY + wCountM + wCountD + 2)
     return false;
-  }
+
   const bool bSymbol = wsDate.Find(0x2D) != -1;
   uint16_t wYear = 0;
   uint16_t wMonth = 0;
   uint16_t wDay = 0;
   const wchar_t* pDate = wsDate.c_str();
-  int nIndex = 0, nStart = 0;
+  int nIndex = 0;
+  int nStart = 0;
   while (pDate[nIndex] != '\0' && nIndex < wCountY) {
-    if (!FXSYS_isDecimalDigit(pDate[nIndex])) {
+    if (!FXSYS_isDecimalDigit(pDate[nIndex]))
       return false;
-    }
+
     wYear = (pDate[nIndex] - '0') + wYear * 10;
     nIndex++;
   }
   if (bSymbol) {
-    if (pDate[nIndex] != 0x2D) {
+    if (pDate[nIndex] != 0x2D)
       return false;
-    }
     nIndex++;
   }
+
   nStart = nIndex;
   while (pDate[nIndex] != '\0' && nIndex - nStart < wCountM && nIndex < nLen) {
-    if (!FXSYS_isDecimalDigit(pDate[nIndex])) {
+    if (!FXSYS_isDecimalDigit(pDate[nIndex]))
       return false;
-    }
+
     wMonth = (pDate[nIndex] - '0') + wMonth * 10;
     nIndex++;
   }
   if (bSymbol) {
-    if (pDate[nIndex] != 0x2D) {
+    if (pDate[nIndex] != 0x2D)
       return false;
-    }
     nIndex++;
   }
+
   nStart = nIndex;
   while (pDate[nIndex] != '\0' && nIndex - nStart < wCountD && nIndex < nLen) {
-    if (!FXSYS_isDecimalDigit(pDate[nIndex])) {
+    if (!FXSYS_isDecimalDigit(pDate[nIndex]))
       return false;
-    }
+
     wDay = (pDate[nIndex] - '0') + wDay * 10;
     nIndex++;
   }
-  if (nIndex != nLen) {
+  if (nIndex != nLen)
     return false;
-  }
-  if (wYear < 1900 || wYear > 2029) {
+  if (wYear < 1900 || wYear > 2029)
     return false;
-  }
   if (wMonth < 1 || wMonth > 12) {
-    if (wMonth == 0 && nLen == wCountY) {
+    if (wMonth == 0 && nLen == wCountY)
       return true;
-    }
     return false;
   }
   if (wDay < 1) {
-    if (wDay == 0 && (nLen == wCountY + wCountM)) {
+    if (wDay == 0 && (nLen == wCountY + wCountM))
       return true;
-    }
     return false;
   }
   if (wMonth == 2) {
     if (wYear % 400 == 0 || (wYear % 100 != 0 && wYear % 4 == 0)) {
-      if (wDay > 29) {
+      if (wDay > 29)
         return false;
-      }
-    } else {
-      if (wDay > 28) {
-        return false;
-      }
+    } else if (wDay > 28) {
+      return false;
     }
   } else if (wDay > LastDay[wMonth - 1]) {
     return false;
@@ -533,6 +520,7 @@
   int nLen = wsTime.GetLength();
   if (nLen < 2)
     return false;
+
   const uint16_t wCountH = 2;
   const uint16_t wCountM = 2;
   const uint16_t wCountS = 2;
@@ -556,6 +544,7 @@
       return false;
     nIndex++;
   }
+
   nStart = nIndex;
   while (nIndex - nStart < wCountM && nIndex < nLen && pTime[nIndex]) {
     if (!FXSYS_isDecimalDigit(pTime[nIndex]))
@@ -635,14 +624,11 @@
   int32_t iCount = pdfium::CollectionSize<int32_t>(wsPatterns);
   for (int32_t i = 0; i < iCount && !bRet; i++) {
     CFX_WideString wsFormat = wsPatterns[i];
-    FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat);
-    eCategory = XFA_ValugeCategory(eCategory, m_dwType);
-    switch (eCategory) {
+    switch (ValueCategory(pFormat->GetCategory(wsFormat), m_dwType)) {
       case FX_LOCALECATEGORY_Null:
         bRet = pFormat->ParseNull(wsValue, wsFormat);
-        if (bRet) {
+        if (bRet)
           m_wsValue.clear();
-        }
         break;
       case FX_LOCALECATEGORY_Zero:
         bRet = pFormat->ParseZero(wsValue, wsFormat);
@@ -652,9 +638,8 @@
       case FX_LOCALECATEGORY_Num: {
         CFX_WideString fNum;
         bRet = pFormat->ParseNum(wsValue, wsFormat, fNum);
-        if (bRet) {
+        if (bRet)
           m_wsValue = fNum;
-        }
         break;
       }
       case FX_LOCALECATEGORY_Text:
@@ -702,19 +687,18 @@
   return bRet;
 }
 
-void CXFA_LocaleValue::GetNumbericFormat(CFX_WideString& wsFormat,
-                                         int32_t nIntLen,
-                                         int32_t nDecLen,
-                                         bool bSign) {
+void CXFA_LocaleValue::GetNumericFormat(CFX_WideString& wsFormat,
+                                        int32_t nIntLen,
+                                        int32_t nDecLen) {
   ASSERT(wsFormat.IsEmpty());
   ASSERT(nIntLen >= -1 && nDecLen >= -1);
-  int32_t nTotalLen = (nIntLen >= 0 ? nIntLen : 2) + (bSign ? 1 : 0) +
+
+  int32_t nTotalLen = (nIntLen >= 0 ? nIntLen : 2) + 1 +
                       (nDecLen >= 0 ? nDecLen : 2) + (nDecLen == 0 ? 0 : 1);
   wchar_t* lpBuf = wsFormat.GetBuffer(nTotalLen);
   int32_t nPos = 0;
-  if (bSign) {
-    lpBuf[nPos++] = L's';
-  }
+  lpBuf[nPos++] = L's';
+
   if (nIntLen == -1) {
     lpBuf[nPos++] = L'z';
     lpBuf[nPos++] = L'*';
@@ -738,37 +722,37 @@
   }
   wsFormat.ReleaseBuffer(nTotalLen);
 }
-bool CXFA_LocaleValue::ValidateNumericTemp(CFX_WideString& wsNumeric,
-                                           CFX_WideString& wsFormat,
-                                           IFX_Locale* pLocale,
-                                           int32_t* pos) {
-  if (wsFormat.IsEmpty() || wsNumeric.IsEmpty()) {
+
+bool CXFA_LocaleValue::ValidateNumericTemp(const CFX_WideString& wsNumeric,
+                                           const CFX_WideString& wsFormat,
+                                           IFX_Locale* pLocale) {
+  if (wsFormat.IsEmpty() || wsNumeric.IsEmpty())
     return true;
-  }
+
   const wchar_t* pNum = wsNumeric.c_str();
   const wchar_t* pFmt = wsFormat.c_str();
-  int32_t n = 0, nf = 0;
+  int32_t n = 0;
+  int32_t nf = 0;
   wchar_t c = pNum[n];
   wchar_t cf = pFmt[nf];
   if (cf == L's') {
-    if (c == L'-' || c == L'+') {
+    if (c == L'-' || c == L'+')
       ++n;
-    }
     ++nf;
   }
+
   bool bLimit = true;
   int32_t nCount = wsNumeric.GetLength();
   int32_t nCountFmt = wsFormat.GetLength();
   while (n < nCount && (bLimit ? nf < nCountFmt : true) &&
          FXSYS_isDecimalDigit(c = pNum[n])) {
     if (bLimit == true) {
-      if ((cf = pFmt[nf]) == L'*') {
+      if ((cf = pFmt[nf]) == L'*')
         bLimit = false;
-      } else if (cf == L'z') {
+      else if (cf == L'z')
         nf++;
-      } else {
+      else
         return false;
-      }
     }
     n++;
   }
@@ -781,6 +765,7 @@
     ASSERT(cf == L'z' || cf == L'*');
     ++nf;
   }
+
   CFX_WideString wsDecimalSymbol;
   if (pLocale)
     wsDecimalSymbol = pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal);
@@ -798,13 +783,12 @@
   while (n < nCount && (bLimit ? nf < nCountFmt : true) &&
          FXSYS_isDecimalDigit(c = pNum[n])) {
     if (bLimit == true) {
-      if ((cf = pFmt[nf]) == L'*') {
+      if ((cf = pFmt[nf]) == L'*')
         bLimit = false;
-      } else if (cf == L'z') {
+      else if (cf == L'z')
         nf++;
-      } else {
+      else
         return false;
-      }
     }
     n++;
   }
diff --git a/xfa/fxfa/parser/cxfa_localevalue.h b/xfa/fxfa/parser/cxfa_localevalue.h
index d263dba..caf4b0c 100644
--- a/xfa/fxfa/parser/cxfa_localevalue.h
+++ b/xfa/fxfa/parser/cxfa_localevalue.h
@@ -44,11 +44,30 @@
   bool ValidateValue(const CFX_WideString& wsValue,
                      const CFX_WideString& wsPattern,
                      IFX_Locale* pLocale,
-                     CFX_WideString* pMatchFormat = nullptr);
+                     CFX_WideString* pMatchFormat);
+
   bool FormatPatterns(CFX_WideString& wsResult,
                       const CFX_WideString& wsFormat,
                       IFX_Locale* pLocale,
                       XFA_VALUEPICTURE eValueType) const;
+
+  void GetNumericFormat(CFX_WideString& wsFormat,
+                        int32_t nIntLen,
+                        int32_t nDecLen);
+  bool ValidateNumericTemp(const CFX_WideString& wsNumeric,
+                           const CFX_WideString& wsFormat,
+                           IFX_Locale* pLocale);
+
+  CFX_WideString GetValue() const { return m_wsValue; }
+  uint32_t GetType() const { return m_dwType; }
+  double GetDoubleNum() const;
+  bool SetDate(const CFX_DateTime& d);
+  CFX_DateTime GetDate() const;
+  CFX_DateTime GetTime() const;
+
+  bool IsValid() const { return m_bValid; }
+
+ private:
   bool FormatSinglePattern(CFX_WideString& wsResult,
                            const CFX_WideString& wsFormat,
                            IFX_Locale* pLocale,
@@ -57,29 +76,14 @@
   bool ValidateCanonicalDate(const CFX_WideString& wsDate,
                              CFX_DateTime* unDate);
   bool ValidateCanonicalTime(const CFX_WideString& wsTime);
-  void GetNumbericFormat(CFX_WideString& wsFormat,
-                         int32_t nIntLen,
-                         int32_t nDecLen,
-                         bool bSign = true);
-  bool ValidateNumericTemp(CFX_WideString& wsNumeric,
-                           CFX_WideString& wsFormat,
-                           IFX_Locale* pLocale = nullptr,
-                           int32_t* pos = nullptr);
 
-  CFX_WideString GetValue() const;
-  uint32_t GetType() const;
-  double GetDoubleNum() const;
-  CFX_DateTime GetDate() const;
-  CFX_DateTime GetTime() const;
-  bool SetDate(const CFX_DateTime& d);
   bool SetTime(const CFX_DateTime& t);
   bool SetDateTime(const CFX_DateTime& dt);
-  bool IsValid() const { return m_bValid; }
 
- private:
   bool ParsePatternValue(const CFX_WideString& wsValue,
                          const CFX_WideString& wsPattern,
                          IFX_Locale* pLocale);
+
   CXFA_LocaleMgr* m_pLocaleMgr;
   CFX_WideString m_wsValue;
   uint32_t m_dwType;