--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_component.py Fri Jun 04 13:09:28 2010 +0100
@@ -0,0 +1,96 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Filter class to print log entries for a selected component
+#
+
+import filter_interface
+import sys
+
+class FilterComp(filter_interface.FilterSAX):
+
+ def __init__(self, params = []):
+ """parameters to this filter are the path of the bld.inf and some flags.
+
+ The bld.inf path can be a substring of the path to match. For example,
+ "email" will match an element with bldinf="y:/src/email/group/bld.inf".
+
+ No flags are supported yet; this is for future expansion.
+
+ If no parameters are passed then nothing is printed."""
+ self.bldinf = ""
+ self.flags = ""
+
+ if len(params) > 0:
+ self.bldinf = params[0]
+
+ if len(params) > 1:
+ self.flags = params[1]
+
+ super(FilterComp, self).__init__()
+
+ def startDocument(self):
+ # mark when we are inside an element with bldinf="the selected one"
+ self.inside = False
+ # and count nested elements so we can toggle off at the end.
+ self.nesting = 0
+
+ def printElementStart(self, name, attributes):
+ sys.stdout.write("<" + name)
+ for att,val in attributes.items():
+ sys.stdout.write(" " + att + "='" + val + "'")
+ sys.stdout.write(">")
+
+ def startElement(self, name, attributes):
+ if self.inside:
+ self.nesting += 1
+ self.printElementStart(name, attributes)
+ return
+
+ if self.bldinf:
+ try:
+ if self.bldinf in attributes["bldinf"]:
+ self.inside = True
+ self.nesting = 1
+ self.printElementStart(name, attributes)
+ except KeyError:
+ pass
+
+ def characters(self, char):
+ if self.inside:
+ sys.stdout.write(char)
+
+ def endElement(self, name):
+ if self.inside:
+ sys.stdout.write("</" + name + ">")
+
+ self.nesting -= 1
+
+ if self.nesting == 0:
+ self.inside = False
+ print
+
+ def endDocument(self):
+ pass
+
+ def error(self, exception):
+ print filter_interface.Filter.formatError("FilterComp:" + str(exception))
+
+ def fatalError(self, exception):
+ print filter_interface.Filter.formatError("FilterComp:" + str(exception))
+
+ def warning(self, exception):
+ print filter_interface.Filter.formatWarning("FilterComp:" + str(exception))
+
+# the end