@@ -570,6 +570,7 @@ def __init__(self):
570570
571571 # [x, y, char, color, bg_color], ...
572572 # colors are in #000000 format or None
573+ # char is None for the end of line
573574 self .data = []
574575
575576 self ._colors = {
@@ -622,6 +623,7 @@ def parse(self):
622623 self .data = []
623624
624625 for y , line in enumerate (lines ):
626+ x = 0
625627 for x , char in enumerate (line ):
626628 color = None
627629 bg_color = None
@@ -632,6 +634,39 @@ def parse(self):
632634 bg_color = self ._bg_colors .get (m )
633635
634636 self .data .append ([x , y , char , color , bg_color ])
637+ # end of line
638+ self .data .append ([x , y , None , None , None ])
639+
640+ def render_html (self , colorize = True ):
641+
642+ prev_color = None
643+ prev_bg = None
644+
645+ for x , y , char , color , bg_color in self .data :
646+ if char == None : # end of line
647+ if colorize :
648+ if prev_color != None :
649+ sys .stdout .write ("</span>" )
650+ prev_color = None
651+ sys .stdout .write ("\n " )
652+ else :
653+ if colorize :
654+ if color != prev_color :
655+ if prev_color != None :
656+ sys .stdout .write ("</span>" )
657+ if color != None :
658+ sys .stdout .write ("<span style=\" color: %s\" >" % color )
659+ prev_color = color
660+
661+ if char == '<' :
662+ sys .stdout .write ("<" )
663+ elif char == '>' :
664+ sys .stdout .write (">" )
665+ elif char == '&' :
666+ sys .stdout .write ("&" )
667+ else :
668+ sys .stdout .write (char )
669+
635670
636671 def apply_mask (self ):
637672
0 commit comments