sbsv2/raptor/python/plugins/filter_tagcount.py
branchwip
changeset 5 593a8820b912
child 451 153129bf777e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_tagcount.py	Mon Nov 16 20:39:37 2009 +0000
@@ -0,0 +1,74 @@
+#
+# Copyright (c) 2008-2009 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: 
+# Example of a Filter class using the SAX parser base class
+#
+
+import filter_interface
+
+class FilterTagCounter(filter_interface.FilterSAX):
+	
+	def startDocument(self):
+		# for each element name count the number of occurences
+		# and the amount of body text contained.
+		self.names = []
+		self.count = {}
+		self.errors = 0
+		self.fatals = 0
+		self.warns = 0
+		
+	def startElement(self, name, attributes):
+		if name == "buildlog":
+			# print out the attributes of the "top" element
+			print "version:"
+			for a,v in attributes.items():
+				print a, "=", v
+		
+		# push name onto the stack of names and increment the count
+		self.names.append(name)
+		if name in self.count:
+			self.count[name][0] += 1
+		else:
+			self.count[name] = [1, 0]    # occurs, characters	
+	
+	def characters(self, char):
+		# these are for the current element
+		current = self.names[-1]
+		self.count[current][1] += len(char)
+		
+	def endElement(self, name):
+		# pop the name off the stack
+		self.names.pop()
+	
+	def endDocument(self):
+		# report
+		print "\nsummary:"
+		for name,nos in sorted(self.count.items()):
+			print name, nos[0], nos[1]
+			
+		print "\nparsing:"
+		print "errors =", self.errors
+		print "fatals =", self.fatals
+		print "warnings =", self.warns
+	
+	def error(self, exception):
+		self.errors += 1
+		
+	def fatalError(self, exception):
+		self.fatals += 1
+		
+	def warning(self, exception):
+		self.warns += 1
+	
+# the end