Modified:
branches/config-1.1/CHANGELOG
branches/config-1.1/src/config/util/dom/AgaviXmlConfigDomElement.class.php
branches/config-1.1/test/tests/unit/config/util/dom/AgaviXmlConfigDomElementTest.php
Log:
Make sure elements inherit ae:literalize and xml:space from ancestors, closes #1389 again
Modified: branches/config-1.1/CHANGELOG
===================================================================
--- branches/config-1.1/CHANGELOG 2011-12-22 14:03:50 UTC (rev 4907)
+++ branches/config-1.1/CHANGELOG 2011-12-25 20:26:43 UTC (rev 4908)
@@ -4,6 +4,7 @@
1.1.0 beta1 (June ??, 2009)
---------------------------
+ADD: Allow control over value literalization and whitespace handling in parameters and settings (#1389) (David)
ADD: Support arbitrary "provides" and "depends" validator options with access to argument base parts (#1199) (David)
ADD: Allow calls to PHP functions in configuration file transformations (#1456) (David)
ADD: PSR-0 compatible namespaces autoloader (#1454) (David)
@@ -15,7 +16,6 @@
ADD: Allow MIME type checks in AgaviBaseFileValidator (#1342) (David)
ADD: Allow checking of MIME type in AgaviUploadedFile (#1407) (David)
ADD: Allow glob syntax for XIncludes in configuration files (#1406) (David)
-ADD: Allow control over value literalization and whitespace handling in parameters and settings (#1389) (David)
ADD: AgaviHttpRedirectRoutingCallback (#1382) (David)
ADD: Improve the build system for actions, views and models (#1106) (Felix)
ADD: Allow array syntax for slot names (#1110) (David)
Modified: branches/config-1.1/src/config/util/dom/AgaviXmlConfigDomElement.class.php
===================================================================
--- branches/config-1.1/src/config/util/dom/AgaviXmlConfigDomElement.class.php 2011-12-22 14:03:50 UTC (rev 4907)
+++ branches/config-1.1/src/config/util/dom/AgaviXmlConfigDomElement.class.php 2011-12-25 20:26:43 UTC (rev 4908)
@@ -102,8 +102,8 @@
// no problem though, because these other chars aren't legal in XML
$trimmedValue = trim($value);
- $preserveWhitespace = $this->getAttributeNS(AgaviXmlConfigParser::NAMESPACE_XML_1998, 'space') == 'preserve';
- $literalize = AgaviToolkit::literalize($this->getAttributeNS(AgaviXmlConfigParser::NAMESPACE_AGAVI_ENVELOPE_LATEST, 'literalize')) !== false;
+ $preserveWhitespace = $this->ownerDocument->getXpath()->evaluate(sprintf('ancestor-or-self::*[@*[namespace-uri()="%1$s" and local-name()="space"]][1]/@*[namespace-uri()="%1$s" and local-name()="space"] = "preserve"', AgaviXmlConfigParser::NAMESPACE_XML_1998), $this);
+ $literalize = !$this->ownerDocument->getXpath()->evaluate(sprintf('count(ancestor-or-self::*[@*[namespace-uri()="%1$s" and local-name()="literalize"]][1]/@*[namespace-uri()="%1$s" and local-name()="literalize"])', AgaviXmlConfigParser::NAMESPACE_AGAVI_ENVELOPE_LATEST), $this) || AgaviToolkit::literalize($this->ownerDocument->getXpath()->evaluate(sprintf('string(ancestor-or-self::*[@*[namespace-uri()="%1$s" and local-name()="literalize"]][1]/@*[namespace-uri()="%1$s" and local-name()="literalize"])', AgaviXmlConfigParser::NAMESPACE_AGAVI_ENVELOPE_LATEST), $this)) === true;
if($literalize) {
if($preserveWhitespace && ($trimmedValue === '' || $value != $trimmedValue)) {
Modified: branches/config-1.1/test/tests/unit/config/util/dom/AgaviXmlConfigDomElementTest.php
===================================================================
--- branches/config-1.1/test/tests/unit/config/util/dom/AgaviXmlConfigDomElementTest.php 2011-12-22 14:03:50 UTC (rev 4907)
+++ branches/config-1.1/test/tests/unit/config/util/dom/AgaviXmlConfigDomElementTest.php 2011-12-25 20:26:43 UTC (rev 4908)
@@ -192,6 +192,12 @@
'plural container' => array('<ae:parameters><ae:parameter name="foo">bar</ae:parameter></ae:parameters>', array('foo' => 'bar')),
'plural children' => array('<ae:parameters><ae:parameter name="foo"><ae:parameters><ae:parameter>bar</ae:parameter></ae:parameters></ae:parameter></ae:parameters>', array('foo' => array(0 => 'bar'))),
'plural and singular mix' => array('<ae:parameters><ae:parameter name="foo">bar</ae:parameter></ae:parameters><ae:parameter name="bar">baz</ae:parameter>', array('foo' => 'bar', 'bar' => 'baz')),
+ 'ae:literalize affects descendants' => array('<ae:parameter name="foo" ae:literalize="false"><ae:parameter name="bar">true</ae:parameter></ae:parameter>', array('foo' => array('bar' => 'true'))),
+ 'xml:space affects descendants' => array('<ae:parameter name="foo" xml:space="preserve"><ae:parameter name="bar"> ohai </ae:parameter></ae:parameter>', array('foo' => array('bar' => ' ohai '))),
+ 'ae:literalize can be reset' => array('<ae:parameter name="foo" ae:literalize="false"><ae:parameter name="bar" ae:literalize="true">true</ae:parameter></ae:parameter>', array('foo' => array('bar' => true))),
+ 'xml:space can be reset' => array('<ae:parameter name="foo" xml:space="preserve"><ae:parameter name="bar" xml:space="default"> ohai </ae:parameter></ae:parameter>', array('foo' => array('bar' => 'ohai'))),
+ 'ancestor can reset ae:literalize' => array('<ae:parameter name="foo" ae:literalize="false"><ae:parameter name="bar" ae:literalize="true"><ae:parameter>true</ae:parameter></ae:parameter></ae:parameter>', array('foo' => array('bar' => array(true)))),
+ 'ancestor can reset xml:space' => array('<ae:parameter name="foo" xml:space="preserve"><ae:parameter name="bar" xml:space="default"><ae:parameter> ohai </ae:parameter></ae:parameter></ae:parameter>', array('foo' => array('bar' => array('ohai')))),
);
}
_______________________________________________
Agavi Commits Mailing List
com...@lists.agavi.org
http://lists.agavi.org/mailman/listinfo/commits