Home | History | Annotate | Download | only in fxjs
      1 // Copyright 2017 PDFium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
      6 
      7 #include "fxjs/cjs_globalarrays.h"
      8 
      9 #define GLOBAL_ARRAY(rt, name, ...)                                          \
     10   {                                                                          \
     11     const wchar_t* values[] = {__VA_ARGS__};                                 \
     12     v8::Local<v8::Array> array = (rt)->NewArray();                           \
     13     for (size_t i = 0; i < FX_ArraySize(values); ++i)                        \
     14       array->Set(i, (rt)->NewString(values[i]));                             \
     15     (rt)->SetConstArray((name), array);                                      \
     16     (rt)->DefineGlobalConst(                                                 \
     17         (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) {        \
     18           CJS_Runtime* pCurrentRuntime =                                     \
     19               CJS_Runtime::CurrentRuntimeFromIsolate(info.GetIsolate());     \
     20           if (pCurrentRuntime)                                               \
     21             info.GetReturnValue().Set(pCurrentRuntime->GetConstArray(name)); \
     22         });                                                                  \
     23   }
     24 
     25 // static
     26 void CJS_GlobalArrays::DefineJSObjects(CJS_Runtime* pRuntime) {
     27   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_ENTRY_DOT_SEP", L"[+-]?\\d*\\.?\\d*");
     28   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_COMMIT_DOT_SEP",
     29                L"[+-]?\\d+(\\.\\d+)?",  // -1.0 or -1
     30                L"[+-]?\\.\\d+",         // -.1
     31                L"[+-]?\\d+\\.");        // -1.
     32 
     33   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_ENTRY_COMMA_SEP", L"[+-]?\\d*,?\\d*");
     34   GLOBAL_ARRAY(pRuntime, L"RE_NUMBER_COMMIT_COMMA_SEP",
     35                L"[+-]?\\d+([.,]\\d+)?",  // -1,0 or -1
     36                L"[+-]?[.,]\\d+",         // -,1
     37                L"[+-]?\\d+[.,]");        // -1,
     38 
     39   GLOBAL_ARRAY(pRuntime, L"RE_ZIP_ENTRY", L"\\d{0,5}");
     40   GLOBAL_ARRAY(pRuntime, L"RE_ZIP_COMMIT", L"\\d{5}");
     41   GLOBAL_ARRAY(pRuntime, L"RE_ZIP4_ENTRY", L"\\d{0,5}(\\.|[- ])?\\d{0,4}");
     42   GLOBAL_ARRAY(pRuntime, L"RE_ZIP4_COMMIT", L"\\d{5}(\\.|[- ])?\\d{4}");
     43   GLOBAL_ARRAY(pRuntime, L"RE_PHONE_ENTRY",
     44                // 555-1234 or 408 555-1234
     45                L"\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",
     46 
     47                // (408
     48                L"\\(\\d{0,3}",
     49 
     50                // (408) 555-1234
     51                // (allow the addition of parens as an afterthought)
     52                L"\\(\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",
     53 
     54                // (408 555-1234
     55                L"\\(\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",
     56 
     57                // 408) 555-1234
     58                L"\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}",
     59 
     60                // international
     61                L"011(\\.|[- \\d])*");
     62 
     63   GLOBAL_ARRAY(
     64       pRuntime, L"RE_PHONE_COMMIT", L"\\d{3}(\\.|[- ])?\\d{4}",  // 555-1234
     65       L"\\d{3}(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}",               // 408 555-1234
     66       L"\\(\\d{3}\\)(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}",  // (408) 555-1234
     67       L"011(\\.|[- \\d])*");                              // international
     68 
     69   GLOBAL_ARRAY(pRuntime, L"RE_SSN_ENTRY",
     70                L"\\d{0,3}(\\.|[- ])?\\d{0,2}(\\.|[- ])?\\d{0,4}");
     71 
     72   GLOBAL_ARRAY(pRuntime, L"RE_SSN_COMMIT",
     73                L"\\d{3}(\\.|[- ])?\\d{2}(\\.|[- ])?\\d{4}");
     74 }
     75