@@ -337,11 +337,14 @@ def __str__(self) -> str:
337337 scales = sorted (styles .keys (), key = lambda x : x [0 ])
338338 left = scales [0 ][0 ]
339339 result .append (text [:left ])
340+ right = scales [0 ][1 ]
340341 for scale in scales :
342+ if scale [0 ] > right :
343+ result .append (text [right : scale [0 ]])
344+ right = scale [1 ]
341345 prefix = "" .join (f"<{ style } >" for style in styles [scale ])
342346 suffix = "" .join (f"</{ style } >" for style in reversed (styles [scale ]))
343347 result .append (prefix + text [scale [0 ] : scale [1 ]] + suffix )
344- right = scales [- 1 ][1 ]
345348 result .append (text [right :])
346349 text = "" .join (result )
347350 pat = re .compile (r"</(\w+)(?<!/p)><\1>" )
@@ -359,11 +362,15 @@ def __rich__(self):
359362 scales = sorted (styles .keys (), key = lambda x : x [0 ])
360363 left = scales [0 ][0 ]
361364 result .append (text [:left ])
365+ right = scales [0 ][1 ]
362366 for scale in scales :
367+ if scale [0 ] > right :
368+ result .append ("\033 [0m" )
369+ result .append (text [right : scale [0 ]])
370+ right = scale [1 ]
363371 prefix = ";" .join (f"{ STYLE_TYPE_MAP [style ]} " for style in styles [scale ])
364372 result .append (f"\033 [{ prefix } m{ text [scale [0 ] : scale [1 ]]} " )
365373 result .append ("\033 [0m" )
366- right = scales [- 1 ][1 ]
367374 result .append (text [right :])
368375 return "" .join (result )
369376
@@ -390,10 +397,13 @@ def style_split(self):
390397 left = scales [0 ][0 ]
391398 if left > 0 :
392399 result .append (Text (text [:left ]))
400+ right = scales [0 ][1 ]
393401 for scale in scales :
402+ if scale [0 ] > right :
403+ result .append (Text (text [right : scale [0 ]]))
394404 result .append (Text (text [scale [0 ] : scale [1 ]], {(scale [0 ] - left , scale [1 ] - left ): styles [scale ]}))
395405 left = scale [0 ]
396- right = scales [ - 1 ] [1 ]
406+ right = scale [1 ]
397407 if right < len (text ):
398408 result .append (Text (text [right :]))
399409 return result
0 commit comments