| OLD | NEW | 
|    1 // Copyright 2014 PDFium Authors. All rights reserved. |    1 // Copyright 2014 PDFium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |    5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|    6  |    6  | 
|    7 #include "fpdfsdk/src/javascript/Consts.h" |    7 #include "fpdfsdk/src/javascript/Consts.h" | 
|    8  |    8  | 
|    9 #include "fpdfsdk/include/javascript/IJavaScript.h" |    9 #include "fpdfsdk/include/javascript/IJavaScript.h" | 
|   10 #include "fpdfsdk/src/javascript/JS_Define.h" |   10 #include "fpdfsdk/src/javascript/JS_Define.h" | 
|   11 #include "fpdfsdk/src/javascript/JS_Object.h" |   11 #include "fpdfsdk/src/javascript/JS_Object.h" | 
|   12 #include "fpdfsdk/src/javascript/JS_Value.h" |   12 #include "fpdfsdk/src/javascript/JS_Value.h" | 
|   13  |   13  | 
 |   14 /* ------------------------------ border ------------------------------ */ | 
 |   15  | 
|   14 BEGIN_JS_STATIC_CONST(CJS_Border) |   16 BEGIN_JS_STATIC_CONST(CJS_Border) | 
|   15 JS_STATIC_CONST_ENTRY_STRING(L"s", L"solid") |   17 JS_STATIC_CONST_ENTRY_STRING(L"s", L"solid") | 
|   16 JS_STATIC_CONST_ENTRY_STRING(L"b", L"beveled") |   18 JS_STATIC_CONST_ENTRY_STRING(L"b", L"beveled") | 
|   17 JS_STATIC_CONST_ENTRY_STRING(L"d", L"dashed") |   19 JS_STATIC_CONST_ENTRY_STRING(L"d", L"dashed") | 
|   18 JS_STATIC_CONST_ENTRY_STRING(L"i", L"inset") |   20 JS_STATIC_CONST_ENTRY_STRING(L"i", L"inset") | 
|   19 JS_STATIC_CONST_ENTRY_STRING(L"u", L"underline") |   21 JS_STATIC_CONST_ENTRY_STRING(L"u", L"underline") | 
|   20 END_JS_STATIC_CONST() |   22 END_JS_STATIC_CONST() | 
 |   23  | 
|   21 IMPLEMENT_JS_CLASS_CONST(CJS_Border, border) |   24 IMPLEMENT_JS_CLASS_CONST(CJS_Border, border) | 
|   22  |   25  | 
 |   26 /* ------------------------------ display ------------------------------ */ | 
 |   27  | 
|   23 BEGIN_JS_STATIC_CONST(CJS_Display) |   28 BEGIN_JS_STATIC_CONST(CJS_Display) | 
|   24 JS_STATIC_CONST_ENTRY_NUMBER(L"visible", 0) |   29 JS_STATIC_CONST_ENTRY_NUMBER(L"visible", 0) | 
|   25 JS_STATIC_CONST_ENTRY_NUMBER(L"hidden", 1) |   30 JS_STATIC_CONST_ENTRY_NUMBER(L"hidden", 1) | 
|   26 JS_STATIC_CONST_ENTRY_NUMBER(L"noPrint", 2) |   31 JS_STATIC_CONST_ENTRY_NUMBER(L"noPrint", 2) | 
|   27 JS_STATIC_CONST_ENTRY_NUMBER(L"noView", 3) |   32 JS_STATIC_CONST_ENTRY_NUMBER(L"noView", 3) | 
|   28 END_JS_STATIC_CONST() |   33 END_JS_STATIC_CONST() | 
 |   34  | 
|   29 IMPLEMENT_JS_CLASS_CONST(CJS_Display, display) |   35 IMPLEMENT_JS_CLASS_CONST(CJS_Display, display) | 
|   30  |   36  | 
 |   37 /* ------------------------------ font ------------------------------ */ | 
 |   38  | 
|   31 BEGIN_JS_STATIC_CONST(CJS_Font) |   39 BEGIN_JS_STATIC_CONST(CJS_Font) | 
|   32 JS_STATIC_CONST_ENTRY_STRING(L"Times", L"Times-Roman") |   40 JS_STATIC_CONST_ENTRY_STRING(L"Times", L"Times-Roman") | 
|   33 JS_STATIC_CONST_ENTRY_STRING(L"TimesB", L"Times-Bold") |   41 JS_STATIC_CONST_ENTRY_STRING(L"TimesB", L"Times-Bold") | 
|   34 JS_STATIC_CONST_ENTRY_STRING(L"TimesI", L"Times-Italic") |   42 JS_STATIC_CONST_ENTRY_STRING(L"TimesI", L"Times-Italic") | 
|   35 JS_STATIC_CONST_ENTRY_STRING(L"TimesBI", L"Times-BoldItalic") |   43 JS_STATIC_CONST_ENTRY_STRING(L"TimesBI", L"Times-BoldItalic") | 
|   36 JS_STATIC_CONST_ENTRY_STRING(L"Helv", L"Helvetica") |   44 JS_STATIC_CONST_ENTRY_STRING(L"Helv", L"Helvetica") | 
|   37 JS_STATIC_CONST_ENTRY_STRING(L"HelvB", L"Helvetica-Bold") |   45 JS_STATIC_CONST_ENTRY_STRING(L"HelvB", L"Helvetica-Bold") | 
|   38 JS_STATIC_CONST_ENTRY_STRING(L"HelvI", L"Helvetica-Oblique") |   46 JS_STATIC_CONST_ENTRY_STRING(L"HelvI", L"Helvetica-Oblique") | 
|   39 JS_STATIC_CONST_ENTRY_STRING(L"HelvBI", L"Helvetica-BoldOblique") |   47 JS_STATIC_CONST_ENTRY_STRING(L"HelvBI", L"Helvetica-BoldOblique") | 
|   40 JS_STATIC_CONST_ENTRY_STRING(L"Cour", L"Courier") |   48 JS_STATIC_CONST_ENTRY_STRING(L"Cour", L"Courier") | 
|   41 JS_STATIC_CONST_ENTRY_STRING(L"CourB", L"Courier-Bold") |   49 JS_STATIC_CONST_ENTRY_STRING(L"CourB", L"Courier-Bold") | 
|   42 JS_STATIC_CONST_ENTRY_STRING(L"CourI", L"Courier-Oblique") |   50 JS_STATIC_CONST_ENTRY_STRING(L"CourI", L"Courier-Oblique") | 
|   43 JS_STATIC_CONST_ENTRY_STRING(L"CourBI", L"Courier-BoldOblique") |   51 JS_STATIC_CONST_ENTRY_STRING(L"CourBI", L"Courier-BoldOblique") | 
|   44 JS_STATIC_CONST_ENTRY_STRING(L"Symbol", L"Symbol") |   52 JS_STATIC_CONST_ENTRY_STRING(L"Symbol", L"Symbol") | 
|   45 JS_STATIC_CONST_ENTRY_STRING(L"ZapfD", L"ZapfDingbats") |   53 JS_STATIC_CONST_ENTRY_STRING(L"ZapfD", L"ZapfDingbats") | 
|   46 END_JS_STATIC_CONST() |   54 END_JS_STATIC_CONST() | 
 |   55  | 
|   47 IMPLEMENT_JS_CLASS_CONST(CJS_Font, font) |   56 IMPLEMENT_JS_CLASS_CONST(CJS_Font, font) | 
|   48  |   57  | 
 |   58 /* ------------------------------ highlight ------------------------------ */ | 
 |   59  | 
|   49 BEGIN_JS_STATIC_CONST(CJS_Highlight) |   60 BEGIN_JS_STATIC_CONST(CJS_Highlight) | 
|   50 JS_STATIC_CONST_ENTRY_STRING(L"n", L"none") |   61 JS_STATIC_CONST_ENTRY_STRING(L"n", L"none") | 
|   51 JS_STATIC_CONST_ENTRY_STRING(L"i", L"invert") |   62 JS_STATIC_CONST_ENTRY_STRING(L"i", L"invert") | 
|   52 JS_STATIC_CONST_ENTRY_STRING(L"p", L"push") |   63 JS_STATIC_CONST_ENTRY_STRING(L"p", L"push") | 
|   53 JS_STATIC_CONST_ENTRY_STRING(L"o", L"outline") |   64 JS_STATIC_CONST_ENTRY_STRING(L"o", L"outline") | 
|   54 END_JS_STATIC_CONST() |   65 END_JS_STATIC_CONST() | 
 |   66  | 
|   55 IMPLEMENT_JS_CLASS_CONST(CJS_Highlight, highlight) |   67 IMPLEMENT_JS_CLASS_CONST(CJS_Highlight, highlight) | 
|   56  |   68  | 
 |   69 /* ------------------------------ position ------------------------------ */ | 
 |   70  | 
|   57 BEGIN_JS_STATIC_CONST(CJS_Position) |   71 BEGIN_JS_STATIC_CONST(CJS_Position) | 
|   58 JS_STATIC_CONST_ENTRY_NUMBER(L"textOnly", 0) |   72 JS_STATIC_CONST_ENTRY_NUMBER(L"textOnly", 0) | 
|   59 JS_STATIC_CONST_ENTRY_NUMBER(L"iconOnly", 1) |   73 JS_STATIC_CONST_ENTRY_NUMBER(L"iconOnly", 1) | 
|   60 JS_STATIC_CONST_ENTRY_NUMBER(L"iconTextV", 2) |   74 JS_STATIC_CONST_ENTRY_NUMBER(L"iconTextV", 2) | 
|   61 JS_STATIC_CONST_ENTRY_NUMBER(L"textIconV", 3) |   75 JS_STATIC_CONST_ENTRY_NUMBER(L"textIconV", 3) | 
|   62 JS_STATIC_CONST_ENTRY_NUMBER(L"iconTextH", 4) |   76 JS_STATIC_CONST_ENTRY_NUMBER(L"iconTextH", 4) | 
|   63 JS_STATIC_CONST_ENTRY_NUMBER(L"textIconH", 5) |   77 JS_STATIC_CONST_ENTRY_NUMBER(L"textIconH", 5) | 
|   64 JS_STATIC_CONST_ENTRY_NUMBER(L"overlay", 6) |   78 JS_STATIC_CONST_ENTRY_NUMBER(L"overlay", 6) | 
|   65 END_JS_STATIC_CONST() |   79 END_JS_STATIC_CONST() | 
 |   80  | 
|   66 IMPLEMENT_JS_CLASS_CONST(CJS_Position, position) |   81 IMPLEMENT_JS_CLASS_CONST(CJS_Position, position) | 
|   67  |   82  | 
 |   83 /* ------------------------------ scaleHow ------------------------------ */ | 
 |   84  | 
|   68 BEGIN_JS_STATIC_CONST(CJS_ScaleHow) |   85 BEGIN_JS_STATIC_CONST(CJS_ScaleHow) | 
|   69 JS_STATIC_CONST_ENTRY_NUMBER(L"proportional", 0) |   86 JS_STATIC_CONST_ENTRY_NUMBER(L"proportional", 0) | 
|   70 JS_STATIC_CONST_ENTRY_NUMBER(L"anamorphic", 1) |   87 JS_STATIC_CONST_ENTRY_NUMBER(L"anamorphic", 1) | 
|   71 END_JS_STATIC_CONST() |   88 END_JS_STATIC_CONST() | 
 |   89  | 
|   72 IMPLEMENT_JS_CLASS_CONST(CJS_ScaleHow, scaleHow) |   90 IMPLEMENT_JS_CLASS_CONST(CJS_ScaleHow, scaleHow) | 
|   73  |   91  | 
 |   92 /* ------------------------------ scaleWhen ------------------------------ */ | 
 |   93  | 
|   74 BEGIN_JS_STATIC_CONST(CJS_ScaleWhen) |   94 BEGIN_JS_STATIC_CONST(CJS_ScaleWhen) | 
|   75 JS_STATIC_CONST_ENTRY_NUMBER(L"always", 0) |   95 JS_STATIC_CONST_ENTRY_NUMBER(L"always", 0) | 
|   76 JS_STATIC_CONST_ENTRY_NUMBER(L"never", 1) |   96 JS_STATIC_CONST_ENTRY_NUMBER(L"never", 1) | 
|   77 JS_STATIC_CONST_ENTRY_NUMBER(L"tooBig", 2) |   97 JS_STATIC_CONST_ENTRY_NUMBER(L"tooBig", 2) | 
|   78 JS_STATIC_CONST_ENTRY_NUMBER(L"tooSmall", 3) |   98 JS_STATIC_CONST_ENTRY_NUMBER(L"tooSmall", 3) | 
|   79 END_JS_STATIC_CONST() |   99 END_JS_STATIC_CONST() | 
 |  100  | 
|   80 IMPLEMENT_JS_CLASS_CONST(CJS_ScaleWhen, scaleWhen) |  101 IMPLEMENT_JS_CLASS_CONST(CJS_ScaleWhen, scaleWhen) | 
|   81  |  102  | 
 |  103 /* ------------------------------ style ------------------------------ */ | 
 |  104  | 
|   82 BEGIN_JS_STATIC_CONST(CJS_Style) |  105 BEGIN_JS_STATIC_CONST(CJS_Style) | 
|   83 JS_STATIC_CONST_ENTRY_STRING(L"ch", L"check") |  106 JS_STATIC_CONST_ENTRY_STRING(L"ch", L"check") | 
|   84 JS_STATIC_CONST_ENTRY_STRING(L"cr", L"cross") |  107 JS_STATIC_CONST_ENTRY_STRING(L"cr", L"cross") | 
|   85 JS_STATIC_CONST_ENTRY_STRING(L"di", L"diamond") |  108 JS_STATIC_CONST_ENTRY_STRING(L"di", L"diamond") | 
|   86 JS_STATIC_CONST_ENTRY_STRING(L"ci", L"circle") |  109 JS_STATIC_CONST_ENTRY_STRING(L"ci", L"circle") | 
|   87 JS_STATIC_CONST_ENTRY_STRING(L"st", L"star") |  110 JS_STATIC_CONST_ENTRY_STRING(L"st", L"star") | 
|   88 JS_STATIC_CONST_ENTRY_STRING(L"sq", L"square") |  111 JS_STATIC_CONST_ENTRY_STRING(L"sq", L"square") | 
|   89 END_JS_STATIC_CONST() |  112 END_JS_STATIC_CONST() | 
 |  113  | 
|   90 IMPLEMENT_JS_CLASS_CONST(CJS_Style, style) |  114 IMPLEMENT_JS_CLASS_CONST(CJS_Style, style) | 
|   91  |  115  | 
 |  116 /* ------------------------------ zoomtype ------------------------------ */ | 
 |  117  | 
|   92 BEGIN_JS_STATIC_CONST(CJS_Zoomtype) |  118 BEGIN_JS_STATIC_CONST(CJS_Zoomtype) | 
|   93 JS_STATIC_CONST_ENTRY_STRING(L"none", L"NoVary") |  119 JS_STATIC_CONST_ENTRY_STRING(L"none", L"NoVary") | 
|   94 JS_STATIC_CONST_ENTRY_STRING(L"fitP", L"FitPage") |  120 JS_STATIC_CONST_ENTRY_STRING(L"fitP", L"FitPage") | 
|   95 JS_STATIC_CONST_ENTRY_STRING(L"fitW", L"FitWidth") |  121 JS_STATIC_CONST_ENTRY_STRING(L"fitW", L"FitWidth") | 
|   96 JS_STATIC_CONST_ENTRY_STRING(L"fitH", L"FitHeight") |  122 JS_STATIC_CONST_ENTRY_STRING(L"fitH", L"FitHeight") | 
|   97 JS_STATIC_CONST_ENTRY_STRING(L"fitV", L"FitVisibleWidth") |  123 JS_STATIC_CONST_ENTRY_STRING(L"fitV", L"FitVisibleWidth") | 
|   98 JS_STATIC_CONST_ENTRY_STRING(L"pref", L"Preferred") |  124 JS_STATIC_CONST_ENTRY_STRING(L"pref", L"Preferred") | 
|   99 JS_STATIC_CONST_ENTRY_STRING(L"refW", L"ReflowWidth") |  125 JS_STATIC_CONST_ENTRY_STRING(L"refW", L"ReflowWidth") | 
|  100 END_JS_STATIC_CONST() |  126 END_JS_STATIC_CONST() | 
 |  127  | 
|  101 IMPLEMENT_JS_CLASS_CONST(CJS_Zoomtype, zoomtype) |  128 IMPLEMENT_JS_CLASS_CONST(CJS_Zoomtype, zoomtype) | 
|  102  |  129  | 
|  103 #define GLOBAL_STRING(rt, name, value)                                         \ |  130 /* ------------------------------ CJS_GlobalConsts ------------------------- */ | 
|  104   FXJS_DefineGlobalConst(                                                      \ |  131  | 
|  105       (rt)->GetIsolate(), (name),                                              \ |  132 static void DefineGlobalConstString(CJS_Runtime* pRuntime, | 
|  106       [](const v8::FunctionCallbackInfo<v8::Value>& info) {                    \ |  133                                     const wchar_t* pConstName, | 
|  107         info.GetReturnValue().Set(FXJS_NewString(info.GetIsolate(), (value))); \ |  134                                     const wchar_t* pValue) { | 
|  108       }) |  135   FXJS_DefineGlobalConst(pRuntime->GetIsolate(), pConstName, | 
 |  136                          FXJS_NewString(pRuntime->GetIsolate(), pValue)); | 
 |  137 } | 
|  109  |  138  | 
|  110 void CJS_GlobalConsts::DefineJSObjects(CJS_Runtime* pRuntime) { |  139 void CJS_GlobalConsts::DefineJSObjects(CJS_Runtime* pRuntime) { | 
|  111   GLOBAL_STRING(pRuntime, L"IDS_GREATER_THAN", |  140   DefineGlobalConstString( | 
|  112                 L"Invalid value: must be greater than or equal to % s."); |  141       pRuntime, L"IDS_GREATER_THAN", | 
|  113  |  142       L"Invalid value: must be greater than or equal to % s."); | 
|  114   GLOBAL_STRING(pRuntime, L"IDS_GT_AND_LT", |  143   DefineGlobalConstString( | 
|  115                 L"Invalid value: must be greater than or equal to % s " |  144       pRuntime, L"IDS_GT_AND_LT", | 
|  116                 L"and less than or equal to % s."); |  145       L"Invalid value: must be greater than or equal to % s " | 
|  117  |  146       L"and less than or equal to % s."); | 
|  118   GLOBAL_STRING(pRuntime, L"IDS_LESS_THAN", |  147   DefineGlobalConstString(pRuntime, L"IDS_LESS_THAN", | 
|  119                 L"Invalid value: must be less than or equal to % s."); |  148                           L"Invalid value: must be less than or equal to % s."); | 
|  120  |  149   DefineGlobalConstString(pRuntime, L"IDS_INVALID_MONTH", L"**Invalid**"); | 
|  121   GLOBAL_STRING(pRuntime, L"IDS_INVALID_MONTH", L"**Invalid**"); |  150   DefineGlobalConstString( | 
|  122   GLOBAL_STRING( |  | 
|  123       pRuntime, L"IDS_INVALID_DATE", |  151       pRuntime, L"IDS_INVALID_DATE", | 
|  124       L"Invalid date / time: please ensure that the date / time exists.Field"); |  152       L"Invalid date / time: please ensure that the date / time exists.Field"); | 
|  125  |  153   DefineGlobalConstString( | 
|  126   GLOBAL_STRING(pRuntime, L"IDS_INVALID_VALUE", |  154       pRuntime, L"IDS_INVALID_VALUE", | 
|  127                 L"The value entered does not match the format of the field"); |  155       L"The value entered does not match the format of the field"); | 
|  128  |  156   DefineGlobalConstString(pRuntime, L"IDS_AM", L"am"); | 
|  129   GLOBAL_STRING(pRuntime, L"IDS_AM", L"am"); |  157   DefineGlobalConstString(pRuntime, L"IDS_PM", L"pm"); | 
|  130   GLOBAL_STRING(pRuntime, L"IDS_PM", L"pm"); |  158   DefineGlobalConstString( | 
|  131   GLOBAL_STRING(pRuntime, L"IDS_MONTH_INFO", |  159       pRuntime, L"IDS_MONTH_INFO", | 
|  132                 L"January[1] February[2] March[3] April[4] May[5] " |  160       L"January[1] February[2] March[3] April[4] May[5] " | 
|  133                 L"June[6] July[7] August[8] September[9] October[10] " |  161       L"June[6] July[7] August[8] September[9] October[10] " | 
|  134                 L"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " |  162       L"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " | 
|  135                 L"Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] " |  163       L"Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] " | 
|  136                 L"Dec[12]"); |  164       L"Dec[12]"); | 
|  137  |  165   DefineGlobalConstString(pRuntime, L"IDS_STARTUP_CONSOLE_MSG", L"** ^ _ ^ **"); | 
|  138   GLOBAL_STRING(pRuntime, L"IDS_STARTUP_CONSOLE_MSG", L"** ^ _ ^ **"); |  | 
|  139 } |  166 } | 
|  140  |  167  | 
|  141 #define GLOBAL_ARRAY(rt, name, ...)                                   \ |  168 /* ------------------------------ CJS_GlobalArrays  ------------------------ */ | 
|  142   {                                                                   \ |  169  | 
|  143     const FX_WCHAR* values[] = {__VA_ARGS__};                         \ |  170 void DefineGlobalConstStringArray(CJS_Runtime* pRuntime, | 
|  144     v8::Local<v8::Array> array = FXJS_NewArray((rt)->GetIsolate());   \ |  171                                   const wchar_t* sConstName, | 
|  145     for (size_t i = 0; i < FX_ArraySize(values); ++i)                 \ |  172                                   const wchar_t** pValues, | 
|  146       array->Set(i, FXJS_NewString((rt)->GetIsolate(), values[i]));   \ |  173                                   size_t nValues) { | 
|  147     rt->SetConstArray(name, array);                                   \ |  174   CJS_Array array(pRuntime); | 
|  148     FXJS_DefineGlobalConst(                                           \ |  175   for (size_t i = 0; i < nValues; ++i) { | 
|  149         (rt)->GetIsolate(), (name),                                   \ |  176     array.SetElement(i, CJS_Value(pRuntime, pValues[i])); | 
|  150         [](const v8::FunctionCallbackInfo<v8::Value>& info) {         \ |  177   } | 
|  151           CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(          \ |  178   CJS_PropValue prop(pRuntime); | 
|  152               FXJS_GetRuntimeFromIsolate(info.GetIsolate()));         \ |  179   prop << array; | 
|  153           if (pRuntime)                                               \ |  180   FXJS_DefineGlobalConst(pRuntime->GetIsolate(), sConstName, prop.ToV8Value()); | 
|  154             info.GetReturnValue().Set(pRuntime->GetConstArray(name)); \ |  181 } | 
|  155         });                                                           \ |  182  | 
 |  183 void CJS_GlobalArrays::DefineJSObjects(CJS_Runtime* pRuntime) { | 
 |  184   { | 
 |  185     const FX_WCHAR* ArrayName = L"RE_NUMBER_ENTRY_DOT_SEP"; | 
 |  186     const FX_WCHAR* ArrayContent[] = {L"[+-]?\\d*\\.?\\d*"}; | 
 |  187     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  188                                  FX_ArraySize(ArrayContent)); | 
|  156   } |  189   } | 
|  157  |  190  | 
|  158 void CJS_GlobalArrays::DefineJSObjects(CJS_Runtime* pRuntime) { |  191   { | 
|  159   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_ENTRY_DOT_SEP", L"[+-]?\\d*\\.?\\d*"); |  192     const FX_WCHAR* ArrayName = L"RE_NUMBER_COMMIT_DOT_SEP"; | 
|  160   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_COMMIT_DOT_SEP", |  193     const FX_WCHAR* ArrayContent[] = { | 
|  161                L"[+-]?\\d+(\\.\\d+)?",  // -1.0 or -1 |  194         L"[+-]?\\d+(\\.\\d+)?", /* -1.0 or -1 */ | 
|  162                L"[+-]?\\.\\d+",         // -.1 |  195         L"[+-]?\\.\\d+",        /* -.1 */ | 
|  163                L"[+-]?\\d+\\.");        // -1. |  196         L"[+-]?\\d+\\."         /* -1. */ | 
 |  197     }; | 
 |  198     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  199                                  FX_ArraySize(ArrayContent)); | 
 |  200   } | 
|  164  |  201  | 
|  165   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_ENTRY_COMMA_SEP", L"[+-]?\\d*,?\\d*"); |  202   { | 
|  166   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_COMMIT_COMMA_SEP", |  203     const FX_WCHAR* ArrayName = L"RE_NUMBER_ENTRY_COMMA_SEP"; | 
|  167                L"[+-]?\\d+([.,]\\d+)?",  // -1,0 or -1 |  204     const FX_WCHAR* ArrayContent[] = {L"[+-]?\\d*,?\\d*"}; | 
|  168                L"[+-]?[.,]\\d+",         // -,1 |  | 
|  169                L"[+-]?\\d+[.,]");        // -1, |  | 
|  170  |  205  | 
|  171   GLOBAL_ARRAY(pRuntime, L"RE_ZIP_ENTRY", L"\\d{0,5}"); |  206     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
|  172   GLOBAL_ARRAY(pRuntime, L"RE_ZIP_COMMIT", L"\\d{5}"); |  207                                  FX_ArraySize(ArrayContent)); | 
|  173   GLOBAL_ARRAY(pRuntime, L"RE_ZIP4_ENTRY", L"\\d{0,5}(\\.|[- ])?\\d{0,4}"); |  208   } | 
|  174   GLOBAL_ARRAY(pRuntime, L"RE_ZIP4_COMMIT", L"\\d{5}(\\.|[- ])?\\d{4}"); |  | 
|  175   GLOBAL_ARRAY(pRuntime, L"RE_PHONE_ENTRY", |  | 
|  176                // 555-1234 or 408 555-1234 |  | 
|  177                L"\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", |  | 
|  178  |  209  | 
|  179                // (408 |  210   { | 
|  180                L"\\(\\d{0,3}", |  211     const FX_WCHAR* ArrayName = L"RE_NUMBER_COMMIT_COMMA_SEP"; | 
 |  212     const FX_WCHAR* ArrayContent[] = { | 
 |  213         L"[+-]?\\d+([.,]\\d+)?", /* -1,0 or -1 */ | 
 |  214         L"[+-]?[.,]\\d+",        /* -,1 */ | 
 |  215         L"[+-]?\\d+[.,]"         /* -1, */ | 
 |  216     }; | 
 |  217     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  218                                  FX_ArraySize(ArrayContent)); | 
 |  219   } | 
|  181  |  220  | 
|  182                // (408) 555-1234 |  221   { | 
|  183                // (allow the addition of parens as an afterthought) |  222     const FX_WCHAR* ArrayName = L"RE_ZIP_ENTRY"; | 
|  184                L"\\(\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", |  223     const FX_WCHAR* ArrayContent[] = {L"\\d{0,5}"}; | 
 |  224     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  225                                  FX_ArraySize(ArrayContent)); | 
 |  226   } | 
|  185  |  227  | 
|  186                // (408 555-1234 |  228   { | 
|  187                L"\\(\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", |  229     const FX_WCHAR* ArrayName = L"RE_ZIP_COMMIT"; | 
 |  230     const FX_WCHAR* ArrayContent[] = {L"\\d{5}"}; | 
 |  231     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  232                                  FX_ArraySize(ArrayContent)); | 
 |  233   } | 
|  188  |  234  | 
|  189                // 408) 555-1234 |  235   { | 
|  190                L"\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", |  236     const FX_WCHAR* ArrayName = L"RE_ZIP4_ENTRY"; | 
 |  237     const FX_WCHAR* ArrayContent[] = {L"\\d{0,5}(\\.|[- ])?\\d{0,4}"}; | 
 |  238     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  239                                  FX_ArraySize(ArrayContent)); | 
 |  240   } | 
|  191  |  241  | 
|  192                // international |  242   { | 
|  193                L"011(\\.|[- \\d])*"); |  243     const FX_WCHAR* ArrayName = L"RE_ZIP4_COMMIT"; | 
 |  244     const FX_WCHAR* ArrayContent[] = {L"\\d{5}(\\.|[- ])?\\d{4}"}; | 
 |  245     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  246                                  FX_ArraySize(ArrayContent)); | 
 |  247   } | 
|  194  |  248  | 
|  195   GLOBAL_ARRAY( |  249   { | 
|  196       pRuntime, L"RE_PHONE_COMMIT", L"\\d{3}(\\.|[- ])?\\d{4}",  // 555-1234 |  250     const FX_WCHAR* ArrayName = L"RE_PHONE_ENTRY"; | 
|  197       L"\\d{3}(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}",               // 408 555-1234 |  251     const FX_WCHAR* ArrayContent[] = { | 
|  198       L"\\(\\d{3}\\)(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}",  // (408) 555-1234 |  252         L"\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",  // 555-1234 or 408 | 
|  199       L"011(\\.|[- \\d])*");                              // international |  253                                                             // 555-1234 | 
 |  254         L"\\(\\d{0,3}",                                     // (408 | 
 |  255         L"\\(\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",  // (408) | 
 |  256                                                                   // 555-1234 | 
 |  257         // (allow the addition of parens as an afterthought) | 
 |  258         L"\\(\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",  // (408 555-1234 | 
|  200  |  259  | 
|  201   GLOBAL_ARRAY(pRuntime, L"RE_SSN_ENTRY", |  260         L"\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",  // 408) 555-1234 | 
|  202                L"\\d{0,3}(\\.|[- ])?\\d{0,2}(\\.|[- ])?\\d{0,4}"); |  | 
|  203  |  261  | 
|  204   GLOBAL_ARRAY(pRuntime, L"RE_SSN_COMMIT", |  262         L"011(\\.|[- \\d])*"  // international | 
|  205                L"\\d{3}(\\.|[- ])?\\d{2}(\\.|[- ])?\\d{4}"); |  263     }; | 
 |  264     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  265                                  FX_ArraySize(ArrayContent)); | 
 |  266   } | 
 |  267  | 
 |  268   { | 
 |  269     const FX_WCHAR* ArrayName = L"RE_PHONE_COMMIT"; | 
 |  270     const FX_WCHAR* ArrayContent[] = { | 
 |  271         L"\\d{3}(\\.|[- ])?\\d{4}",                         // 555-1234 | 
 |  272         L"\\d{3}(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}",        // 408 555-1234 | 
 |  273         L"\\(\\d{3}\\)(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}",  // (408) 555-1234 | 
 |  274         L"011(\\.|[- \\d])*"                                // international | 
 |  275     }; | 
 |  276     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  277                                  FX_ArraySize(ArrayContent)); | 
 |  278   } | 
 |  279  | 
 |  280   { | 
 |  281     const FX_WCHAR* ArrayName = L"RE_SSN_ENTRY"; | 
 |  282     const FX_WCHAR* ArrayContent[] = { | 
 |  283         L"\\d{0,3}(\\.|[- ])?\\d{0,2}(\\.|[- ])?\\d{0,4}"}; | 
 |  284     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  285                                  FX_ArraySize(ArrayContent)); | 
 |  286   } | 
 |  287  | 
 |  288   { | 
 |  289     const FX_WCHAR* ArrayName = L"RE_SSN_COMMIT"; | 
 |  290     const FX_WCHAR* ArrayContent[] = { | 
 |  291         L"\\d{3}(\\.|[- ])?\\d{2}(\\.|[- ])?\\d{4}"}; | 
 |  292     DefineGlobalConstStringArray(pRuntime, ArrayName, ArrayContent, | 
 |  293                                  FX_ArraySize(ArrayContent)); | 
 |  294   } | 
|  206 } |  295 } | 
| OLD | NEW |