1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#!/usr/bin/env python
"""
An example of a custom lexer that prints the input text in random colors.
"""
from prompt_toolkit.lexers import Lexer
from prompt_toolkit.shortcuts import prompt
from prompt_toolkit.styles.named_colors import NAMED_COLORS
class RainbowLexer(Lexer):
def lex_document(self, document):
colors = sorted(NAMED_COLORS, key=NAMED_COLORS.get)
def get_line(lineno):
return [
(colors[i % len(colors)], c)
for i, c in enumerate(document.lines[lineno])
]
return get_line
def main():
answer = prompt("Give me some input: ", lexer=RainbowLexer())
print(f"You said: {answer}")
if __name__ == "__main__":
main()
|