summaryrefslogtreecommitdiff
path: root/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/fm2js/cxfa_fmexpression.cpp')
-rw-r--r--xfa/fxfa/fm2js/cxfa_fmexpression.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
index a3c65a2203..ef2153d6be 100644
--- a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
@@ -89,6 +89,16 @@ bool CXFA_FMAST::ToJavaScript(CFX_WideTextBuf& js) {
}
js << L"(function() {\n";
+ js << L"let pfm_method_runner = function(obj, cb) {\n";
+ js << L" if (pfm_rt.is_ary(obj)) {\n";
+ js << L" let pfm_method_return = null;\n";
+ js << L" for (var idx = obj.length -1; idx > 1; idx--) {\n";
+ js << L" pfm_method_return = cb(obj[idx]);\n";
+ js << L" }\n";
+ js << L" return pfm_method_return;\n";
+ js << L" }\n";
+ js << L" return cb(obj);\n";
+ js << L"};\n";
js << L"var pfm_ret = null;\n";
for (const auto& expr : expressions_) {
@@ -100,7 +110,6 @@ bool CXFA_FMAST::ToJavaScript(CFX_WideTextBuf& js) {
js << L"return pfm_rt.get_val(pfm_ret);\n";
js << L"}).call(this);";
-
return !CXFA_IsTooBig(js);
}