diff options
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapper_Impl.cxx')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index d720e53a2a53..b5a8f124c142 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -4264,10 +4264,14 @@ OUString DomainMapper_Impl::convertFieldFormula(const OUString& input) { icu::RegexMatcher rmatch5("\\bDEFINED\\s*\\(<([A-Z]+[0-9]+)>\\)", usInput, rMatcherFlags, status); usInput = rmatch5.replaceAll(icu::UnicodeString("DEFINED($1)"), status); - /* Fix up ABS(x) using SQRT(x POW 2) - it supports only 1-level nesting */ + /* Fix up ABS(x) using SQRT(x POW 2) (it supports only 1-level nesting) */ icu::RegexMatcher rmatch6("\\bABS\\s*(\\(([^()]*|([^()])*\\([^()]*\\)[^()]*)*\\))", usInput, rMatcherFlags, status); usInput = rmatch6.replaceAll(icu::UnicodeString("SQRT($1 POW 2)"), status); + /* Fix up SIGN(x) using (0 < x) - (x < 0) (it supports only 1-level nesting) */ + icu::RegexMatcher rmatch7("\\bSIGN\\s*(\\(([^()]*|([^()])*\\([^()]*\\)[^()]*)*\\))", usInput, rMatcherFlags, status); + usInput = rmatch7.replaceAll(icu::UnicodeString("((0 L $1) - ($1 L 0))"), status); + return OUString(usInput.getTerminatedBuffer()); } |