diff options
author | László Németh <nemeth@numbertext.org> | 2020-08-22 17:22:04 +0200 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2020-08-23 13:07:03 +0200 |
commit | f1f27b2487ccfb7a03190ff68eadbfb611dd9749 (patch) | |
tree | dc6bffe8fa118ee797d5f14f51ea26ad1555836c /writerfilter | |
parent | 886c2e35fadc7813498da041fc4ea8a8ba2fb358 (diff) |
tdf#123356 DOCX import: fix COUNT formula
Convert COUNT(x) to the equivalent, but
portable Writer formula SUM(x)/MEAN(x).
Note: this is a temporary conversion, which
supports only 1-level nesting of function calls.
Adding COUNT to Writer core, it will be possible
to remove portable conversion later.
Change-Id: I4b4019aadad52e6d1cf3b2d18d80b1d2c7485c6a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101185
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index b5a8f124c142..a482a3231551 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -4272,6 +4272,10 @@ OUString DomainMapper_Impl::convertFieldFormula(const OUString& input) { icu::RegexMatcher rmatch7("\\bSIGN\\s*(\\(([^()]*|([^()])*\\([^()]*\\)[^()]*)*\\))", usInput, rMatcherFlags, status); usInput = rmatch7.replaceAll(icu::UnicodeString("((0 L $1) - ($1 L 0))"), status); + /* Fix up COUNT(x) using SUM(x)/MEAN(x) (it supports only 1-level nesting) */ + icu::RegexMatcher rmatch8("\\bCOUNT\\s*(\\(([^()]*|([^()])*\\([^()]*\\)[^()]*)*\\))", usInput, rMatcherFlags, status); + usInput = rmatch8.replaceAll(icu::UnicodeString("(SUM$1/MEAN$1)"), status); + return OUString(usInput.getTerminatedBuffer()); } |