Changeset 25
- Timestamp:
- 02/16/02 00:28:28 (7 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/SubjectObserver.py (modified) (1 diff)
- trunk/RBFoundation/RBFoundation/XMLBuilder.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/Client.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/Test.py (modified) (4 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/inline.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/SubjectObserver.py
r8 r25 42 42 43 43 def UpdateObservers(self, **kw): 44 self.UpdateObserversEx(kw) 45 46 def UpdateObserversEx(self, kw): 44 47 self._cachedUpdates.update(kw) 45 48 if not self._locked: trunk/RBFoundation/RBFoundation/XMLBuilder.py
r9 r25 29 29 30 30 def __init__(self): 31 self._elements , self._LastCompleteElement = [], None31 self._elements = [] 32 32 33 33 def _GetElementFactory(self, namespace, node, attributes): … … 57 57 def _end_element(self, name): 58 58 self._elements[-1]._xmlInitComplete() 59 self._LastCompleteElement =self._elements.pop()59 return self._elements.pop() 60 60 61 61 def _char_data(self, data): … … 70 70 else: 71 71 return apply(self.Parse, args, kw) 72 73 def _end_element(self, name): 74 self._LastCompleteElement = XMLBuilderMixin._end_element(self, name) 72 75 73 76 def _PreParse(self): trunk/RBJabber/RBJabber/Client.py
r9 r25 4 4 5 5 import Base 6 import weakref 6 7 from Foundation import XMLObjectify, SubjectObserver 7 8 … … 11 12 12 13 class JabberNode(XMLObjectify._Objectified): 14 13 15 def __init__(self, client, parent, namespace, node, attributes): 14 self._client = client16 self._client = weakref.proxy(client) 15 17 XMLObjectify._Objectified.__init__(self, client, parent, namespace, node, attributes) 16 18 17 19 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 18 20 19 21 class JabberStream(JabberNode): 20 22 def _xmlInitStarted(self): 21 self._client.stream. settings = self23 self._client.stream.UpdateObservers(settings=self) 22 24 23 25 def _addElement(self, namespace, node, element): 24 26 if namespace == 'jabber:client': 25 se tattr(self._client.stream, node, element)27 self._client.stream.UpdateObserversEx({node: element}) 26 28 27 29 def _addData(self, data): … … 49 51 50 52 def __init__(self, *args, **kw): 51 self.stream = SubjectObserver. AttributedSubject()53 self.stream = SubjectObserver.Subject() 52 54 apply(Base.Client.__init__, (self,) + args, kw) 53 55 trunk/RBJabber/RBJabber/Test.py
r9 r25 16 16 <resource>%(resource)s</resource> 17 17 </query></iq>''' % dictLogin) 18 jc.SendXML('''<presence type="available" priority='1'/>''')19 jc.SendXML('''<iq type="get" to="%s"><query xmlns="jabber:iq:roster"/></iq>''' % jc.ServerJID)20 18 return jc 21 19 … … 47 45 process = SmartSelect() 48 46 jc = _test('Python') 49 pm = PresenceMap().AddClient(jc)47 #pm = PresenceMap().AddClient(jc) 50 48 obs = SubjectObserver.AssociativeObserver() 51 49 obs.AddSubject(jc.stream) … … 54 52 obs.AddAssociation('presence', _printPresence) 55 53 process.append(jc) 54 for x in xrange(2): 55 process(1) 56 jc.SendXML('''<presence />''') 57 jc.SendXML('''<iq type="get" to="%s"><query xmlns="jabber:iq:roster"/></iq>''' % jc.ServerJID) 56 58 while 1: 57 59 process(1) … … 59 61 jc.SendXML('''<presence type="unavailable" />''') 60 62 61 print "Presence Map"62 for jid, subject in pm.iteritems():63 print jid64 for resource, presence in pm[jid].iteritems():65 print ' %s: %s' % (resource, getattr(presence, 'status', [''])[0])63 #print "Presence Map" 64 #for jid, subject in pm.iteritems(): 65 # print jid 66 # for resource, presence in pm[jid].iteritems(): 67 # print ' %s: %s' % (resource, getattr(presence, 'status', [''])[0]) 66 68 trunk/RBSkinning/RBSkinning/xmlPython/inline.py
r9 r25 19 19 def SkinFinalize(self): 20 20 content = self.Content() 21 trimWhitespace = 021 trimWhitespace = '' 22 22 for each in content: 23 23 if reWhiteSpaceFromCode.match(each): 24 trimWhitespace = len(reWhiteSpaceFromCode.split(each)[1])24 trimWhitespace = reWhiteSpaceFromCode.split(each)[1] 25 25 break 26 26 27 execCode = '' 28 for each in content: 29 if each == '\n': execCode += ' \n' # Pad with a space because a lone \n signals the end of input 30 elif not each.strip(): execCode += ' \n' 31 else: execCode += each[trimWhitespace:] 32 27 execCode = '%s\n' % ''.join(content).replace('\n' + trimWhitespace, '\n') 33 28 self.object = compile(execCode, 'xmlPython.inline', 'exec') 34 29 exec self.object in {'self': self}
