30 lines
759 B
Python
30 lines
759 B
Python
from typing import TYPE_CHECKING, List, Tuple
|
|
|
|
from prompt_toolkit.styles.pygments import pygments_token_to_classname
|
|
|
|
from .base import StyleAndTextTuples
|
|
|
|
if TYPE_CHECKING:
|
|
from pygments.token import Token
|
|
|
|
__all__ = [
|
|
"PygmentsTokens",
|
|
]
|
|
|
|
|
|
class PygmentsTokens:
|
|
"""
|
|
Turn a pygments token list into a list of prompt_toolkit text fragments
|
|
(``(style_str, text)`` tuples).
|
|
"""
|
|
|
|
def __init__(self, token_list: List[Tuple["Token", str]]) -> None:
|
|
self.token_list = token_list
|
|
|
|
def __pt_formatted_text__(self) -> StyleAndTextTuples:
|
|
result: StyleAndTextTuples = []
|
|
|
|
for token, text in self.token_list:
|
|
result.append(("class:" + pygments_token_to_classname(token), text))
|
|
|
|
return result
|