def plain_text(text: str) -> str: chars = [] raw_chars = list(reversed(validator.fix_one_line_text(caret_decode(text)))) while len(raw_chars): char = raw_chars.pop() if char == '%': # special characters if len(raw_chars) and raw_chars[-1] == '%': raw_chars.pop() # discard next '%' if len(raw_chars): special_char = raw_chars.pop() # replace or discard formatting code chars.append(SPECIAL_CHARS_ENCODING.get(special_char, '')) else: # char is just a single '%' chars.append(char) else: # char is what it is, a character chars.append(char) return "".join(chars)
def test_caret_decode(): assert caret_decode('') == '' assert caret_decode('^') == '^' # no match assert caret_decode('^ ') == '^' assert caret_decode('abc') == 'abc' assert caret_decode('ab\\Pc') == 'ab\\Pc' assert caret_decode('1^J\\P2') == '1\n\\P2' assert caret_decode('1^J2') == '1\n2' assert caret_decode('1^M2') == '1\r2' assert caret_decode('1^M^J2') == '1\r\n2' assert caret_decode('1^J^M2') == '1\n\r2' assert caret_decode('abc^ def') == 'abc^def' assert caret_decode('abc^Idef') == 'abc\tdef' assert caret_decode('abc^adef') == 'abc!def' assert caret_decode('abc^ddef') == 'abc$def' assert caret_decode('abc^zdef') == 'abc:def' assert caret_decode('abc^@def') == 'abc\0def' assert caret_decode('abc^^def') == 'abc\x1edef'