From e1aea22f3f4fbf0cc412a8867165a85a3c55f49c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20N=C3=A9meth?= Date: Tue, 18 Aug 2020 10:54:57 +0200 Subject: [PATCH] tdf#123354 DOCX import: fix ABS formula MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert ABS(x) to the equivalent, but working Writer formula SQRT(x POW 2). Note: this is a temporary conversion, which supports only 1-level nesting of function calls. Change-Id: I96ad01dc5ac26160792e6a4cb050e103c2ad7bca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100898 Tested-by: Jenkins Reviewed-by: László Németh --- sw/qa/extras/ooxmlexport/data/tdf123354.docx | Bin 0 -> 33106 bytes sw/qa/extras/ooxmlexport/ooxmlexport15.cxx | 22 ++++++++++++++++++ .../source/dmapper/DomainMapper_Impl.cxx | 13 +++++++---- 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 sw/qa/extras/ooxmlexport/data/tdf123354.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf123354.docx b/sw/qa/extras/ooxmlexport/data/tdf123354.docx new file mode 100644 index 0000000000000000000000000000000000000000..15c7663c645c00b4f745f0849ae76082fc4749aa GIT binary patch literal 33106 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 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx index 85e7097093d0..cd3dc8021f2a 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx @@ -16,6 +16,8 @@ #include #include #include +#include +#include char const DATA_DIRECTORY[] = "/sw/qa/extras/ooxmlexport/data/"; @@ -69,6 +71,26 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf118701, "tdf118701.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:p[10]/w:pPr[1]/w:numPr", 1); } +DECLARE_OOXMLEXPORT_TEST(testTdf123354, "tdf123354.docx") +{ + // Tests cell formula ABS(x) to SQRT(x POW 2) conversion + uno::Reference xTextFieldsSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xFieldsAccess(xTextFieldsSupplier->getTextFields()); + uno::Reference xFields(xFieldsAccess->createEnumeration()); + + uno::Reference xEnumerationAccess1(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("SQRT((-234) POW 2)"), xEnumerationAccess1->getPresentation(true).trim()); + CPPUNIT_ASSERT_EQUAL(OUString("234"), xEnumerationAccess1->getPresentation(false).trim()); + + uno::Reference xEnumerationAccess2(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("SQRT((SUM()-SUM()*2) POW 2)"), xEnumerationAccess2->getPresentation(true).trim()); + CPPUNIT_ASSERT_EQUAL(OUString("700035"), xEnumerationAccess2->getPresentation(false).trim()); + + uno::Reference xEnumerationAccess3(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("SQRT(() POW 2)"), xEnumerationAccess3->getPresentation(true).trim()); + CPPUNIT_ASSERT_EQUAL(OUString("233423"), xEnumerationAccess3->getPresentation(false).trim()); +} + DECLARE_OOXMLEXPORT_TEST(testTdf98000_changePageStyle, "tdf98000_changePageStyle.odt") { uno::Reference xModel(mxComponent, uno::UNO_QUERY); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 1d23295fd759..333f1170ea09 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -4259,9 +4259,13 @@ OUString DomainMapper_Impl::convertFieldFormula(const OUString& input) { usInput = rmatch4.replaceAll(icu::UnicodeString("<$1:$2>"), status); /* Fix up user defined names */ - icu::RegexMatcher rmatch5("DEFINED\\s*\\(<([A-Z]+[0-9]+)>\\)", usInput, rMatcherFlags, status); + 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 */ + icu::RegexMatcher rmatch6("\\bABS\\s*(\\(([^()]*|([^()])*\\([^()]*\\)[^()]*)*\\))", usInput, rMatcherFlags, status); + usInput = rmatch6.replaceAll(icu::UnicodeString("SQRT($1 POW 2)"), status); + return OUString(usInput.getTerminatedBuffer()); } @@ -4286,6 +4290,10 @@ void DomainMapper_Impl::handleFieldFormula // we don't copy the = symbol from the command OUString formula = convertFieldFormula(command.copy(1)); + xFieldProperties->setPropertyValue(getPropertyName(PROP_CONTENT), uno::makeAny(formula)); + xFieldProperties->setPropertyValue(getPropertyName(PROP_NUMBER_FORMAT), uno::makeAny(sal_Int32(0))); + xFieldProperties->setPropertyValue("IsShowFormula", uno::makeAny(false)); + // grab-bag the original and converted formula if (getTableManager().isInTable()) { @@ -4294,9 +4302,6 @@ void DomainMapper_Impl::handleFieldFormula pPropMap->Insert(PROP_CELL_FORMULA_CONVERTED, uno::makeAny(formula), true, CELL_GRAB_BAG); getTableManager().cellProps(pPropMap); } - xFieldProperties->setPropertyValue(getPropertyName(PROP_CONTENT), uno::makeAny(formula)); - xFieldProperties->setPropertyValue(getPropertyName(PROP_NUMBER_FORMAT), uno::makeAny(sal_Int32(0))); - xFieldProperties->setPropertyValue("IsShowFormula", uno::makeAny(false)); } void DomainMapper_Impl::handleRubyEQField( const FieldContextPtr& pContext)