Changeset 25

Show
Ignore:
Timestamp:
02/16/02 00:28:28 (7 years ago)
Author:
sholloway
Message:

Bugfixes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBFoundation/RBFoundation/SubjectObserver.py

    r8 r25  
    4242 
    4343    def UpdateObservers(self, **kw): 
     44        self.UpdateObserversEx(kw) 
     45 
     46    def UpdateObserversEx(self, kw): 
    4447        self._cachedUpdates.update(kw) 
    4548        if not self._locked: 
  • trunk/RBFoundation/RBFoundation/XMLBuilder.py

    r9 r25  
    2929 
    3030    def __init__(self): 
    31         self._elements, self._LastCompleteElement  = [], None 
     31        self._elements = [] 
    3232 
    3333    def _GetElementFactory(self, namespace, node, attributes): 
     
    5757    def _end_element(self, name): 
    5858        self._elements[-1]._xmlInitComplete() 
    59         self._LastCompleteElement = self._elements.pop() 
     59        return self._elements.pop() 
    6060 
    6161    def _char_data(self, data): 
     
    7070        else:  
    7171            return apply(self.Parse, args, kw) 
     72 
     73    def _end_element(self, name): 
     74        self._LastCompleteElement = XMLBuilderMixin._end_element(self, name) 
    7275 
    7376    def _PreParse(self): 
  • trunk/RBJabber/RBJabber/Client.py

    r9 r25  
    44 
    55import Base 
     6import weakref 
    67from Foundation import XMLObjectify, SubjectObserver 
    78 
     
    1112 
    1213class JabberNode(XMLObjectify._Objectified): 
     14 
    1315    def __init__(self, client, parent, namespace, node, attributes): 
    14         self._client = client 
     16        self._client = weakref.proxy(client) 
    1517        XMLObjectify._Objectified.__init__(self, client, parent, namespace, node, attributes) 
    16  
     18         
    1719#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    1820 
    1921class JabberStream(JabberNode): 
    2022    def _xmlInitStarted(self): 
    21         self._client.stream.settings = self 
     23        self._client.stream.UpdateObservers(settings=self) 
    2224 
    2325    def _addElement(self, namespace, node, element): 
    2426        if namespace == 'jabber:client': 
    25             setattr(self._client.stream, node, element
     27            self._client.stream.UpdateObserversEx({node: element}
    2628 
    2729    def _addData(self, data): 
     
    4951 
    5052    def __init__(self, *args, **kw): 
    51         self.stream = SubjectObserver.AttributedSubject() 
     53        self.stream = SubjectObserver.Subject() 
    5254        apply(Base.Client.__init__, (self,) + args, kw) 
    5355 
  • trunk/RBJabber/RBJabber/Test.py

    r9 r25  
    1616            <resource>%(resource)s</resource> 
    1717        </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) 
    2018    return jc 
    2119 
     
    4745    process = SmartSelect() 
    4846    jc = _test('Python') 
    49     pm = PresenceMap().AddClient(jc) 
     47    #pm = PresenceMap().AddClient(jc) 
    5048    obs = SubjectObserver.AssociativeObserver() 
    5149    obs.AddSubject(jc.stream) 
     
    5452    obs.AddAssociation('presence', _printPresence) 
    5553    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) 
    5658    while 1: 
    5759        process(1) 
     
    5961    jc.SendXML('''<presence type="unavailable" />''') 
    6062 
    61 print "Presence Map" 
    62 for jid, subject in pm.iteritems(): 
    63     print jid 
    64     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]) 
    6668 
  • trunk/RBSkinning/RBSkinning/xmlPython/inline.py

    r9 r25  
    1919    def SkinFinalize(self): 
    2020        content = self.Content() 
    21         trimWhitespace = 0 
     21        trimWhitespace = '' 
    2222        for each in content: 
    2323            if reWhiteSpaceFromCode.match(each): 
    24                 trimWhitespace = len(reWhiteSpaceFromCode.split(each)[1]) 
     24                trimWhitespace = reWhiteSpaceFromCode.split(each)[1] 
    2525                break 
    2626 
    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') 
    3328        self.object = compile(execCode, 'xmlPython.inline', 'exec') 
    3429        exec self.object in {'self': self}