Changeset 6907


Ignore:
Timestamp:
28/05/10 16:09:10 (9 years ago)
Author:
astephen
Message:

mucking about with colouring the xml rendering neatly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cows_wps/trunk/cows_wps/controllers/jobviewer.py

    r6905 r6907  
    112112    def _htmlifyXML(self, xml): 
    113113        "Returns html string that will make XML look ok on HTML page." 
    114         xml = xml.replace("<", "&lt;").replace(">", "&gt;").replace("\n", "<br>") 
    115         return xml 
     114        xml1 = xml.replace("<", "&lt;").replace(">", "&gt;").replace("\n", "<br>") 
     115 
     116        def retag(x): return x.replace("<", "&lt;").replace(">", "&gt;") 
     117 
     118        open_and_close = re.compile("^<([^/]+?)>.*?</\1>$") 
     119        open = re.compile("^<([^/]+)>$") 
     120        close = re.compile("^</(.+?)>$") 
     121        empty = re.compile("^<(.+?)/>$") 
     122        bad = re.compile("^</(.+?)>\s*<([^/]+)>$") 
     123 
     124        lines = [i.strip() for i in xml.split("\n")] 
     125 
     126        spant = '%s<span style="color: #%s;">%s</span><br>' 
     127        x = "" 
     128        pad = 0 
     129        pc = "&nbsp;" * 4 
     130 
     131        for line in lines: 
     132 
     133            colour = pad * 20000  
     134            col = ("000000" + hex(colour).split("x")[-1])[-6:] 
     135            line2 = retag(line) 
     136 
     137            open_and_close_m = open_and_close.match(line) 
     138            open_m = open.match(line)  
     139            close_m = close.match(line) 
     140            empty_m = empty.match(line) 
     141            bad_m = bad.match(line) 
     142 
     143            if line == lines[0]: 
     144                line = spant % (pc * pad, "0000ff", line2) 
     145                pad += 1 
     146            elif bad_m: 
     147                (first, second) = bad_m.groups()[:2] 
     148                pad -= 1 
     149                line1 = spant % (pc * pad, "%s" % col, "&lt;/%s&gt;" % first) 
     150                line2 = spant % (pc * pad, "%s" % col, "&lt;%s&gt;" % second) 
     151                line = line1 + line2 
     152                pad += 1 
     153            elif open_m: 
     154                line = spant % (pc * pad, "%s" % col, line2)  
     155                pad += 1 
     156            elif close_m: 
     157                pad -= 1 
     158                line = spant % (pc * pad, "%s" % col, line2) 
     159            elif open_and_close_m: 
     160                line = spant % (pc * pad, "%s" % col, line2) 
     161            elif empty_m: 
     162                line = spant % (pc * pad, "%s" % col, line2) 
     163            else: 
     164                line = spant % (pc * pad, "0000ff", line2) 
     165 
     166            x += line 
     167 
     168        return x 
    116169 
    117170 
Note: See TracChangeset for help on using the changeset viewer.