|
- package g
-
- import (
- . "github.com/alecthomas/chroma" // nolint
- "github.com/alecthomas/chroma/lexers/internal"
- )
-
- // Groff lexer.
- var Groff = internal.Register(MustNewLazyLexer(
- &Config{
- Name: "Groff",
- Aliases: []string{"groff", "nroff", "man"},
- Filenames: []string{"*.[1-9]", "*.1p", "*.3pm", "*.man"},
- MimeTypes: []string{"application/x-troff", "text/troff"},
- },
- func() Rules {
- return Rules{
- "root": {
- {`(\.)(\w+)`, ByGroups(Text, Keyword), Push("request")},
- {`\.`, Punctuation, Push("request")},
- {`[^\\\n]+`, Text, Push("textline")},
- Default(Push("textline")),
- },
- "textline": {
- Include("escapes"),
- {`[^\\\n]+`, Text, nil},
- {`\n`, Text, Pop(1)},
- },
- "escapes": {
- {`\\"[^\n]*`, Comment, nil},
- {`\\[fn]\w`, LiteralStringEscape, nil},
- {`\\\(.{2}`, LiteralStringEscape, nil},
- {`\\.\[.*\]`, LiteralStringEscape, nil},
- {`\\.`, LiteralStringEscape, nil},
- {`\\\n`, Text, Push("request")},
- },
- "request": {
- {`\n`, Text, Pop(1)},
- Include("escapes"),
- {`"[^\n"]+"`, LiteralStringDouble, nil},
- {`\d+`, LiteralNumber, nil},
- {`\S+`, LiteralString, nil},
- {`\s+`, Text, nil},
- },
- }
- },
- ))
|