chroma-markdown/vendor/github.com/alecthomas/chroma/v2/lexers/markdown.go

48 lines
1.6 KiB
Go
Raw Normal View History

2023-11-26 06:32:49 +01:00
package lexers
2017-10-22 05:37:38 +02:00
import (
2023-11-26 06:32:49 +01:00
. "github.com/alecthomas/chroma/v2" // nolint
2017-10-22 05:37:38 +02:00
)
// Markdown lexer.
2023-11-26 06:32:49 +01:00
var Markdown = Register(DelegatingLexer(HTML, MustNewLexer(
2017-10-22 05:37:38 +02:00
&Config{
Name: "markdown",
2018-01-06 23:02:24 +01:00
Aliases: []string{"md", "mkd"},
Filenames: []string{"*.md", "*.mkd", "*.markdown"},
2017-10-22 05:37:38 +02:00
MimeTypes: []string{"text/x-markdown"},
},
markdownRules,
)))
func markdownRules() Rules {
return Rules{
2017-10-22 05:37:38 +02:00
"root": {
2019-07-01 05:14:09 +02:00
{`^(#[^#].+\n)`, ByGroups(GenericHeading), nil},
{`^(#{2,6}.+\n)`, ByGroups(GenericSubheading), nil},
2017-10-22 05:37:38 +02:00
{`^(\s*)([*-] )(\[[ xX]\])( .+\n)`, ByGroups(Text, Keyword, Keyword, UsingSelf("inline")), nil},
{`^(\s*)([*-])(\s)(.+\n)`, ByGroups(Text, Keyword, Text, UsingSelf("inline")), nil},
{`^(\s*)([0-9]+\.)( .+\n)`, ByGroups(Text, Keyword, UsingSelf("inline")), nil},
{`^(\s*>\s)(.+\n)`, ByGroups(Keyword, GenericEmph), nil},
{"^(```\\n)([\\w\\W]*?)(^```$)", ByGroups(String, Text, String), nil},
{
"^(```)(\\w+)(\\n)([\\w\\W]*?)(^```$)",
2023-11-26 06:32:49 +01:00
UsingByGroup(2, 4, String, String, String, Text, String),
nil,
},
2017-10-22 05:37:38 +02:00
Include("inline"),
},
"inline": {
{`\\.`, Text, nil},
{`(\s)(\*|_)((?:(?!\2).)*)(\2)((?=\W|\n))`, ByGroups(Text, GenericEmph, GenericEmph, GenericEmph, Text), nil},
2019-07-01 05:14:09 +02:00
{`(\s)((\*\*|__).*?)\3((?=\W|\n))`, ByGroups(Text, GenericStrong, GenericStrong, Text), nil},
2017-10-22 05:37:38 +02:00
{`(\s)(~~[^~]+~~)((?=\W|\n))`, ByGroups(Text, GenericDeleted, Text), nil},
{"`[^`]+`", LiteralStringBacktick, nil},
{`[@#][\w/:]+`, NameEntity, nil},
{`(!?\[)([^]]+)(\])(\()([^)]+)(\))`, ByGroups(Text, NameTag, Text, Text, NameAttribute, Text), nil},
{`[^\\\s]+`, Other, nil},
{`.|\n`, Other, nil},
2017-10-22 05:37:38 +02:00
},
}
}