[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