mte/unikernel/duniverse/dune_/doc/exts/cram_lexer.py

25 lines
726 B
Python
Raw Normal View History

2025-11-11 02:07:51 +01:00
from pygments.lexer import DelegatingLexer, RegexLexer, bygroups, default
from pygments.lexers.shell import BashLexer
from pygments.token import Generic, Other, Comment
class CramBaseLexer(RegexLexer):
tokens = {
"root": [
(r"( \$ )(.*\n)", bygroups(Generic.Prompt, Other.Code), "continuations"),
(r"^ .*\n", Generic.Output),
(r"^.*\n", Comment.Multiline),
],
"continuations": [
(r"( > )(.*\n)", bygroups(Generic.Prompt, Other.Code)),
default("#pop"),
],
}
class CramLexer(DelegatingLexer):
name = "cram"
def __init__(self, **options):
super().__init__(BashLexer, CramBaseLexer, Other.Code, **options)