Files
cheat/vendor/github.com/alecthomas/chroma/v2/lexers/markless.go
Christopher Allen Lane 2a19755804 chore: modernize CI and update Go toolchain
- Bump Go from 1.19 to 1.26 and update all dependencies
- Rewrite CI workflow with matrix strategy (Linux, macOS, Windows)
- Update GitHub Actions to current versions (checkout@v4, setup-go@v5)
- Update CodeQL actions from v1 to v3
- Fix cross-platform bug in mock/path.go (path.Join -> filepath.Join)
- Clean up dependabot config (weekly schedule, remove stale ignore)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:58:51 -05:00

169 lines
6.0 KiB
Go

package lexers
import (
. "github.com/alecthomas/chroma/v2" // nolint
)
// Markless lexer.
var Markless = Register(MustNewLexer(
&Config{
Name: "Markless",
Aliases: []string{"mess"},
Filenames: []string{"*.mess", "*.markless"},
MimeTypes: []string{"text/x-markless"},
},
marklessRules,
))
func marklessRules() Rules {
return Rules{
"root": {
Include("block"),
},
// Block directives
"block": {
Include("header"),
Include("ordered-list"),
Include("unordered-list"),
Include("code-block"),
Include("blockquote"),
Include("blockquote-header"),
Include("align"),
Include("comment"),
Include("instruction"),
Include("embed"),
Include("footnote"),
Include("horizontal-rule"),
Include("paragraph"),
},
"header": {
{`(# )(.*)$`, ByGroups(Keyword, GenericHeading), Push("inline")},
{`(##+)(.*)$`, ByGroups(Keyword, GenericSubheading), Push("inline")},
},
"ordered-list": {
{`([0-9]+\.)`, Keyword, nil},
},
"unordered-list": {
{`(- )`, Keyword, nil},
},
"code-block": {
{`(::+)( *)(\w*)([^\n]*)(\n)([\w\W]*?)(^\1$)`, UsingByGroup(3, 6, Keyword, TextWhitespace, NameFunction, String, TextWhitespace, Text, Keyword), nil},
},
"blockquote": {
{`(\| )(.*)$`, ByGroups(Keyword, GenericInserted), nil},
},
"blockquote-header": {
{`(~ )([^|\n]+)(\| )(.*?\n)`, ByGroups(Keyword, NameEntity, Keyword, GenericInserted), Push("inline-blockquote")},
{`(~ )(.*)$`, ByGroups(Keyword, NameEntity), nil},
},
"inline-blockquote": {
{`^( +)(\| )(.*$)`, ByGroups(TextWhitespace, Keyword, GenericInserted), nil},
Default(Pop(1)),
},
"align": {
{`(\|\|)|(\|<)|(\|>)|(><)`, Keyword, nil},
},
"comment": {
{`(;[; ]).*?$`, CommentSingle, nil},
},
"instruction": {
{`(! )([^ ]+)(.+?)$`, ByGroups(Keyword, NameFunction, NameVariable), nil},
},
"embed": {
{`(\[ )([^ ]+)( )([^,]+)`, ByGroups(Keyword, NameFunction, TextWhitespace, String), Push("embed-options")},
},
"embed-options": {
{`\\.`, Text, nil},
{`,`, Punctuation, nil},
{`\]?$`, Keyword, Pop(1)},
// Generic key or key/value pair
{`( *)([^, \]]+)([^,\]]+)?`, ByGroups(TextWhitespace, NameFunction, String), nil},
{`.`, Text, nil},
},
"footnote": {
{`(\[)([0-9]+)(\])`, ByGroups(Keyword, NameVariable, Keyword), Push("inline")},
},
"horizontal-rule": {
{`(==+)$`, LiteralOther, nil},
},
"paragraph": {
{` *`, TextWhitespace, Push("inline")},
},
// Inline directives
"inline": {
Include("escapes"),
Include("dashes"),
Include("newline"),
Include("italic"),
Include("underline"),
Include("bold"),
Include("strikethrough"),
Include("code"),
Include("compound"),
Include("footnote-reference"),
Include("subtext"),
Include("subtext"),
Include("url"),
{`.`, Text, nil},
{`\n`, TextWhitespace, Pop(1)},
},
"escapes": {
{`\\.`, Text, nil},
},
"dashes": {
{`-{2,3}`, TextPunctuation, nil},
},
"newline": {
{`-/-`, TextWhitespace, nil},
},
"italic": {
{`(//)(.*?)(\1)`, ByGroups(Keyword, GenericEmph, Keyword), nil},
},
"underline": {
{`(__)(.*?)(\1)`, ByGroups(Keyword, GenericUnderline, Keyword), nil},
},
"bold": {
{`(\*\*)(.*?)(\1)`, ByGroups(Keyword, GenericStrong, Keyword), nil},
},
"strikethrough": {
{`(<-)(.*?)(->)`, ByGroups(Keyword, GenericDeleted, Keyword), nil},
},
"code": {
{"(``+)(.*?)(\\1)", ByGroups(Keyword, LiteralStringBacktick, Keyword), nil},
},
"compound": {
{`(''+)(.*?)(''\()`, ByGroups(Keyword, UsingSelf("inline"), Keyword), Push("compound-options")},
},
"compound-options": {
{`\\.`, Text, nil},
{`,`, Punctuation, nil},
{`\)`, Keyword, Pop(1)},
// Hex Color
{` *#[0-9A-Fa-f]{3,6} *`, LiteralNumberHex, nil},
// Named Color
{` *(indian-red|light-coral|salmon|dark-salmon|light-salmon|crimson|red|firebrick|dark-red|pink|light-pink|hot-pink|deep-pink|medium-violet-red|pale-violet-red|coral|tomato|orange-red|dark-orange|orange|gold|yellow|light-yellow|lemon-chiffon|light-goldenrod-yellow|papayawhip|moccasin|peachpuff|pale-goldenrod|khaki|dark-khaki|lavender|thistle|plum|violet|orchid|fuchsia|magenta|medium-orchid|medium-purple|rebecca-purple|blue-violet|dark-violet|dark-orchid|dark-magenta|purple|indigo|slate-blue|dark-slate-blue|medium-slate-blue|green-yellow|chartreuse|lawn-green|lime|lime-green|pale-green|light-green|medium-spring-green|spring-green|medium-sea-green|sea-green|forest-green|green|dark-green|yellow-green|olive-drab|olive|dark-olive-green|medium-aquamarine|dark-sea-green|light-sea-green|dark-cyan|teal|aqua|cyan|light-cyan|pale-turquoise|aquamarine|turquoise|medium-turquoise|dark-turquoise|cadet-blue|steel-blue|light-steel-blue|powder-blue|light-blue|sky-blue|light-sky-blue|deep-sky-blue|dodger-blue|cornflower-blue|royal-blue|blue|medium-blue|dark-blue|navy|midnight-blue|cornsilk|blanched-almond|bisque|navajo-white|wheat|burlywood|tan|rosy-brown|sandy-brown|goldenrod|dark-goldenrod|peru|chocolate|saddle-brown|sienna|brown|maroon|white|snow|honeydew|mintcream|azure|alice-blue|ghost-white|white-smoke|seashell|beige|oldlace|floral-white|ivory|antique-white|linen|lavenderblush|mistyrose|gainsboro|light-gray|silver|dark-gray|gray|dim-gray|light-slate-gray|slate-gray|dark-slate-gray) *`, LiteralOther, nil},
// Named size
{` *(microscopic|tiny|small|normal|big|large|huge|gigantic) *`, NameTag, nil},
// Options
{` *(bold|italic|underline|strikethrough|subtext|supertext|spoiler) *`, NameBuiltin, nil},
// URL. Note the missing ) and , in the match.
{` *\w[-\w+.]*://[\w$\-_.+!*'(&/:;=?@z%#\\]+ *`, String, nil},
// Generic key or key/value pair
{`( *)([^, )]+)( [^,)]+)?`, ByGroups(TextWhitespace, NameFunction, String), nil},
{`.`, Text, nil},
},
"footnote-reference": {
{`(\[)([0-9]+)(\])`, ByGroups(Keyword, NameVariable, Keyword), nil},
},
"subtext": {
{`(v\()(.*?)(\))`, ByGroups(Keyword, UsingSelf("inline"), Keyword), nil},
},
"supertext": {
{`(\^\()(.*?)(\))`, ByGroups(Keyword, UsingSelf("inline"), Keyword), nil},
},
"url": {
{`\w[-\w+.]*://[\w\$\-_.+!*'()&,/:;=?@z%#\\]+`, String, nil},
},
}
}