[z3-checkins] r33924 - in z3/deliverance/branches/packaged/deliverance: . test-data
cabraham at codespeak.net
cabraham at codespeak.net
Mon Oct 30 20:18:37 CET 2006
Author: cabraham
Date: Mon Oct 30 20:18:33 2006
New Revision: 33924
Modified:
z3/deliverance/branches/packaged/deliverance/interpreter.py
z3/deliverance/branches/packaged/deliverance/test-data/test_replace.xml
z3/deliverance/branches/packaged/deliverance/xslt.py
Log:
added error message fired when trying to replace the whole theme.
Modified: z3/deliverance/branches/packaged/deliverance/interpreter.py
==============================================================================
--- z3/deliverance/branches/packaged/deliverance/interpreter.py (original)
+++ z3/deliverance/branches/packaged/deliverance/interpreter.py Mon Oct 30 20:18:33 2006
@@ -201,6 +201,12 @@
theme, self.format_error("no content matched", rule))
return
+ if theme_el.getparent() is None:
+ self.add_to_body_start(
+ theme, self.format_error("cannot replace whole theme", rule))
+ return
+
+
if self.debug:
self.debug_replace(theme_el, content_els, rule)
return
@@ -226,10 +232,13 @@
# this tail, if there is one, should stick around
preserve_tail = non_text_els[0].tail
+ #replaces first element
self.replace_element(theme_el, non_text_els[0])
temptail = non_text_els[0].tail
non_text_els[0].tail = None
parent = non_text_els[0].getparent()
+
+ # appends the rest of the elements
i = parent.index(non_text_els[0])
parent[i+1:i+1] = non_text_els[1:]
Modified: z3/deliverance/branches/packaged/deliverance/test-data/test_replace.xml
==============================================================================
--- z3/deliverance/branches/packaged/deliverance/test-data/test_replace.xml (original)
+++ z3/deliverance/branches/packaged/deliverance/test-data/test_replace.xml Mon Oct 30 20:18:33 2006
@@ -211,6 +211,29 @@
</output>
</deliverance-test>
+<!-- tests replace command on edge case: html element -->
+<deliverance-test>
+ <rules xmlns="http://www.plone.org/deliverance">
+ <replace theme="//html" content="//html" />
+ </rules>
+
+ <theme base="http://example.com">
+ <html><head><title>Blah</title></head><body><div id="foo">Dummy Content</div></body></html>
+ </theme>
+
+ <content>
+ <html><body><div id="bar">Real Content</div></body></html>
+ </content>
+
+ <output>
+ <html><head><title>Blah</title></head><body><div class="deliverance-error">Deliverance error: cannot replace whole theme<br />
+ rule: <replace theme="//html" content="//html"/></div><div id="foo">Dummy Content</div>
+ </body></html>
+ </output>
+
+</deliverance-test>
+
+
<!-- a test that replaces text with a mixture of elements and text -->
<!-- <deliverance-test>
<rules xmlns="http://www.plone.org/deliverance">
Modified: z3/deliverance/branches/packaged/deliverance/xslt.py
==============================================================================
--- z3/deliverance/branches/packaged/deliverance/xslt.py (original)
+++ z3/deliverance/branches/packaged/deliverance/xslt.py Mon Oct 30 20:18:33 2006
@@ -125,6 +125,11 @@
if theme_el is None:
return
+ if theme_el.getparent() is None:
+ self.add_to_body_start(
+ theme, self.format_error("cannot replace whole theme", rule))
+ return
+
self.add_conditional_missing_content_error(theme,rule)
copier = etree.Element("{%s}copy-of" % nsmap["xsl"])
More information about the z3-checkins
mailing list