from __future__ import absolute_import
from sleekxmpp.xmlstream.matcher.xpath import MatchXPath

class StanzaBase(object):

	MATCHER = MatchXPath("")

	def __init__(self, stream, xml=None, extensions=[]):
		self.extensions = extensions
		self.p = {} #plugins

		self.xml = xml
		self.stream = stream
		if xml is not None:
			self.fromXML(xml)
	
	def fromXML(self, xml):
		"Initialize based on incoming XML"
		self._processXML(xml)
		for ext in self.extensions:
			ext.fromXML(self, xml)
		
	
	def _processXML(self, xml, cur_ns=''):
		if '}' in xml.tag:
			ns,tag = xml.tag[1:].split('}')
		else:
			tag = xml.tag
	
	def toXML(self, xml):
		"Set outgoing XML"
	
	def extend(self, extension_class, xml=None):
		"Initialize extension"
	
	def match(self, xml):
		return self.MATCHER.match(xml)