Index: xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
index 20b4ef9077e2e62c2efbf7c0c0cc42e6d51dc1aa..cfe5bd61354517a1adea1d17e50e6b22664a7aa7 100644 |
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
@@ -1602,8 +1602,7 @@ void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis, |
else |
wsFormat = CFX_WideString::FromUTF8(formatString.AsStringC()); |
- wsFormat = FX_WSTRC(L"time{") + wsFormat; |
- wsFormat += FX_WSTRC(L"}"); |
+ wsFormat = L"time{" + wsFormat + L"}"; |
CXFA_LocaleValue localeValue(XFA_VT_TIME, |
CFX_WideString::FromUTF8(timeString.AsStringC()), |
wsFormat, pLocale, pMgr); |
@@ -2015,8 +2014,7 @@ FX_BOOL CXFA_FM2JSContext::Local2IsoTime(CFXJSE_Value* pThis, |
else |
wsFormat = CFX_WideString::FromUTF8(szFormat); |
- wsFormat = FX_WSTRC(L"time{") + wsFormat; |
- wsFormat += FX_WSTRC(L"}"); |
+ wsFormat = L"time{" + wsFormat + L"}"; |
CXFA_LocaleValue widgetValue(XFA_VT_TIME, CFX_WideString::FromUTF8(szTime), |
wsFormat, pLocale, pMgr); |
CFX_Unitime utime = widgetValue.GetTime(); |
@@ -2092,8 +2090,7 @@ FX_BOOL CXFA_FM2JSContext::IsoTime2Local(CFXJSE_Value* pThis, |
else |
wsFormat = CFX_WideString::FromUTF8(szFormat); |
- wsFormat = FX_WSTRC(L"time{") + wsFormat; |
- wsFormat += FX_WSTRC(L"}"); |
+ wsFormat = L"time{" + wsFormat + L"}"; |
CXFA_LocaleValue widgetValue(XFA_VT_TIME, CFX_WideString::FromUTF8(szTime), |
pMgr); |
CFX_WideString wsRet; |
@@ -2132,8 +2129,7 @@ FX_BOOL CXFA_FM2JSContext::GetGMTTime(CFXJSE_Value* pThis, |
else |
wsFormat = CFX_WideString::FromUTF8(szFormat); |
- wsFormat = FX_WSTRC(L"time{") + wsFormat; |
- wsFormat += FX_WSTRC(L"}"); |
+ wsFormat = L"time{" + wsFormat + L"}"; |
CXFA_LocaleValue widgetValue(XFA_VT_TIME, CFX_WideString::FromUTF8(szTime), |
pMgr); |
CFX_WideString wsRet; |
@@ -3680,41 +3676,47 @@ void CXFA_FM2JSContext::Encode(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
+ if (argc < 1 || argc > 2) { |
+ ToJSContext(pThis, nullptr) |
+ ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Encode"); |
+ return; |
+ } |
+ |
if (argc == 1) { |
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
if (ValueIsNull(pThis, argOne.get())) { |
args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString toEncodeString; |
- ValueToUTF8String(argOne.get(), toEncodeString); |
- CFX_ByteTextBuf resultBuf; |
- EncodeURL(toEncodeString.AsStringC(), resultBuf); |
- args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
- } |
- } else if (argc == 2) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- if (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString toEncodeString; |
- ValueToUTF8String(argOne.get(), toEncodeString); |
- CFX_ByteString identifyString; |
- ValueToUTF8String(argTwo.get(), identifyString); |
- CFX_ByteTextBuf resultBuf; |
- if (identifyString.EqualNoCase("html")) { |
- EncodeHTML(toEncodeString.AsStringC(), resultBuf); |
- } else if (identifyString.EqualNoCase("xml")) { |
- EncodeXML(toEncodeString.AsStringC(), resultBuf); |
- } else { |
- EncodeURL(toEncodeString.AsStringC(), resultBuf); |
- } |
- args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
+ return; |
} |
- } else { |
- ToJSContext(pThis, nullptr) |
- ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Encode"); |
+ |
+ CFX_ByteString toEncodeString; |
+ ValueToUTF8String(argOne.get(), toEncodeString); |
+ CFX_ByteTextBuf resultBuf; |
+ EncodeURL(toEncodeString.AsStringC(), resultBuf); |
+ args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ if (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString toEncodeString; |
+ ValueToUTF8String(argOne.get(), toEncodeString); |
+ CFX_ByteString identifyString; |
+ ValueToUTF8String(argTwo.get(), identifyString); |
+ CFX_ByteTextBuf resultBuf; |
+ if (identifyString.EqualNoCase("html")) |
+ EncodeHTML(toEncodeString.AsStringC(), resultBuf); |
+ else if (identifyString.EqualNoCase("xml")) |
+ EncodeXML(toEncodeString.AsStringC(), resultBuf); |
+ else |
+ EncodeURL(toEncodeString.AsStringC(), resultBuf); |
+ |
+ args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
} |
// static |
@@ -3722,8 +3724,6 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
CFX_ByteTextBuf& szResultBuf) { |
CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString); |
CFX_WideTextBuf wsResultBuf; |
- FX_WCHAR ch = 0; |
- int32_t iLength = wsURLString.GetLength(); |
FX_WCHAR strEncode[4]; |
strEncode[0] = '%'; |
strEncode[3] = 0; |
@@ -3732,10 +3732,10 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
FX_WCHAR strReserved[] = {';', '/', '?', ':', '@', '=', '&'}; |
FX_WCHAR strSpecial[] = {'$', '-', '+', '!', '*', '\'', '(', ')', ','}; |
const FX_WCHAR* strCode = L"0123456789abcdef"; |
- for (int32_t u = 0; u < iLength; ++u) { |
- ch = wsURLString.GetAt(u); |
+ for (int32_t u = 0; u < wsURLString.GetLength(); ++u) { |
+ FX_WCHAR ch = wsURLString.GetAt(u); |
int32_t i = 0; |
- int32_t iCount = sizeof(strUnsafe) / sizeof(strUnsafe[0]); |
+ int32_t iCount = FX_ArraySize(strUnsafe); |
while (i < iCount) { |
if (ch == strUnsafe[i]) { |
int32_t iIndex = ch / 16; |
@@ -3746,11 +3746,11 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
} |
++i; |
} |
- if (i < iCount) { |
+ if (i < iCount) |
continue; |
- } |
+ |
i = 0; |
- iCount = sizeof(strReserved) / sizeof(strReserved[0]); |
+ iCount = FX_ArraySize(strReserved); |
while (i < iCount) { |
if (ch == strReserved[i]) { |
int32_t iIndex = ch / 16; |
@@ -3761,11 +3761,11 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
} |
++i; |
} |
- if (i < iCount) { |
+ if (i < iCount) |
continue; |
- } |
+ |
i = 0; |
- iCount = sizeof(strSpecial) / sizeof(strSpecial[0]); |
+ iCount = FX_ArraySize(strSpecial); |
while (i < iCount) { |
if (ch == strSpecial[i]) { |
wsResultBuf.AppendChar(ch); |
@@ -3773,15 +3773,10 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
} |
++i; |
} |
- if (i < iCount) { |
+ if (i < iCount) |
continue; |
- } |
- if (ch >= 0x80 && ch <= 0xff) { |
- int32_t iIndex = ch / 16; |
- strEncode[1] = strCode[iIndex]; |
- strEncode[2] = strCode[ch - iIndex * 16]; |
- wsResultBuf << FX_WSTRC(strEncode); |
- } else if (ch <= 0x1f || ch == 0x7f) { |
+ |
+ if ((ch >= 0x80 && ch <= 0xff) || ch <= 0x1f || ch == 0x7f) { |
int32_t iIndex = ch / 16; |
strEncode[1] = strCode[iIndex]; |
strEncode[2] = strCode[ch - iIndex * 16]; |
@@ -3798,9 +3793,9 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
} |
strTmp += strCode[ch]; |
int32_t iLen = strTmp.GetLength(); |
- if (iLen < 2) { |
+ if (iLen < 2) |
break; |
- } |
+ |
int32_t iIndex = 0; |
if (iLen % 2 != 0) { |
strEncode[1] = '0'; |
@@ -3822,6 +3817,7 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, |
} |
wsResultBuf.AppendChar(0); |
szResultBuf.Clear(); |
+ |
szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()) |
.AsStringC(); |
} |
@@ -3841,43 +3837,39 @@ void CXFA_FM2JSContext::EncodeHTML(const CFX_ByteStringC& szHTMLString, |
strEncode[7] = ';'; |
strEncode[8] = 0; |
CFX_WideTextBuf wsResultBuf; |
- uint32_t ch = 0; |
int32_t iLen = wsHTMLString.GetLength(); |
int32_t i = 0; |
const FX_WCHAR* pData = wsHTMLString.c_str(); |
- int32_t iIndex = 0; |
- CFX_WideString htmlReserve; |
while (i < iLen) { |
- ch = pData[i]; |
- htmlReserve.clear(); |
+ uint32_t ch = pData[i]; |
+ CFX_WideString htmlReserve; |
if (HTMLCode2STR(ch, htmlReserve)) { |
wsResultBuf.AppendChar(L'&'); |
wsResultBuf << htmlReserve; |
wsResultBuf.AppendChar(L';'); |
+ } else if (ch >= 32 && ch <= 126) { |
+ wsResultBuf.AppendChar((FX_WCHAR)ch); |
+ } else if (ch < 256) { |
+ int32_t iIndex = ch / 16; |
+ strEncode[3] = strCode[iIndex]; |
+ strEncode[4] = strCode[ch - iIndex * 16]; |
+ strEncode[5] = ';'; |
+ strEncode[6] = 0; |
+ wsResultBuf << FX_WSTRC(strEncode); |
} else { |
- if (ch >= 32 && ch <= 126) { |
- wsResultBuf.AppendChar((FX_WCHAR)ch); |
- } else if (ch < 256) { |
- iIndex = ch / 16; |
- strEncode[3] = strCode[iIndex]; |
- strEncode[4] = strCode[ch - iIndex * 16]; |
- strEncode[5] = ';'; |
- strEncode[6] = 0; |
- wsResultBuf << FX_WSTRC(strEncode); |
- } else { |
- int32_t iBigByte = ch / 256; |
- int32_t iLittleByte = ch % 256; |
- strEncode[3] = strCode[iBigByte / 16]; |
- strEncode[4] = strCode[iBigByte % 16]; |
- strEncode[5] = strCode[iLittleByte / 16]; |
- strEncode[6] = strCode[iLittleByte % 16]; |
- wsResultBuf << FX_WSTRC(strEncode); |
- } |
+ int32_t iBigByte = ch / 256; |
+ int32_t iLittleByte = ch % 256; |
+ strEncode[3] = strCode[iBigByte / 16]; |
+ strEncode[4] = strCode[iBigByte % 16]; |
+ strEncode[5] = strCode[iLittleByte / 16]; |
+ strEncode[6] = strCode[iLittleByte % 16]; |
+ wsResultBuf << FX_WSTRC(strEncode); |
} |
++i; |
} |
wsResultBuf.AppendChar(0); |
szResultBuf.Clear(); |
+ |
szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()) |
.AsStringC(); |
} |
@@ -3887,13 +3879,6 @@ void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, |
CFX_ByteTextBuf& szResultBuf) { |
CFX_WideString wsXMLString = CFX_WideString::FromUTF8(szXMLString); |
CFX_WideTextBuf wsResultBuf; |
- enum { |
- QUOT, |
- AMP, |
- APOS, |
- LT, |
- GT, |
- }; |
FX_WCHAR strEncode[9]; |
strEncode[0] = '&'; |
strEncode[1] = '#'; |
@@ -3902,46 +3887,41 @@ void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, |
strEncode[6] = 0; |
strEncode[7] = ';'; |
strEncode[8] = 0; |
- const FX_WCHAR* const strName[] = {L"quot", L"amp", L"apos", L"lt", L"gt"}; |
const FX_WCHAR* strCode = L"0123456789abcdef"; |
- FX_WCHAR ch = 0; |
- int32_t iLength = wsXMLString.GetLength(); |
- int32_t iIndex = 0; |
- int32_t u = 0; |
const FX_WCHAR* pData = wsXMLString.c_str(); |
- for (u = 0; u < iLength; ++u) { |
- ch = pData[u]; |
+ for (int32_t u = 0; u < wsXMLString.GetLength(); ++u) { |
+ FX_WCHAR ch = pData[u]; |
switch (ch) { |
case '"': |
wsResultBuf.AppendChar('&'); |
- wsResultBuf << CFX_WideStringC(strName[QUOT]); |
+ wsResultBuf << CFX_WideStringC(L"quot"); |
wsResultBuf.AppendChar(';'); |
break; |
case '&': |
wsResultBuf.AppendChar('&'); |
- wsResultBuf << CFX_WideStringC(strName[AMP]); |
+ wsResultBuf << CFX_WideStringC(L"amp"); |
wsResultBuf.AppendChar(';'); |
break; |
case '\'': |
wsResultBuf.AppendChar('&'); |
- wsResultBuf << CFX_WideStringC(strName[APOS]); |
+ wsResultBuf << CFX_WideStringC(L"apos"); |
wsResultBuf.AppendChar(';'); |
break; |
case '<': |
wsResultBuf.AppendChar('&'); |
- wsResultBuf << CFX_WideStringC(strName[LT]); |
+ wsResultBuf << CFX_WideStringC(L"lt"); |
wsResultBuf.AppendChar(';'); |
break; |
case '>': |
wsResultBuf.AppendChar('&'); |
- wsResultBuf << CFX_WideStringC(strName[GT]); |
+ wsResultBuf << CFX_WideStringC(L"gt"); |
wsResultBuf.AppendChar(';'); |
break; |
default: { |
if (ch >= 32 && ch <= 126) { |
wsResultBuf.AppendChar(ch); |
} else if (ch < 256) { |
- iIndex = ch / 16; |
+ int32_t iIndex = ch / 16; |
strEncode[3] = strCode[iIndex]; |
strEncode[4] = strCode[ch - iIndex * 16]; |
strEncode[5] = ';'; |
@@ -3956,11 +3936,13 @@ void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, |
strEncode[6] = strCode[iLittleByte % 16]; |
wsResultBuf << FX_WSTRC(strEncode); |
} |
- } break; |
+ break; |
+ } |
} |
} |
wsResultBuf.AppendChar(0); |
szResultBuf.Clear(); |
+ |
szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()) |
.AsStringC(); |
} |
@@ -3978,11 +3960,11 @@ FX_BOOL CXFA_FM2JSContext::HTMLSTR2Code(const CFX_WideStringC& pData, |
iCode = htmlhashedreservecode.m_uCode; |
return TRUE; |
} |
- if (uHash < htmlhashedreservecode.m_uHash) { |
+ |
+ if (uHash < htmlhashedreservecode.m_uHash) |
iEnd = iMid - 1; |
- } else { |
+ else |
iStart = iMid + 1; |
- } |
} while (iStart <= iEnd); |
return FALSE; |
} |
@@ -3990,21 +3972,20 @@ FX_BOOL CXFA_FM2JSContext::HTMLSTR2Code(const CFX_WideStringC& pData, |
// static |
FX_BOOL CXFA_FM2JSContext::HTMLCode2STR(uint32_t iCode, |
CFX_WideString& wsHTMLReserve) { |
- XFA_FMHtmlReserveCode htmlreservecode; |
- int32_t iStart = 0, |
- iEnd = (sizeof(reservesForEncode) / sizeof(reservesForEncode[0])) - 1; |
- int32_t iMid = (iStart + iEnd) / 2; |
+ int32_t iStart = 0; |
+ int32_t iEnd = FX_ArraySize(reservesForEncode) - 1; |
do { |
- iMid = (iStart + iEnd) / 2; |
- htmlreservecode = reservesForEncode[iMid]; |
+ int32_t iMid = (iStart + iEnd) / 2; |
+ XFA_FMHtmlReserveCode htmlreservecode = reservesForEncode[iMid]; |
if (iCode == htmlreservecode.m_uCode) { |
wsHTMLReserve = htmlreservecode.m_htmlReserve; |
return TRUE; |
- } else if (iCode < htmlreservecode.m_uCode) { |
+ } |
+ |
+ if (iCode < htmlreservecode.m_uCode) |
iEnd = iMid - 1; |
- } else { |
+ else |
iStart = iMid + 1; |
- } |
} while (iStart <= iEnd); |
return FALSE; |
} |
@@ -4014,129 +3995,123 @@ void CXFA_FM2JSContext::Format(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
- if (args.GetLength() >= 2) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- CFX_ByteString szPattern; |
- ValueToUTF8String(argOne.get(), szPattern); |
- CFX_ByteString szValue; |
- ValueToUTF8String(argTwo.get(), szValue); |
- CXFA_Document* pDoc = pContext->GetDocument(); |
- IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); |
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); |
- ASSERT(pThisNode); |
- CXFA_WidgetData widgetData(pThisNode); |
- IFX_Locale* pLocale = widgetData.GetLocal(); |
- uint32_t patternType; |
- CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern.AsStringC()); |
- CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); |
- if (!PatternStringType(szPattern.AsStringC(), patternType)) { |
- switch (patternType) { |
- case XFA_VT_DATETIME: { |
- FX_STRSIZE iTChar = wsPattern.Find(L'T'); |
- CFX_WideString wsDatePattern(L"date{"); |
- wsDatePattern += wsPattern.Left(iTChar); |
- wsDatePattern += FX_WSTRC(L"} "); |
- CFX_WideString wsTimePattern(L"time{"); |
- wsTimePattern += wsPattern.Mid(iTChar + 1); |
- wsTimePattern += FX_WSTRC(L"}"); |
- wsPattern = wsDatePattern + wsTimePattern; |
- } break; |
- case XFA_VT_DATE: { |
- wsPattern = FX_WSTRC(L"date{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- } break; |
- case XFA_VT_TIME: { |
- wsPattern = FX_WSTRC(L"time{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- } break; |
- case XFA_VT_TEXT: { |
- wsPattern = FX_WSTRC(L"text{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- } break; |
- case XFA_VT_FLOAT: { |
- wsPattern = FX_WSTRC(L"num{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- } break; |
- default: { |
- CFX_WideString wsTestPattern; |
- wsTestPattern = FX_WSTRC(L"num{") + wsPattern; |
- wsTestPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue tempLocaleValue(XFA_VT_FLOAT, wsValue, wsTestPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (tempLocaleValue.IsValid()) { |
- wsPattern = wsTestPattern; |
- patternType = XFA_VT_FLOAT; |
- } else { |
- wsTestPattern = FX_WSTRC(L"text{") + wsPattern; |
- wsTestPattern += FX_WSTRC(L"}"); |
- wsPattern = wsTestPattern; |
- patternType = XFA_VT_TEXT; |
- } |
- } break; |
- } |
- } |
- CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, |
- (CXFA_LocaleMgr*)pMgr); |
- CFX_WideString wsRet; |
- if (localeValue.FormatPatterns(wsRet, wsPattern, pLocale, |
- XFA_VALUEPICTURE_Display)) { |
- args.GetReturnValue()->SetString( |
- FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()).AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } else { |
+ if (args.GetLength() < 2) { |
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Format"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ CFX_ByteString szPattern; |
+ ValueToUTF8String(argOne.get(), szPattern); |
+ |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ CFX_ByteString szValue; |
+ ValueToUTF8String(argTwo.get(), szValue); |
+ |
+ CXFA_Document* pDoc = pContext->GetDocument(); |
+ CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr(); |
+ CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); |
+ ASSERT(pThisNode); |
+ |
+ CXFA_WidgetData widgetData(pThisNode); |
+ IFX_Locale* pLocale = widgetData.GetLocal(); |
+ uint32_t patternType; |
+ CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern.AsStringC()); |
+ CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); |
+ if (!PatternStringType(szPattern.AsStringC(), patternType)) { |
+ switch (patternType) { |
+ case XFA_VT_DATETIME: { |
+ FX_STRSIZE iTChar = wsPattern.Find(L'T'); |
+ CFX_WideString wsDatePattern(L"date{"); |
+ wsDatePattern += wsPattern.Left(iTChar) + L"} "; |
+ |
+ CFX_WideString wsTimePattern(L"time{"); |
+ wsTimePattern += wsPattern.Mid(iTChar + 1) + L"}"; |
+ wsPattern = wsDatePattern + wsTimePattern; |
+ } break; |
+ case XFA_VT_DATE: { |
+ wsPattern = L"date{" + wsPattern + L"}"; |
+ } break; |
+ case XFA_VT_TIME: { |
+ wsPattern = L"time{" + wsPattern + L"}"; |
+ } break; |
+ case XFA_VT_TEXT: { |
+ wsPattern = L"text{" + wsPattern + L"}"; |
+ } break; |
+ case XFA_VT_FLOAT: { |
+ wsPattern = L"num{" + wsPattern + L"}"; |
+ } break; |
+ default: { |
+ CFX_WideString wsTestPattern; |
+ wsTestPattern = L"num{" + wsPattern + L"}"; |
+ CXFA_LocaleValue tempLocaleValue(XFA_VT_FLOAT, wsValue, wsTestPattern, |
+ pLocale, pMgr); |
+ if (tempLocaleValue.IsValid()) { |
+ wsPattern = wsTestPattern; |
+ patternType = XFA_VT_FLOAT; |
+ } else { |
+ wsTestPattern = L"text{" + wsPattern + L"}"; |
+ wsPattern = wsTestPattern; |
+ patternType = XFA_VT_TEXT; |
+ } |
+ } break; |
+ } |
+ } |
+ CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, pMgr); |
+ CFX_WideString wsRet; |
+ if (!localeValue.FormatPatterns(wsRet, wsPattern, pLocale, |
+ XFA_VALUEPICTURE_Display)) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
} |
+ |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()).AsStringC()); |
} |
// static |
void CXFA_FM2JSContext::Left(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- FX_BOOL argIsNull = FALSE; |
- if ((ValueIsNull(pThis, argOne.get())) || |
- (ValueIsNull(pThis, argTwo.get()))) { |
- argIsNull = TRUE; |
- } |
- if (argIsNull) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString sourceString; |
- ValueToUTF8String(argOne.get(), sourceString); |
- int32_t count = ValueToInteger(pThis, argTwo.get()); |
- if (count < 0) { |
- count = 0; |
- } |
- args.GetReturnValue()->SetString(sourceString.Left(count).AsStringC()); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Left"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ if ((ValueIsNull(pThis, argOne.get())) || |
+ (ValueIsNull(pThis, argTwo.get()))) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString sourceString; |
+ ValueToUTF8String(argOne.get(), sourceString); |
+ int32_t count = std::max(0, ValueToInteger(pThis, argTwo.get())); |
+ args.GetReturnValue()->SetString(sourceString.Left(count).AsStringC()); |
} |
// static |
void CXFA_FM2JSContext::Len(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (ValueIsNull(pThis, argOne.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString sourceString; |
- ValueToUTF8String(argOne.get(), sourceString); |
- args.GetReturnValue()->SetInteger(sourceString.GetLength()); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Len"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (ValueIsNull(pThis, argOne.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString sourceString; |
+ ValueToUTF8String(argOne.get(), sourceString); |
+ args.GetReturnValue()->SetInteger(sourceString.GetLength()); |
} |
// static |
@@ -4144,61 +4119,61 @@ void CXFA_FM2JSContext::Lower(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
- if ((argc > 0) && (argc < 3)) { |
- CFX_ByteString argString; |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (ValueIsNull(pThis, argOne.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- ValueToUTF8String(argOne.get(), argString); |
- CFX_WideTextBuf lowStringBuf; |
- CFX_WideString wsArgString = |
- CFX_WideString::FromUTF8(argString.AsStringC()); |
- const FX_WCHAR* pData = wsArgString.c_str(); |
- int32_t iLen = argString.GetLength(); |
- int32_t i = 0; |
- int32_t ch = 0; |
- while (i < iLen) { |
- ch = pData[i]; |
- if (ch >= 0x41 && ch <= 0x5A) { |
- ch += 32; |
- } else if (ch >= 0xC0 && ch <= 0xDE) { |
- ch += 32; |
- } else if (ch == 0x100 || ch == 0x102 || ch == 0x104) { |
- ch += 1; |
- } |
- lowStringBuf.AppendChar(ch); |
- ++i; |
- } |
- lowStringBuf.AppendChar(0); |
- args.GetReturnValue()->SetString( |
- FX_UTF8Encode(lowStringBuf.GetBuffer(), lowStringBuf.GetLength()) |
- .AsStringC()); |
- } |
- } else { |
+ if (argc < 1 || argc > 2) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Lower"); |
+ return; |
+ } |
+ |
+ CFX_ByteString argString; |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (ValueIsNull(pThis, argOne.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ ValueToUTF8String(argOne.get(), argString); |
+ CFX_WideTextBuf lowStringBuf; |
+ CFX_WideString wsArgString = CFX_WideString::FromUTF8(argString.AsStringC()); |
+ const FX_WCHAR* pData = wsArgString.c_str(); |
+ int32_t i = 0; |
+ while (i < argString.GetLength()) { |
+ int32_t ch = pData[i]; |
+ if ((ch >= 0x41 && ch <= 0x5A) || (ch >= 0xC0 && ch <= 0xDE)) |
+ ch += 32; |
+ else if (ch == 0x100 || ch == 0x102 || ch == 0x104) |
+ ch += 1; |
+ |
+ lowStringBuf.AppendChar(ch); |
+ ++i; |
} |
+ lowStringBuf.AppendChar(0); |
+ |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(lowStringBuf.GetBuffer(), lowStringBuf.GetLength()) |
+ .AsStringC()); |
} |
// static |
void CXFA_FM2JSContext::Ltrim(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (ValueIsNull(pThis, argOne.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString sourceString; |
- ValueToUTF8String(argOne.get(), sourceString); |
- sourceString.TrimLeft(); |
- args.GetReturnValue()->SetString(sourceString.AsStringC()); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ltrim"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (ValueIsNull(pThis, argOne.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString sourceString; |
+ ValueToUTF8String(argOne.get(), sourceString); |
+ sourceString.TrimLeft(); |
+ args.GetReturnValue()->SetString(sourceString.AsStringC()); |
} |
// static |
@@ -4206,266 +4181,263 @@ void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- if (ValueIsNull(pThis, argTwo.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString szPattern; |
- ValueToUTF8String(argOne.get(), szPattern); |
- CFX_ByteString szValue; |
- ValueToUTF8String(argTwo.get(), szValue); |
- CXFA_Document* pDoc = pContext->GetDocument(); |
- IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); |
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); |
- ASSERT(pThisNode); |
- CXFA_WidgetData widgetData(pThisNode); |
- IFX_Locale* pLocale = widgetData.GetLocal(); |
- uint32_t patternType; |
- CFX_WideString wsPattern = |
- CFX_WideString::FromUTF8(szPattern.AsStringC()); |
- CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); |
- CFX_ByteString szParsedValue; |
- if (PatternStringType(szPattern.AsStringC(), patternType)) { |
- CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, |
- (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- szParsedValue = FX_UTF8Encode(localeValue.GetValue()); |
- args.GetReturnValue()->SetString(szParsedValue.AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } else { |
- switch (patternType) { |
- case XFA_VT_DATETIME: { |
- FX_STRSIZE iTChar = wsPattern.Find(L'T'); |
- CFX_WideString wsDatePattern(L"date{"); |
- wsDatePattern += wsPattern.Left(iTChar); |
- wsDatePattern += FX_WSTRC(L"} "); |
- CFX_WideString wsTimePattern(L"time{"); |
- wsTimePattern += wsPattern.Mid(iTChar + 1); |
- wsTimePattern += FX_WSTRC(L"}"); |
- wsPattern = wsDatePattern + wsTimePattern; |
- CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- szParsedValue = FX_UTF8Encode(localeValue.GetValue()); |
- args.GetReturnValue()->SetString(szParsedValue.AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } break; |
- case XFA_VT_DATE: { |
- wsPattern = FX_WSTRC(L"date{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- szParsedValue = FX_UTF8Encode(localeValue.GetValue()); |
- args.GetReturnValue()->SetString(szParsedValue.AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } break; |
- case XFA_VT_TIME: { |
- wsPattern = FX_WSTRC(L"time{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- szParsedValue = FX_UTF8Encode(localeValue.GetValue()); |
- args.GetReturnValue()->SetString(szParsedValue.AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } break; |
- case XFA_VT_TEXT: { |
- wsPattern = FX_WSTRC(L"text{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue localeValue(XFA_VT_TEXT, wsValue, wsPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- szParsedValue = FX_UTF8Encode(localeValue.GetValue()); |
- args.GetReturnValue()->SetString(szParsedValue.AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } break; |
- case XFA_VT_FLOAT: { |
- wsPattern = FX_WSTRC(L"num{") + wsPattern; |
- wsPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue localeValue(XFA_VT_FLOAT, wsValue, wsPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- args.GetReturnValue()->SetDouble(localeValue.GetDoubleNum()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } break; |
- default: { |
- CFX_WideString wsTestPattern; |
- wsTestPattern = FX_WSTRC(L"num{") + wsPattern; |
- wsTestPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue localeValue(XFA_VT_FLOAT, wsValue, wsTestPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue.IsValid()) { |
- args.GetReturnValue()->SetDouble(localeValue.GetDoubleNum()); |
- } else { |
- wsTestPattern = FX_WSTRC(L"text{") + wsPattern; |
- wsTestPattern += FX_WSTRC(L"}"); |
- CXFA_LocaleValue localeValue2(XFA_VT_TEXT, wsValue, wsTestPattern, |
- pLocale, (CXFA_LocaleMgr*)pMgr); |
- if (localeValue2.IsValid()) { |
- szParsedValue = FX_UTF8Encode(localeValue2.GetValue()); |
- args.GetReturnValue()->SetString(szParsedValue.AsStringC()); |
- } else { |
- args.GetReturnValue()->SetString(""); |
- } |
- } |
- } break; |
- } |
- } |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Parse"); |
+ return; |
} |
-} |
-// static |
-void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis, |
- const CFX_ByteStringC& szFuncName, |
- CFXJSE_Arguments& args) { |
- int32_t argc = args.GetLength(); |
- if ((argc == 2) || (argc == 3)) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- CFX_ByteString oneString; |
- CFX_ByteString twoString; |
- CFX_ByteString threeString; |
- if (!ValueIsNull(pThis, argOne.get()) && |
- !ValueIsNull(pThis, argTwo.get())) { |
- ValueToUTF8String(argOne.get(), oneString); |
- ValueToUTF8String(argTwo.get(), twoString); |
- } |
- if (argc > 2) { |
- std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); |
- ValueToUTF8String(argThree.get(), threeString); |
- } |
- int32_t iSrcLen = oneString.GetLength(); |
- int32_t iFindLen = twoString.GetLength(); |
- CFX_ByteTextBuf resultString; |
- int32_t iFindIndex = 0; |
- uint8_t ch = 0; |
- for (int32_t u = 0; u < iSrcLen; ++u) { |
- ch = oneString.GetAt(u); |
- if (ch == twoString.GetAt(iFindIndex)) { |
- int32_t iTemp = u + 1; |
- ++iFindIndex; |
- uint8_t chTemp = 0; |
- while (iFindIndex < iFindLen) { |
- chTemp = oneString.GetAt(iTemp); |
- if (chTemp == twoString.GetAt(iFindIndex)) { |
- ++iTemp; |
- ++iFindIndex; |
- } else { |
- iFindIndex = 0; |
- break; |
- } |
- } |
- if (iFindIndex == iFindLen) { |
- resultString << threeString.AsStringC(); |
- u += iFindLen - 1; |
- iFindIndex = 0; |
- } else { |
- resultString.AppendChar(ch); |
- } |
- } else { |
- resultString.AppendChar(ch); |
- } |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ if (ValueIsNull(pThis, argTwo.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ CFX_ByteString szPattern; |
+ ValueToUTF8String(argOne.get(), szPattern); |
+ CFX_ByteString szValue; |
+ ValueToUTF8String(argTwo.get(), szValue); |
+ |
+ CXFA_Document* pDoc = pContext->GetDocument(); |
+ CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr(); |
+ CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); |
+ ASSERT(pThisNode); |
+ |
+ CXFA_WidgetData widgetData(pThisNode); |
+ IFX_Locale* pLocale = widgetData.GetLocal(); |
+ CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern.AsStringC()); |
+ CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); |
+ uint32_t patternType; |
+ if (PatternStringType(szPattern.AsStringC(), patternType)) { |
+ CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, |
+ pMgr); |
+ if (!localeValue.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
} |
- resultString.AppendChar(0); |
- args.GetReturnValue()->SetString(resultString.AsStringC()); |
- } else { |
- ToJSContext(pThis, nullptr) |
- ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Replace"); |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(localeValue.GetValue()).AsStringC()); |
+ return; |
} |
-} |
-// static |
-void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis, |
- const CFX_ByteStringC& szFuncName, |
- CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- FX_BOOL argIsNull = FALSE; |
- if ((ValueIsNull(pThis, argOne.get())) || |
- (ValueIsNull(pThis, argTwo.get()))) { |
- argIsNull = TRUE; |
+ switch (patternType) { |
+ case XFA_VT_DATETIME: { |
+ FX_STRSIZE iTChar = wsPattern.Find(L'T'); |
+ CFX_WideString wsDatePattern(L"date{" + wsPattern.Left(iTChar) + L"} "); |
+ CFX_WideString wsTimePattern(L"time{" + wsPattern.Mid(iTChar + 1) + L"}"); |
+ wsPattern = wsDatePattern + wsTimePattern; |
+ CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, |
+ pMgr); |
+ if (!localeValue.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
+ } |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(localeValue.GetValue()).AsStringC()); |
+ return; |
} |
- if (argIsNull) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString sourceString; |
- ValueToUTF8String(argOne.get(), sourceString); |
- int32_t count = ValueToInteger(pThis, argTwo.get()); |
- if (count < 0) { |
- count = 0; |
+ case XFA_VT_DATE: { |
+ wsPattern = L"date{" + wsPattern + L"}"; |
+ CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, |
+ pMgr); |
+ if (!localeValue.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
} |
- args.GetReturnValue()->SetString(sourceString.Right(count).AsStringC()); |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(localeValue.GetValue()).AsStringC()); |
+ return; |
} |
- } else { |
+ case XFA_VT_TIME: { |
+ wsPattern = L"time{" + wsPattern + L"}"; |
+ CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, |
+ pMgr); |
+ if (!localeValue.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
+ } |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(localeValue.GetValue()).AsStringC()); |
+ return; |
+ } |
+ case XFA_VT_TEXT: { |
+ wsPattern = L"text{" + wsPattern + L"}"; |
+ CXFA_LocaleValue localeValue(XFA_VT_TEXT, wsValue, wsPattern, pLocale, |
+ pMgr); |
+ if (!localeValue.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
+ } |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(localeValue.GetValue()).AsStringC()); |
+ return; |
+ } |
+ case XFA_VT_FLOAT: { |
+ wsPattern = L"num{" + wsPattern + L"}"; |
+ CXFA_LocaleValue localeValue(XFA_VT_FLOAT, wsValue, wsPattern, pLocale, |
+ pMgr); |
+ if (!localeValue.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
+ } |
+ args.GetReturnValue()->SetDouble(localeValue.GetDoubleNum()); |
+ return; |
+ } |
+ default: { |
+ CFX_WideString wsTestPattern; |
+ wsTestPattern = L"num{" + wsPattern + L"}"; |
+ CXFA_LocaleValue localeValue(XFA_VT_FLOAT, wsValue, wsTestPattern, |
+ pLocale, pMgr); |
+ if (localeValue.IsValid()) { |
+ args.GetReturnValue()->SetDouble(localeValue.GetDoubleNum()); |
+ return; |
+ } |
+ |
+ wsTestPattern = L"text{" + wsPattern + L"}"; |
+ CXFA_LocaleValue localeValue2(XFA_VT_TEXT, wsValue, wsTestPattern, |
+ pLocale, pMgr); |
+ if (!localeValue2.IsValid()) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
+ } |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(localeValue2.GetValue()).AsStringC()); |
+ return; |
+ } |
+ } |
+} |
+ |
+// static |
+void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis, |
+ const CFX_ByteStringC& szFuncName, |
+ CFXJSE_Arguments& args) { |
+ int32_t argc = args.GetLength(); |
+ if (argc < 2 || argc > 3) { |
+ ToJSContext(pThis, nullptr) |
+ ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Replace"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ CFX_ByteString oneString; |
+ CFX_ByteString twoString; |
+ if (!ValueIsNull(pThis, argOne.get()) && !ValueIsNull(pThis, argTwo.get())) { |
+ ValueToUTF8String(argOne.get(), oneString); |
+ ValueToUTF8String(argTwo.get(), twoString); |
+ } |
+ |
+ CFX_ByteString threeString; |
+ if (argc > 2) { |
+ std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); |
+ ValueToUTF8String(argThree.get(), threeString); |
+ } |
+ |
+ int32_t iFindLen = twoString.GetLength(); |
+ CFX_ByteTextBuf resultString; |
+ int32_t iFindIndex = 0; |
+ for (int32_t u = 0; u < oneString.GetLength(); ++u) { |
+ uint8_t ch = oneString.GetAt(u); |
+ if (ch != twoString.GetAt(iFindIndex)) { |
+ resultString.AppendChar(ch); |
+ continue; |
+ } |
+ |
+ int32_t iTemp = u + 1; |
+ ++iFindIndex; |
+ while (iFindIndex < iFindLen) { |
+ uint8_t chTemp = oneString.GetAt(iTemp); |
+ if (chTemp != twoString.GetAt(iFindIndex)) { |
+ iFindIndex = 0; |
+ break; |
+ } |
+ |
+ ++iTemp; |
+ ++iFindIndex; |
+ } |
+ if (iFindIndex == iFindLen) { |
+ resultString << threeString.AsStringC(); |
+ u += iFindLen - 1; |
+ iFindIndex = 0; |
+ } else { |
+ resultString.AppendChar(ch); |
+ } |
+ } |
+ resultString.AppendChar(0); |
+ args.GetReturnValue()->SetString(resultString.AsStringC()); |
+} |
+ |
+// static |
+void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis, |
+ const CFX_ByteStringC& szFuncName, |
+ CFXJSE_Arguments& args) { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Right"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ if ((ValueIsNull(pThis, argOne.get())) || |
+ (ValueIsNull(pThis, argTwo.get()))) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString sourceString; |
+ ValueToUTF8String(argOne.get(), sourceString); |
+ int32_t count = std::max(0, ValueToInteger(pThis, argTwo.get())); |
+ args.GetReturnValue()->SetString(sourceString.Right(count).AsStringC()); |
} |
// static |
void CXFA_FM2JSContext::Rtrim(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (ValueIsNull(pThis, argOne.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString sourceString; |
- ValueToUTF8String(argOne.get(), sourceString); |
- sourceString.TrimRight(); |
- args.GetReturnValue()->SetString(sourceString.AsStringC()); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Rtrim"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (ValueIsNull(pThis, argOne.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString sourceString; |
+ ValueToUTF8String(argOne.get(), sourceString); |
+ sourceString.TrimRight(); |
+ args.GetReturnValue()->SetString(sourceString.AsStringC()); |
} |
// static |
void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (argOne->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- int32_t count = 0; |
- count = ValueToInteger(pThis, argOne.get()); |
- count = (count < 0) ? 0 : count; |
- CFX_ByteTextBuf spaceString; |
- int32_t index = 0; |
- while (index < count) { |
- spaceString.AppendByte(' '); |
- index++; |
- } |
- spaceString.AppendByte(0); |
- args.GetReturnValue()->SetString(spaceString.AsStringC()); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Space"); |
+ return; |
} |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (argOne->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ int32_t count = std::max(0, ValueToInteger(pThis, argOne.get())); |
+ CFX_ByteTextBuf spaceString; |
+ int32_t index = 0; |
+ while (index < count) { |
+ spaceString.AppendByte(' '); |
+ index++; |
+ } |
+ spaceString.AppendByte(0); |
+ args.GetReturnValue()->SetString(spaceString.AsStringC()); |
} |
// static |
@@ -4473,117 +4445,116 @@ void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
- if ((argc > 0) && (argc < 4)) { |
- FX_BOOL bFlags = FALSE; |
- FX_FLOAT fNumber = 0.0f; |
- int32_t iWidth = 10; |
- int32_t iPrecision = 0; |
- std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0); |
- if (numberValue->IsNull()) { |
- bFlags = TRUE; |
- } else { |
- fNumber = ValueToFloat(pThis, numberValue.get()); |
- } |
- if (argc > 1) { |
- std::unique_ptr<CFXJSE_Value> widthValue = GetSimpleValue(pThis, args, 1); |
- iWidth = (int32_t)ValueToFloat(pThis, widthValue.get()); |
- } |
- if (argc > 2) { |
- std::unique_ptr<CFXJSE_Value> precisionValue = |
- GetSimpleValue(pThis, args, 2); |
- iPrecision = (int32_t)ValueToFloat(pThis, precisionValue.get()); |
- if (iPrecision < 0) { |
- iPrecision = 0; |
- } |
+ if (argc < 1 || argc > 3) { |
+ ToJSContext(pThis, nullptr) |
+ ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Str"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0); |
+ if (numberValue->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ FX_FLOAT fNumber = ValueToFloat(pThis, numberValue.get()); |
+ |
+ int32_t iWidth = 10; |
+ if (argc > 1) { |
+ std::unique_ptr<CFXJSE_Value> widthValue = GetSimpleValue(pThis, args, 1); |
+ iWidth = static_cast<int32_t>(ValueToFloat(pThis, widthValue.get())); |
+ } |
+ |
+ int32_t iPrecision = 0; |
+ if (argc > 2) { |
+ std::unique_ptr<CFXJSE_Value> precisionValue = |
+ GetSimpleValue(pThis, args, 2); |
+ iPrecision = std::max( |
+ 0, static_cast<int32_t>(ValueToFloat(pThis, precisionValue.get()))); |
+ } |
+ |
+ CFX_ByteString numberString; |
+ CFX_ByteString formatStr = "%"; |
+ if (iPrecision) { |
+ formatStr += "."; |
+ formatStr += CFX_ByteString::FormatInteger(iPrecision); |
+ } |
+ formatStr += "f"; |
+ numberString.Format(formatStr.c_str(), fNumber); |
+ |
+ const FX_CHAR* pData = numberString.c_str(); |
+ int32_t iLength = numberString.GetLength(); |
+ int32_t u = 0; |
+ while (u < iLength) { |
+ if (pData[u] == '.') |
+ break; |
+ |
+ ++u; |
+ } |
+ |
+ CFX_ByteTextBuf resultBuf; |
+ if (u > iWidth || (iPrecision + u) >= iWidth) { |
+ int32_t i = 0; |
+ while (i < iWidth) { |
+ resultBuf.AppendChar('*'); |
+ ++i; |
} |
- if (!bFlags) { |
- CFX_ByteString numberString; |
- CFX_ByteString formatStr = "%"; |
- if (iPrecision) { |
- formatStr += "."; |
- formatStr += CFX_ByteString::FormatInteger(iPrecision); |
- } |
- formatStr += "f"; |
- numberString.Format(formatStr.c_str(), fNumber); |
- const FX_CHAR* pData = numberString.c_str(); |
- int32_t iLength = numberString.GetLength(); |
- int32_t u = 0; |
- while (u < iLength) { |
- if (pData[u] == '.') { |
- break; |
- } |
- ++u; |
- } |
- CFX_ByteTextBuf resultBuf; |
- if (u > iWidth || (iPrecision + u) >= iWidth) { |
- int32_t i = 0; |
- while (i < iWidth) { |
- resultBuf.AppendChar('*'); |
- ++i; |
- } |
- resultBuf.AppendChar(0); |
- } else { |
- if (u == iLength) { |
- if (iLength > iWidth) { |
- int32_t i = 0; |
- while (i < iWidth) { |
- resultBuf.AppendChar('*'); |
- ++i; |
- } |
- } else { |
- int32_t i = 0; |
- int32_t iSpace = iWidth - iLength; |
- while (i < iSpace) { |
- resultBuf.AppendChar(' '); |
- ++i; |
- } |
- resultBuf << pData; |
- } |
- } else { |
- int32_t iLeavingSpace = 0; |
- if (iPrecision == 0) { |
- iLeavingSpace = iWidth - (u + iPrecision); |
- } else { |
- iLeavingSpace = iWidth - (u + iPrecision + 1); |
- } |
- int32_t i = 0; |
- while (i < iLeavingSpace) { |
- resultBuf.AppendChar(' '); |
- ++i; |
- } |
- i = 0; |
- while (i < u) { |
- resultBuf.AppendChar(pData[i]); |
- ++i; |
- } |
- if (iPrecision != 0) { |
- resultBuf.AppendChar('.'); |
- } |
- u++; |
- i = 0; |
- while (u < iLength) { |
- if (i >= iPrecision) { |
- break; |
- } |
- resultBuf.AppendChar(pData[u]); |
- ++i; |
- ++u; |
- } |
- while (i < iPrecision) { |
- resultBuf.AppendChar('0'); |
- ++i; |
- } |
- resultBuf.AppendChar(0); |
- } |
+ resultBuf.AppendChar(0); |
+ args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
+ return; |
+ } |
+ |
+ if (u == iLength) { |
+ if (iLength > iWidth) { |
+ int32_t i = 0; |
+ while (i < iWidth) { |
+ resultBuf.AppendChar('*'); |
+ ++i; |
} |
- args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
} else { |
- args.GetReturnValue()->SetNull(); |
+ int32_t i = 0; |
+ while (i < iWidth - iLength) { |
+ resultBuf.AppendChar(' '); |
+ ++i; |
+ } |
+ resultBuf << pData; |
} |
- } else { |
- ToJSContext(pThis, nullptr) |
- ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Str"); |
+ args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
+ return; |
+ } |
+ |
+ int32_t iLeavingSpace = iWidth - u - iPrecision; |
+ if (iPrecision != 0) |
+ iLeavingSpace--; |
+ |
+ int32_t i = 0; |
+ while (i < iLeavingSpace) { |
+ resultBuf.AppendChar(' '); |
+ ++i; |
+ } |
+ i = 0; |
+ while (i < u) { |
+ resultBuf.AppendChar(pData[i]); |
+ ++i; |
+ } |
+ if (iPrecision != 0) |
+ resultBuf.AppendChar('.'); |
+ |
+ u++; |
+ i = 0; |
+ while (u < iLength) { |
+ if (i >= iPrecision) |
+ break; |
+ |
+ resultBuf.AppendChar(pData[u]); |
+ ++i; |
+ ++u; |
} |
+ while (i < iPrecision) { |
+ resultBuf.AppendChar('0'); |
+ ++i; |
+ } |
+ resultBuf.AppendChar(0); |
+ args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
} |
// static |
@@ -4591,98 +4562,90 @@ void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
- if ((argc == 3) || (argc == 4)) { |
- CFX_ByteString sourceString; |
- CFX_ByteString insertString; |
- int32_t iLength = 0; |
- int32_t iStart = 0; |
- int32_t iDelete = 0; |
- std::unique_ptr<CFXJSE_Value> sourceValue = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); |
- std::unique_ptr<CFXJSE_Value> deleteValue = GetSimpleValue(pThis, args, 2); |
- if (!sourceValue->IsNull() && !startValue->IsNull() && |
- !deleteValue->IsNull()) { |
- ValueToUTF8String(sourceValue.get(), sourceString); |
- iLength = sourceString.GetLength(); |
- iStart = (int32_t)ValueToFloat(pThis, startValue.get()); |
- if (iStart < 1) { |
- iStart = 1; |
- } |
- if (iStart > iLength) { |
- iStart = iLength; |
- } |
- iDelete = (int32_t)ValueToFloat(pThis, deleteValue.get()); |
- if (iDelete <= 0) { |
- iDelete = 0; |
- } |
- } |
- if (argc > 3) { |
- std::unique_ptr<CFXJSE_Value> insertValue = |
- GetSimpleValue(pThis, args, 3); |
- ValueToUTF8String(insertValue.get(), insertString); |
- } |
- iStart -= 1; |
- CFX_ByteTextBuf resultString; |
- int32_t i = 0; |
- while (i < iStart) { |
- resultString.AppendChar(sourceString.GetAt(i)); |
- ++i; |
- } |
- resultString << insertString.AsStringC(); |
- i = iStart + iDelete; |
- while (i < iLength) { |
- resultString.AppendChar(sourceString.GetAt(i)); |
- ++i; |
- } |
- resultString.AppendChar(0); |
- args.GetReturnValue()->SetString(resultString.AsStringC()); |
- } else { |
+ if (argc < 3 || argc > 4) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Stuff"); |
+ return; |
+ } |
+ |
+ CFX_ByteString sourceString; |
+ CFX_ByteString insertString; |
+ int32_t iLength = 0; |
+ int32_t iStart = 0; |
+ int32_t iDelete = 0; |
+ std::unique_ptr<CFXJSE_Value> sourceValue = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); |
+ std::unique_ptr<CFXJSE_Value> deleteValue = GetSimpleValue(pThis, args, 2); |
+ if (!sourceValue->IsNull() && !startValue->IsNull() && |
+ !deleteValue->IsNull()) { |
+ ValueToUTF8String(sourceValue.get(), sourceString); |
+ iLength = sourceString.GetLength(); |
+ iStart = std::min(iLength, std::max(1, static_cast<int32_t>(ValueToFloat( |
+ pThis, startValue.get())))); |
+ iDelete = std::max( |
+ 0, static_cast<int32_t>(ValueToFloat(pThis, deleteValue.get()))); |
+ } |
+ |
+ if (argc > 3) { |
+ std::unique_ptr<CFXJSE_Value> insertValue = GetSimpleValue(pThis, args, 3); |
+ ValueToUTF8String(insertValue.get(), insertString); |
+ } |
+ |
+ iStart -= 1; |
+ CFX_ByteTextBuf resultString; |
+ int32_t i = 0; |
+ while (i < iStart) { |
+ resultString.AppendChar(sourceString.GetAt(i)); |
+ ++i; |
} |
+ resultString << insertString.AsStringC(); |
+ i = iStart + iDelete; |
+ while (i < iLength) { |
+ resultString.AppendChar(sourceString.GetAt(i)); |
+ ++i; |
+ } |
+ resultString.AppendChar(0); |
+ args.GetReturnValue()->SetString(resultString.AsStringC()); |
} |
// static |
void CXFA_FM2JSContext::Substr(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 3) { |
- std::unique_ptr<CFXJSE_Value> stringValue = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); |
- std::unique_ptr<CFXJSE_Value> endValue = GetSimpleValue(pThis, args, 2); |
- if (ValueIsNull(pThis, stringValue.get()) || |
- (ValueIsNull(pThis, startValue.get())) || |
- (ValueIsNull(pThis, endValue.get()))) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- CFX_ByteString szSourceStr; |
- int32_t iStart = 0; |
- int32_t iCount = 0; |
- ValueToUTF8String(stringValue.get(), szSourceStr); |
- int32_t iLength = szSourceStr.GetLength(); |
- if (iLength == 0) { |
- args.GetReturnValue()->SetString(""); |
- } else { |
- iStart = (int32_t)ValueToFloat(pThis, startValue.get()); |
- iCount = (int32_t)ValueToFloat(pThis, endValue.get()); |
- if (iStart < 1) { |
- iStart = 1; |
- } |
- if (iStart > iLength) { |
- iStart = iLength; |
- } |
- if (iCount <= 0) { |
- iCount = 0; |
- } |
- iStart -= 1; |
- args.GetReturnValue()->SetString( |
- szSourceStr.Mid(iStart, iCount).AsStringC()); |
- } |
- } |
- } else { |
+ if (args.GetLength() != 3) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Substr"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> stringValue = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); |
+ std::unique_ptr<CFXJSE_Value> endValue = GetSimpleValue(pThis, args, 2); |
+ if (ValueIsNull(pThis, stringValue.get()) || |
+ (ValueIsNull(pThis, startValue.get())) || |
+ (ValueIsNull(pThis, endValue.get()))) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ CFX_ByteString szSourceStr; |
+ int32_t iStart = 0; |
+ int32_t iCount = 0; |
+ ValueToUTF8String(stringValue.get(), szSourceStr); |
+ int32_t iLength = szSourceStr.GetLength(); |
+ if (iLength == 0) { |
+ args.GetReturnValue()->SetString(""); |
+ return; |
+ } |
+ |
+ iStart = std::min( |
+ iLength, |
+ std::max(1, static_cast<int32_t>(ValueToFloat(pThis, startValue.get())))); |
+ iCount = |
+ std::max(0, static_cast<int32_t>(ValueToFloat(pThis, endValue.get()))); |
+ |
+ iStart -= 1; |
+ args.GetReturnValue()->SetString(szSourceStr.Mid(iStart, iCount).AsStringC()); |
} |
// static |
@@ -4690,21 +4653,23 @@ void CXFA_FM2JSContext::Uuid(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
- if ((argc == 0) || (argc == 1)) { |
- int32_t iNum = 0; |
- if (argc > 0) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- iNum = (int32_t)ValueToFloat(pThis, argOne.get()); |
- } |
- FX_GUID guid; |
- FX_GUID_CreateV4(&guid); |
- CFX_ByteString bsUId; |
- FX_GUID_ToString(&guid, bsUId, iNum); |
- args.GetReturnValue()->SetString(bsUId.AsStringC()); |
- } else { |
+ if (argc < 0 || argc > 1) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Uuid"); |
+ return; |
} |
+ |
+ int32_t iNum = 0; |
+ if (argc > 0) { |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ iNum = static_cast<int32_t>(ValueToFloat(pThis, argOne.get())); |
+ } |
+ FX_GUID guid; |
+ FX_GUID_CreateV4(&guid); |
+ |
+ CFX_ByteString bsUId; |
+ FX_GUID_ToString(&guid, bsUId, iNum); |
+ args.GetReturnValue()->SetString(bsUId.AsStringC()); |
} |
// static |
@@ -4712,41 +4677,40 @@ void CXFA_FM2JSContext::Upper(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
- if ((argc > 0) && (argc < 3)) { |
- CFX_ByteString argString; |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (ValueIsNull(pThis, argOne.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- ValueToUTF8String(argOne.get(), argString); |
- CFX_WideTextBuf upperStringBuf; |
- CFX_WideString wsArgString = |
- CFX_WideString::FromUTF8(argString.AsStringC()); |
- const FX_WCHAR* pData = wsArgString.c_str(); |
- int32_t iLen = wsArgString.GetLength(); |
- int32_t i = 0; |
- int32_t ch = 0; |
- while (i < iLen) { |
- ch = pData[i]; |
- if (ch >= 0x61 && ch <= 0x7A) { |
- ch -= 32; |
- } else if (ch >= 0xE0 && ch <= 0xFE) { |
- ch -= 32; |
- } else if (ch == 0x101 || ch == 0x103 || ch == 0x105) { |
- ch -= 1; |
- } |
- upperStringBuf.AppendChar(ch); |
- ++i; |
- } |
- upperStringBuf.AppendChar(0); |
- args.GetReturnValue()->SetString( |
- FX_UTF8Encode(upperStringBuf.GetBuffer(), upperStringBuf.GetLength()) |
- .AsStringC()); |
- } |
- } else { |
+ if (argc < 1 || argc > 2) { |
ToJSContext(pThis, nullptr) |
->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Upper"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (ValueIsNull(pThis, argOne.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ CFX_ByteString argString; |
+ ValueToUTF8String(argOne.get(), argString); |
+ |
+ CFX_WideTextBuf upperStringBuf; |
+ CFX_WideString wsArgString = CFX_WideString::FromUTF8(argString.AsStringC()); |
+ const FX_WCHAR* pData = wsArgString.c_str(); |
+ int32_t i = 0; |
+ while (i < wsArgString.GetLength()) { |
+ int32_t ch = pData[i]; |
+ if ((ch >= 0x61 && ch <= 0x7A) || (ch >= 0xE0 && ch <= 0xFE)) |
+ ch -= 32; |
+ else if (ch == 0x101 || ch == 0x103 || ch == 0x105) |
+ ch -= 1; |
+ |
+ upperStringBuf.AppendChar(ch); |
+ ++i; |
} |
+ upperStringBuf.AppendChar(0); |
+ |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(upperStringBuf.GetBuffer(), upperStringBuf.GetLength()) |
+ .AsStringC()); |
} |
// static |
@@ -4754,52 +4718,52 @@ void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
int32_t argc = args.GetLength(); |
- if ((argc > 0) && (argc < 4)) { |
- FX_BOOL bFlags = FALSE; |
- FX_FLOAT fNumber = 0.0f; |
- int32_t iIdentifier = 0; |
- CFX_ByteString localeString; |
- std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0); |
- if (numberValue->IsNull()) { |
- bFlags = TRUE; |
- } else { |
- fNumber = ValueToFloat(pThis, numberValue.get()); |
- } |
- if (argc > 1) { |
- std::unique_ptr<CFXJSE_Value> identifierValue = |
- GetSimpleValue(pThis, args, 1); |
- if (identifierValue->IsNull()) { |
- bFlags = TRUE; |
- } else { |
- iIdentifier = (int32_t)ValueToFloat(pThis, identifierValue.get()); |
- } |
- } |
- if (argc > 2) { |
- std::unique_ptr<CFXJSE_Value> localeValue = |
- GetSimpleValue(pThis, args, 2); |
- if (localeValue->IsNull()) { |
- bFlags = TRUE; |
- } else { |
- ValueToUTF8String(localeValue.get(), localeString); |
- } |
+ if (argc < 1 || argc > 3) { |
+ ToJSContext(pThis, nullptr) |
+ ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"WordNum"); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0); |
+ if (numberValue->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ FX_FLOAT fNumber = ValueToFloat(pThis, numberValue.get()); |
+ |
+ int32_t iIdentifier = 0; |
+ if (argc > 1) { |
+ std::unique_ptr<CFXJSE_Value> identifierValue = |
+ GetSimpleValue(pThis, args, 1); |
+ if (identifierValue->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
- if (!bFlags) { |
- if ((fNumber < 0) || (fNumber > 922337203685477550)) { |
- args.GetReturnValue()->SetString("*"); |
- } else { |
- CFX_ByteTextBuf resultBuf; |
- CFX_ByteString numberString; |
- numberString.Format("%.2f", fNumber); |
- WordUS(numberString.AsStringC(), iIdentifier, resultBuf); |
- args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
- } |
- } else { |
+ iIdentifier = |
+ static_cast<int32_t>(ValueToFloat(pThis, identifierValue.get())); |
+ } |
+ |
+ CFX_ByteString localeString; |
+ if (argc > 2) { |
+ std::unique_ptr<CFXJSE_Value> localeValue = GetSimpleValue(pThis, args, 2); |
+ if (localeValue->IsNull()) { |
args.GetReturnValue()->SetNull(); |
+ return; |
} |
- } else { |
- ToJSContext(pThis, nullptr) |
- ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"WordNum"); |
+ ValueToUTF8String(localeValue.get(), localeString); |
+ } |
+ |
+ if (fNumber < 0.0f || fNumber > 922337203685477550.0f) { |
+ args.GetReturnValue()->SetString("*"); |
+ return; |
} |
+ |
+ CFX_ByteString numberString; |
+ numberString.Format("%.2f", fNumber); |
+ |
+ CFX_ByteTextBuf resultBuf; |
+ WordUS(numberString.AsStringC(), iIdentifier, resultBuf); |
+ args.GetReturnValue()->SetString(resultBuf.AsStringC()); |
} |
// static |