Changeset 2501:82ee766436ab in livinglogic.python.xist

Show
Ignore:
Timestamp:
04/25/06 18:36:28 (13 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Use fullname() in CodePresenter?.

Implement CodePresenter?.presentAttrs().

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • _xist/presenters.py

    r2491 r2501  
    840840 
    841841    def __str__(self): 
    842         return "\n".join(iter(self)) 
     842        return "\n".join(self) 
    843843 
    844844    def present(self, node): 
     
    877877        if len(node): 
    878878            if not self._inattr: # skip "(" for attributes, they will be added by presentElement() 
    879                 yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__class__.__name__) 
     879                yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
    880880            self._level += 1 
    881881            for (i, child) in enumerate(node): 
     
    895895        else: 
    896896            if not self._inattr: 
    897                 yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__class__.__name__) 
     897                yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
    898898 
    899899    def presentAttrs(self, node): 
     900        if len(node): 
     901            globalattrs = {} 
     902            localattrs = {} 
     903            for (attrname, attrvalue) in node.iteritems(): 
     904                if isinstance(attrname, tuple): 
     905                    globalattrs[attrname] = attrvalue 
     906                else: 
     907                    localattrs[attrname] = attrvalue 
     908 
     909            yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     910            self._level += 1 
     911            if globalattrs: 
     912                yield "%s{" % self._indent() 
     913                for (i, (attrname, attrvalue)) in enumerate(globalattrs.iteritems()): 
     914                    attrname = "(%s, %r)" % (attrname[0].__module__, attrname[1]) 
     915                    self._inattr += 1 
     916                    if len(attrvalue)==1: # optimize away the tuple () 
     917                        attrvalue = " ".join(attrvalue[0].present(self)) 
     918                    else: 
     919                        attrvalue = "(%s)" % " ".join(attrvalue.present(self)) 
     920                    self._inattr -= 1 
     921                    self._level += 1 
     922                    line = "%s%s: %s" % (self._indent(), attrname, attrvalue) 
     923                    if i != len(globalattrs) or not localattrs: 
     924                        line += "," 
     925                    yield line 
     926                    self._level -= 1 
     927                line = "%s}" % self._indent() 
     928                if localattrs: 
     929                    line += "," 
     930                yield line 
     931            for (i, (attrname, attrvalue)) in enumerate(localattrs.iteritems()): 
     932                self._inattr += 1 
     933                if len(attrvalue)==1: # optimize away the tuple () 
     934                    attrvalue = " ".join(attrvalue[0].present(self)) 
     935                else: 
     936                    attrvalue = "(%s)" % " ".join(attrvalue.present(self)) 
     937                self._inattr -= 1 
     938                line = "%s%s=%s" % (self._indent(), attrname, attrvalue) 
     939                if i != len(localattrs)-1: 
     940                    line += "," 
     941                yield line 
     942            self._level -= 1 
     943            yield "%s)" % self._indent() 
     944        else: 
     945            yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     946 
     947 
     948        """ 
     949        if len(node): 
     950            if not self._inattr: # skip "(" for attributes, they will be added by presentElement() 
     951                yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     952            self._level += 1 
     953            for (i, child) in enumerate(node): 
     954                if i==len(node)-1: 
     955                    for line in child.present(self): 
     956                        yield line 
     957                else: 
     958                    lines = list(child.present(self)) 
     959                    for (j, line) in enumerate(lines): 
     960                        if i==len(node)-1: 
     961                            yield line 
     962                        else: 
     963                            yield "%s," % line 
     964            self._level -= 1 
     965            if not self._inattr: 
     966                yield "%s)" % self._indent() 
     967        else: 
     968            if not self._inattr: 
     969                yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
    900970        yield self._indent() 
    901971        yield "{" 
     
    9311001        yield self._indent() 
    9321002        yield "}" 
     1003        """ 
    9331004 
    9341005    def presentElement(self, node): 
    9351006        if len(node.content) or len(node.attrs): 
    936             yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__class__.__name__) 
     1007            yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
    9371008 
    9381009            self._level += 1 
     
    9561027                    localattrs[attrname] = attrvalue 
    9571028 
    958             if len(globalattrs): 
     1029            if globalattrs: 
    9591030                yield "%s{" % self._indent() 
    9601031                for (i, (attrname, attrvalue)) in enumerate(globalattrs.iteritems()): 
     
    9731044                    self._level -= 1 
    9741045                line = "%s}" % self._indent() 
     1046                if localattrs: 
     1047                    line += "," 
    9751048                yield line 
    9761049            for (i, (attrname, attrvalue)) in enumerate(localattrs.iteritems()): 
     
    9881061            yield "%s)" % self._indent() 
    9891062        else: 
    990             yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__class__.__name__) 
     1063            yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
    9911064 
    9921065    def presentNull(self, node): 
     
    9971070 
    9981071    def presentEntity(self, node): 
    999         yield "%s%s.%s()" % (self._indent(), node.__module__, node.__class__.__fullname__()) 
     1072        yield "%s%s.%s()" % (self._indent(), node.__module__, node.__fullname__()) 
    10001073 
    10011074    def presentProcInst(self, node): 
    1002         yield "%s%s.%s(%r)" % (self._indent(), node.__module__, node.__class__.__fullname__(), self._text(node.content)) 
     1075        yield "%s%s.%s(%r)" % (self._indent(), node.__module__, node.__fullname__(), self._text(node.content)) 
    10031076 
    10041077    def presentComment(self, node):