[z3-checkins] r33822 - z3/deliverance/branches/packaged/deliverance
cabraham at codespeak.net
cabraham at codespeak.net
Fri Oct 27 21:27:41 CEST 2006
Author: cabraham
Date: Fri Oct 27 21:27:39 2006
New Revision: 33822
Modified:
z3/deliverance/branches/packaged/deliverance/xslt.py
Log:
Added drop rule to xsl renderer
Modified: z3/deliverance/branches/packaged/deliverance/xslt.py
==============================================================================
--- z3/deliverance/branches/packaged/deliverance/xslt.py (original)
+++ z3/deliverance/branches/packaged/deliverance/xslt.py Fri Oct 27 21:27:39 2006
@@ -77,6 +77,8 @@
self.apply_copy(rule,theme)
elif rule.tag == self.APPEND_OR_REPLACE_RULE_TAG:
self.apply_append_or_replace(rule,theme)
+ elif rule.tag == self.DROP_RULE_TAG:
+ self.apply_drop(rule,theme)
elif rule.tag == self.SUBRULES_TAG:
self.apply_rules(rule,theme)
elif rule.tag is etree.Comment:
@@ -200,6 +202,42 @@
self.debug_append(theme_el, copier, rule)
+ def apply_drop(self,rule,theme):
+
+ if self.RULE_THEME_KEY in rule.attrib:
+ if len(theme.xpath(rule.attrib[self.RULE_THEME_KEY])) == 0:
+ if rule.get(self.NOCONTENT_KEY) == 'ignore':
+ return
+ else:
+ e = self.format_error("no element found in theme", rule)
+ self.add_to_body_start(theme, e)
+ return
+
+ for el in theme.xpath(rule.attrib[self.RULE_THEME_KEY]):
+ self.debug_drop(el,rule)
+ self.attach_text_to_previous(el, el.tail)
+ el.getparent().remove(el)
+
+
+
+# if 'content' in rule.attrib:
+# self.add_conditional_missing_content_error(theme,rule)
+
+
+
+# copier = etree.Element("{%s}copy-of" % nsmap["xsl"])
+# copier.set("select",rule.attrib[self.RULE_CONTENT_KEY])
+
+
+# # if content is matched, replace the theme element, otherwise, keep the
+# # theme element
+# choose = self.make_when_otherwise("count(%s)=0" %
+# rule.attrib[self.RULE_CONTENT_KEY],
+# copy.deepcopy(theme_el),
+# copier)
+
+
+
def xsl_escape_comments(self,doc):
"""
replaces comment nodes with xsl:comment nodes so they will
@@ -281,6 +319,21 @@
parent.insert(index, comment_before)
parent.insert(index+2, comment_after)
+ def debug_drop(self, el, rule):
+ """
+ helper method for deleting a node, if debugging is enabled,
+ comments are inserted referring to the
+ rule that performed the drop
+ """
+ if self.debug:
+ parent = el.getparent()
+ index = parent.index(el)
+
+ comment_before,comment_after = self.make_debugging_comments(rule)
+
+ parent.insert(index, comment_before)
+ parent.insert(index+2, comment_after)
+
def debug_prepend(self, parent, child, rule):
"""
helper method for prepending a node, if debugging is enabled,
More information about the z3-checkins
mailing list