commit baed84805c6d72e2f2ca3f6145a9eb340b5ea593
Author: Radek Pazdera <rpazdera(a)redhat.com>
Date: Mon Oct 8 15:36:40 2012 +0200
XmlProcessing: Adding default handler to XmlParser
A new parameter was added to the XmlParser's _process_child_nodes
method. This allows you to specify a handler, that will be called
when no handler was registered for a trigger.
Signed-off-by: Radek Pazdera <rpazdera(a)redhat.com>
Common/XmlProcessing.py | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/Common/XmlProcessing.py b/Common/XmlProcessing.py
index 47d3702..42057dc 100644
--- a/Common/XmlProcessing.py
+++ b/Common/XmlProcessing.py
@@ -138,7 +138,8 @@ class XmlParser(object):
used in error reporting.
"""
- def _process_child_nodes(self, parent, scheme, params=None):
+ def _process_child_nodes(self, parent, scheme, params=None,
+ default_handler=None):
child_nodes = parent.childNodes
if not params:
@@ -153,6 +154,8 @@ class XmlParser(object):
if node_name in scheme:
handler = scheme[node_name]
self._process_node(node, handler, params)
+ elif default_handler:
+ self._process_node(node, default_handler, params)
else:
msg = "Unexpected '%s' tag under '%s'" %
(node_name,
parent.nodeName)
@@ -263,7 +266,7 @@ class RecipeParser(XmlParser):
handler(**args)
def _process_child_nodes(self, node, scheme, params=None,
- new_ns_level=True):
+ default_handler=None, new_ns_level=True):
scheme["define"] = self._define_handler
if not params:
@@ -273,7 +276,8 @@ class RecipeParser(XmlParser):
self._template_proc.add_namespace_level()
parent = super(RecipeParser, self)
- result = parent._process_child_nodes(node, scheme, params)
+ result = parent._process_child_nodes(node, scheme, params,
+ default_handler)
if new_ns_level:
self._template_proc.drop_namespace_level()
Show replies by date