...

Source file src/github.com/alecthomas/chroma/v2/lexers/cheetah.go

Documentation: github.com/alecthomas/chroma/v2/lexers

     1  package lexers
     2  
     3  import (
     4  	. "github.com/alecthomas/chroma/v2" // nolint
     5  )
     6  
     7  // Cheetah lexer.
     8  var Cheetah = Register(MustNewLexer(
     9  	&Config{
    10  		Name:      "Cheetah",
    11  		Aliases:   []string{"cheetah", "spitfire"},
    12  		Filenames: []string{"*.tmpl", "*.spt"},
    13  		MimeTypes: []string{"application/x-cheetah", "application/x-spitfire"},
    14  	},
    15  	cheetahRules,
    16  ))
    17  
    18  func cheetahRules() Rules {
    19  	return Rules{
    20  		"root": {
    21  			{`(##[^\n]*)$`, ByGroups(Comment), nil},
    22  			{`#[*](.|\n)*?[*]#`, Comment, nil},
    23  			{`#end[^#\n]*(?:#|$)`, CommentPreproc, nil},
    24  			{`#slurp$`, CommentPreproc, nil},
    25  			{`(#[a-zA-Z]+)([^#\n]*)(#|$)`, ByGroups(CommentPreproc, Using("Python"), CommentPreproc), nil},
    26  			{`(\$)([a-zA-Z_][\w.]*\w)`, ByGroups(CommentPreproc, Using("Python")), nil},
    27  			{`(\$\{!?)(.*?)(\})(?s)`, ByGroups(CommentPreproc, Using("Python"), CommentPreproc), nil},
    28  			{`(?sx)
    29                  (.+?)               # anything, followed by:
    30                  (?:
    31                   (?=\#[#a-zA-Z]*) | # an eval comment
    32                   (?=\$[a-zA-Z_{]) | # a substitution
    33                   \Z                 # end of string
    34                  )
    35              `, Other, nil},
    36  			{`\s+`, Text, nil},
    37  		},
    38  	}
    39  }
    40  

View as plain text