Changeset 2553:fb86aed2ee73 in livinglogic.python.xist

Show
Ignore:
Timestamp:
06/23/06 18:54:52 (14 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Add syntax highlighting to CodePresenter?. Change colors to better work
with a dark background.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/ll/xist/presenters.py

    r2552 r2553  
    5252 
    5353# style to be used for namespaces 
    54 s4ns = astyle.Style.fromenv("LL_XIST_STYLE_NAMESPACE", "blue:black") 
     54s4ns = astyle.Style.fromenv("LL_XIST_STYLE_NAMESPACE", "magenta:black") 
    5555 
    5656 
    5757# style to be used for Null object 
    58 s4null = astyle.Style.fromenv("LL_XIST_STYLE_NULL", "white:black:bold") 
     58s4null = astyle.Style.fromenv("LL_XIST_STYLE_NULL", "red:black") 
    5959 
    6060 
    6161# style to be used for Null name 
    62 s4nullname = astyle.Style.fromenv("LL_XIST_STYLE_NULLNAME", "red:black:bold") 
     62s4nullname = astyle.Style.fromenv("LL_XIST_STYLE_NULLNAME", "red:black") 
    6363 
    6464 
    6565# style to be used a Frag object 
    66 s4frag = astyle.Style.fromenv("LL_XIST_STYLE_FRAG", "white:black:bold") 
     66s4frag = astyle.Style.fromenv("LL_XIST_STYLE_FRAG", "yellow:black") 
    6767 
    6868 
    6969# style to be used for Frag name 
    70 s4fragname = astyle.Style.fromenv("LL_XIST_STYLE_FRAGNAME", "blue:black:bold") 
     70s4fragname = astyle.Style.fromenv("LL_XIST_STYLE_FRAGNAME", "yellow:black") 
    7171 
    7272 
    7373# style to be used for elements (i.e. the <, > and / characters 
    74 s4element = astyle.Style.fromenv("LL_XIST_STYLE_ELEMENT", "white:black:bold") 
     74s4element = astyle.Style.fromenv("LL_XIST_STYLE_ELEMENT", "yellow:black") 
    7575 
    7676 
    7777# style to be used for element names 
    78 s4elementname = astyle.Style.fromenv("LL_XIST_STYLE_ELEMENTNAME", "blue:black:bold") 
     78s4elementname = astyle.Style.fromenv("LL_XIST_STYLE_ELEMENTNAME", "yellow:black") 
    7979 
    8080 
     
    9696 
    9797# style to be used for attribute names 
    98 s4attrname = astyle.Style.fromenv("LL_XIST_STYLE_ATTRNAME", "blue:black:bold") 
     98s4attrname = astyle.Style.fromenv("LL_XIST_STYLE_ATTRNAME", "cyan:black") 
    9999 
    100100 
    101101# style to be used for attrs class name 
    102 s4attrs = astyle.Style.fromenv("LL_XIST_STYLE_ATTRS", "blue:black:bold") 
     102s4attrs = astyle.Style.fromenv("LL_XIST_STYLE_ATTRS", "yellow:black") 
    103103 
    104104 
    105105# style to be used for attrs class name 
    106 s4attrsname = astyle.Style.fromenv("LL_XIST_STYLE_ATTRSNAME", "blue:black:bold") 
     106s4attrsname = astyle.Style.fromenv("LL_XIST_STYLE_ATTRSNAME", "yellow:black:bold") 
    107107 
    108108 
     
    128128 
    129129# style to be used for comment (i.e. <!-- and -->) 
    130 s4comment = astyle.Style.fromenv("LL_XIST_STYLE_COMMENT", "black:black:bold") 
     130s4comment = astyle.Style.fromenv("LL_XIST_STYLE_COMMENT", "blue:black") 
    131131 
    132132 
    133133# style to be used for comment text 
    134 s4commenttext = astyle.Style.fromenv("LL_XIST_STYLE_COMMENTTEXT", "black:black:bold") 
     134s4commenttext = astyle.Style.fromenv("LL_XIST_STYLE_COMMENTTEXT", "blue:black") 
    135135 
    136136 
     
    422422        indent = self.indent 
    423423        if indent == "\t": 
    424             indent = "  " 
     424            indent = "   " 
    425425        return s4tab(level*indent) 
    426426 
     
    559559            self._inattr -= 1 
    560560            if len(node): 
    561                 firstline.append(">") 
     561                firstline.append(s4element(">")) 
    562562                yield Line( 
    563563                    node.startloc, 
     
    579579                ) 
    580580            else: 
    581                 firstline.append("/>") 
     581                firstline.append(s4element("/>")) 
    582582                yield Line( 
    583583                    node.startloc, 
     
    678678 
    679679    def __str__(self): 
    680         return "\n".join(self) 
     680        return "\n".join(str(s) for s in self) 
    681681 
    682682    def __xiter__(self, mode="default"): 
     
    693693            return "" 
    694694        else: 
    695             return self.indent*self._level 
     695            indent = self.indent 
     696            if indent == "\t": 
     697                indent = "   " 
     698            return s4tab(self.indent*self._level) 
    696699 
    697700    def _text(self, text): 
     
    711714 
    712715    def presentFrag(self, node): 
     716        name = s4frag(s4ns(node.__class__.__module__), ".", s4fragname(node.__fullname__())) 
    713717        if len(node): 
    714718            if not self._inattr: # skip "(" for attributes, they will be added by presentElement() 
    715                 yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     719                yield astyle.style_default(self._indent(), name, "(") 
    716720            self._level += 1 
    717721            for (i, child) in enumerate(node): 
     
    727731            self._level -= 1 
    728732            if not self._inattr: 
    729                 yield "%s)" % self._indent() 
     733                yield astyle.style_default(self._indent(), ")") 
    730734        else: 
    731735            if not self._inattr: 
    732                 yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     736                yield astyle.style_default(self._indent(), name, "()") 
    733737 
    734738    def presentAttrs(self, node): 
     739        name = s4attrs(s4ns(node.__class__.__module__), ".", s4attrsname(node.__fullname__())) 
    735740        if len(node): 
    736741            globalattrs = {} 
     
    742747                    localattrs[attrname] = attrvalue 
    743748 
    744             yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     749            yield astyle.style_default(self._indent(), name, "(") 
    745750            self._level += 1 
    746751            if globalattrs: 
     
    776781                yield line 
    777782            self._level -= 1 
    778             yield "%s)" % self._indent() 
    779         else: 
    780             yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     783            yield astyle.style_default(self._indent(), ")") 
     784        else: 
     785            yield astyle.style_default(self._indent(), name, "()") 
    781786 
    782787    def presentElement(self, node): 
     788        name = s4element(s4ns(node.__class__.__module__), ".", s4elementname(node.__fullname__())) 
    783789        if len(node.content) or len(node.attrs): 
    784             yield "%s%s.%s(" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
    785  
     790            yield astyle.style_default(self._indent(), name, "(") 
    786791            self._level += 1 
    787792            for (i, child) in enumerate(node): 
     
    805810 
    806811            if globalattrs: 
    807                 yield "%s{" % self._indent() 
     812                yield astyle.style_default(self._indent(), "{") 
    808813                for (i, (attrname, attrvalue)) in enumerate(globalattrs.iteritems()): 
    809                     attrname = "(%s, %r)" % (attrname[0].__module__, attrname[1]) 
     814                    attrname = astyle.style_default("(", s4ns(attrname[0].__module__), ", ", s4attrname(attrname[1]), ")") 
    810815                    self._inattr += 1 
     816                    attrtext = astyle.Text() 
    811817                    if len(attrvalue)==1: # optimize away the tuple () 
    812                         attrvalue = " ".join(attrvalue[0].present(self)) 
     818                        for part in attrvalue[0].present(self): 
     819                            if attrtext: 
     820                                attrtext.append(" ") 
     821                            attrtext.append(part) 
    813822                    else: 
    814                         attrvalue = "(%s)" % " ".join(attrvalue.present(self)) 
     823                        for part in attrvalue.present(self): 
     824                            if attrtext: 
     825                                attrtext.append(" ") 
     826                            else: 
     827                                attrtext.append("(") 
     828                            attrtext.append(part) 
     829                        attrtext.append(")") 
    815830                    self._inattr -= 1 
    816831                    self._level += 1 
    817                     line = "%s%s: %s" % (self._indent(), attrname, attrvalue) 
     832                    line = astyle.style_default(self._indent(), s4attrname(attrname), ": ", s4attrvalue(attrtext)) 
    818833                    if i != len(globalattrs) or not localattrs: 
    819834                        line += "," 
    820835                    yield line 
    821836                    self._level -= 1 
    822                 line = "%s}" % self._indent() 
     837                line = astyle.style_default(self._indent(), "}") 
    823838                if localattrs: 
    824839                    line += "," 
     
    826841            for (i, (attrname, attrvalue)) in enumerate(localattrs.iteritems()): 
    827842                self._inattr += 1 
     843                attrtext = astyle.Text() 
    828844                if len(attrvalue)==1: # optimize away the tuple () 
    829                     attrvalue = " ".join(attrvalue[0].present(self)) 
     845                    for part in attrvalue[0].present(self): 
     846                        if attrtext: 
     847                            attrtext.append(" ") 
     848                        attrtext.append(part) 
    830849                else: 
    831                     attrvalue = "(%s)" % " ".join(attrvalue.present(self)) 
     850                    for part in attrvalue.present(self): 
     851                        if attrtext: 
     852                            attrtext.append(" ") 
     853                        else: 
     854                            attrtext.append("(") 
     855                        attrtext.append(part) 
     856                    attrtext.append(")") 
    832857                self._inattr -= 1 
    833                 line = "%s%s=%s" % (self._indent(), attrname, attrvalue) 
     858                line = astyle.style_default(self._indent(), s4attrname(attrname), "=", s4attrvalue(attrtext)) 
    834859                if i != len(localattrs)-1: 
    835860                    line += "," 
    836861                yield line 
    837862            self._level -= 1 
    838             yield "%s)" % self._indent() 
    839         else: 
    840             yield "%s%s.%s()" % (self._indent(), node.__class__.__module__, node.__fullname__()) 
     863            yield astyle.style_default(self._indent(), ")") 
     864        else: 
     865            yield astyle.style_default(self._indent(), name, "()") 
    841866 
    842867    def presentNull(self, node): 
    843         yield "%sxsc.Null" % self._indent() 
     868        name = s4null(s4ns(node.__class__.__module__), ".", s4nullname(node.__fullname__())) 
     869        yield astyle.style_default(self._indent(), name) 
    844870 
    845871    def presentText(self, node): 
    846         yield "%s%r" % (self._indent(), self._text(node.content)) 
     872        if self._inattr: 
     873            yield astyle.style_default(self._indent(), s4attrvalue(repr(self._text(node.content)))) 
     874        else: 
     875            yield astyle.style_default(self._indent(), s4text(repr(self._text(node.content)))) 
    847876 
    848877    def presentEntity(self, node): 
    849         yield "%s%s.%s()" % (self._indent(), node.__module__, node.__fullname__()) 
     878        name = s4entity(s4ns(node.__class__.__module__), ".", s4entityname(node.__fullname__())) 
     879        yield astyle.style_default(self._indent, name, "()") 
    850880 
    851881    def presentProcInst(self, node): 
     
    853883 
    854884    def presentComment(self, node): 
    855         yield "%sxsc.Comment(%r)" % (self._indent(), self._text(node.content)) 
     885        yield astyle.style_default(self._indent(), s4comment("xsc.Comment"), "(", s4commenttext(repr(self._text(node.content))), ")") 
    856886 
    857887    def presentDocType(self, node):