diff options
author | sb <sb@openoffice.org> | 2010-03-24 16:04:08 +0100 |
---|---|---|
committer | sb <sb@openoffice.org> | 2010-03-24 16:04:08 +0100 |
commit | 41b28993173f98f858a90fb7d8f259e24207ccbe (patch) | |
tree | ce74a26be96cf8a64f7f7ca9402518f424e9e6b1 /configmgr | |
parent | 22cf34ac5ea7aea96b9f50078cb4b0874f031dd6 (diff) |
sb121: #i110203# use <it> in Setup.xcu string-list values; pass it through XSLT scripts intact; handle it correctly in configmgr::ValueParser
Diffstat (limited to 'configmgr')
-rw-r--r-- | configmgr/source/valueparser.cxx | 22 | ||||
-rw-r--r-- | configmgr/source/valueparser.hxx | 4 | ||||
-rw-r--r-- | configmgr/source/xcsparser.cxx | 2 | ||||
-rw-r--r-- | configmgr/source/xcuparser.cxx | 4 |
4 files changed, 12 insertions, 20 deletions
diff --git a/configmgr/source/valueparser.cxx b/configmgr/source/valueparser.cxx index f951aac5ca01..4adf452c409b 100644 --- a/configmgr/source/valueparser.cxx +++ b/configmgr/source/valueparser.cxx @@ -270,6 +270,10 @@ XmlReader::Text ValueParser::getTextMode() const { if (node_.is()) { switch (state_) { case STATE_TEXT: + if (!items_.empty()) { + break; + } + // fall through case STATE_IT: return (type_ == TYPE_STRING || type_ == TYPE_STRING_LIST || @@ -294,7 +298,9 @@ bool ValueParser::startElement( name.equals(RTL_CONSTASCII_STRINGPARAM("it")) && isListType(type_) && separator_.getLength() == 0) { - checkEmptyPad(reader); + pad_.clear(); + // before first <it>, characters are not ignored; assume they + // are only whitespace state_ = STATE_IT; return true; } @@ -351,7 +357,7 @@ bool ValueParser::startElement( css::uno::Reference< css::uno::XInterface >()); } -bool ValueParser::endElement(XmlReader const & reader) { +bool ValueParser::endElement() { if (!node_.is()) { return false; } @@ -363,7 +369,6 @@ bool ValueParser::endElement(XmlReader const & reader) { value = parseValue(separator_, pad_.get(), type_); pad_.clear(); } else { - checkEmptyPad(reader); switch (type_) { case TYPE_BOOLEAN_LIST: value = convertItems< sal_Bool >(); @@ -454,17 +459,6 @@ int ValueParser::getLayer() const { return layer_; } -void ValueParser::checkEmptyPad(XmlReader const & reader) const { - if (pad_.is()) { - throw css::uno::RuntimeException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "mixed text and <it> elements in ")) + - reader.getUrl()), - css::uno::Reference< css::uno::XInterface >()); - } -} - template< typename T > css::uno::Any ValueParser::convertItems() { css::uno::Sequence< T > seq(items_.size()); for (sal_Int32 i = 0; i < seq.getLength(); ++i) { diff --git a/configmgr/source/valueparser.hxx b/configmgr/source/valueparser.hxx index c328fe7eddce..4e899f4632dd 100644 --- a/configmgr/source/valueparser.hxx +++ b/configmgr/source/valueparser.hxx @@ -61,7 +61,7 @@ public: bool startElement( XmlReader & reader, XmlReader::Namespace ns, Span const & name); - bool endElement(XmlReader const & reader); + bool endElement(); void characters(Span const & text); @@ -75,8 +75,6 @@ public: rtl::OString separator_; private: - void checkEmptyPad(XmlReader const & reader) const; - template< typename T > com::sun::star::uno::Any convertItems(); enum State { STATE_TEXT, STATE_TEXT_UNICODE, STATE_IT, STATE_IT_UNICODE }; diff --git a/configmgr/source/xcsparser.cxx b/configmgr/source/xcsparser.cxx index 4de9973594c1..3fc719f00fe9 100644 --- a/configmgr/source/xcsparser.cxx +++ b/configmgr/source/xcsparser.cxx @@ -266,7 +266,7 @@ bool XcsParser::startElement( } void XcsParser::endElement(XmlReader const & reader) { - if (valueParser_.endElement(reader)) { + if (valueParser_.endElement()) { return; } if (ignoring_ > 0) { diff --git a/configmgr/source/xcuparser.cxx b/configmgr/source/xcuparser.cxx index 60ea59ca0248..80dc501e9435 100644 --- a/configmgr/source/xcuparser.cxx +++ b/configmgr/source/xcuparser.cxx @@ -209,8 +209,8 @@ bool XcuParser::startElement( return true; } -void XcuParser::endElement(XmlReader const & reader) { - if (valueParser_.endElement(reader)) { +void XcuParser::endElement(XmlReader const &) { + if (valueParser_.endElement()) { return; } OSL_ASSERT(!state_.empty()); |