def trem_to_markup(text): style = "trem 7" markup = list() cursor = 0 start = 0 while True: caret = text.find("^", cursor) cursor = caret + 1 end = caret if caret != -1 else None markup.append((style, text[start:end])) if caret == -1: break if caret + 1 < len(text): cc = text[caret + 1] # Two carets turn into a literal caret if cc == "^": start = cursor cursor += 1 continue else: style = "trem " + cc start = cursor + 1 return markup # FIXME: fill in the low-color mode colors (columns 2 and 3) trem_palette = [ ("trem 0", "white", "black", None, "#000000", "black"), # black ("trem 1", "white", "black", None, "#ff0000", "black"), # red ("trem 2", "white", "black", None, "#00ff00", "black"), # green ("trem 3", "white", "black", None, "#ffff00", "black"), # yellow ("trem 4", "white", "black", None, "#0000ff", "black"), # blue ("trem 5", "white", "black", None, "#00ffff", "black"), # cyan ("trem 6", "white", "black", None, "#ff00ff", "black"), # magenta ("trem 7", "white", "black", None, "#ffffff", "black"), # white ("trem 8", "white", "black", None, "#808080", "black"), # gray ("trem 9", "white", "black", None, "#ffae00", "black"), # orange ("trem a", "white", "black", None, "#fdab9a", "black"), # rose bud ("trem b", "white", "black", None, "#97fa97", "black"), # pale green ("trem c", "white", "black", None, "#ede8aa", "black"), # pale golden ("trem d", "white", "black", None, "#9bddff", "black"), # columbia blue ("trem e", "white", "black", None, "#aeeded", "black"), # pale turquoise ("trem f", "white", "black", None, "#db6f92", "black"), # pale violet red ("trem g", "white", "black", None, "#e8e4dc", "black"), # palace pale white ("trem h", "white", "black", None, "#3a3b36", "black"), # olive ("trem i", "white", "black", None, "#ff6246", "black"), # tomato ("trem j", "white", "black", None, "#beff00", "black"), # lime ("trem k", "white", "black", None, "#fff700", "black"), # lemon ("trem l", "white", "black", None, "#4f85f7", "black"), # blue berry ("trem m", "white", "black", None, "#40dfd0", "black"), # turquoise ("trem n", "white", "black", None, "#fc5b78", "black"), # wild watermelon ("trem o", "white", "black", None, "#edf3e4", "black"), # saltpan ("trem p", "white", "black", None, "#9fa2a7", "black"), # gray chateau ("trem q", "white", "black", None, "#b7410e", "black"), # rust ("trem r", "white", "black", None, "#6d8d70", "black"), # copper green ("trem s", "white", "black", None, "#ffd600", "black"), # gold ("trem t", "white", "black", None, "#4682b4", "black"), # steel blue ("trem u", "white", "black", None, "#7a9094", "black"), # steel gray ("trem v", "white", "black", None, "#cd7e31", "black"), # bronze ("trem w", "white", "black", None, "#c0c0c0", "black"), # silver ("trem x", "white", "black", None, "#a9a9a9", "black"), # dark gray ("trem y", "white", "black", None, "#ff8b00", "black"), # dark orange ("trem z", "white", "black", None, "#006300", "black"), # dark green ("trem A", "white", "black", None, "#ff3e34", "black"), # red orange ("trem B", "white", "black", None, "#218a21", "black"), # forest green ("trem C", "white", "black", None, "#ecbc2c", "black"), # bright sun ("trem D", "white", "black", None, "#7a68ed", "black"), # medium slate blue ("trem E", "white", "black", None, "#b1ffff", "black"), # celeste ("trem F", "white", "black", None, "#855040", "black"), # ironstone ("trem G", "white", "black", None, "#dbd6d2", "black"), # timberwolf ("trem H", "white", "black", None, "#0f0f0f", "black"), # onyx ("trem I", "white", "black", None, "#64000a", "black"), # rosewood ("trem J", "white", "black", None, "#7a785a", "black"), # kokoda ("trem K", "white", "black", None, "#df9d5b", "black"), # porsche ("trem L", "white", "black", None, "#355e4f", "black"), # cloud burst ("trem M", "white", "black", None, "#35514f", "black"), # blue diane ("trem N", "white", "black", None, "#8e583b", "black"), # rope ("trem O", "white", "black", None, "#f9efbd", "black"), # blonde ("trem P", "white", "black", None, "#100b07", "black"), # smokey black ("trem Q", "white", "black", None, "#ff033d", "black"), # american rose ("trem R", "white", "black", None, "#39ff13", "black"), # neon green ("trem S", "white", "black", None, "#f9ec27", "black"), # neon yellow ("trem T", "white", "black", None, "#12098f", "black"), # ultramarine ("trem U", "white", "black", None, "#00ffee", "black"), # turquoise blue ("trem V", "white", "black", None, "#8a008a", "black"), # dark magenta ("trem W", "white", "black", None, "#aaefd1", "black"), # magic mint ("trem X", "white", "black", None, "#d2d2d2", "black"), # light gray ("trem Y", "white", "black", None, "#ff9999", "black"), # light salmon ("trem Z", "white", "black", None, "#90ed90", "black"), # light green ]