...

Source file src/github.com/alecthomas/chroma/lexers/d/docker.go

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

     1  package d
     2  
     3  import (
     4  	. "github.com/alecthomas/chroma" // nolint
     5  	"github.com/alecthomas/chroma/lexers/b"
     6  	"github.com/alecthomas/chroma/lexers/internal"
     7  	"github.com/alecthomas/chroma/lexers/j"
     8  )
     9  
    10  // Docker lexer.
    11  var Docker = internal.Register(MustNewLazyLexer(
    12  	&Config{
    13  		Name:            "Docker",
    14  		Aliases:         []string{"docker", "dockerfile"},
    15  		Filenames:       []string{"Dockerfile", "*.docker"},
    16  		MimeTypes:       []string{"text/x-dockerfile-config"},
    17  		CaseInsensitive: true,
    18  	},
    19  	dockerRules,
    20  ))
    21  
    22  func dockerRules() Rules {
    23  	return Rules{
    24  		"root": {
    25  			{`#.*`, Comment, nil},
    26  			{`(ONBUILD)((?:\s*\\?\s*))`, ByGroups(Keyword, Using(b.Bash)), nil},
    27  			{`(HEALTHCHECK)(((?:\s*\\?\s*)--\w+=\w+(?:\s*\\?\s*))*)`, ByGroups(Keyword, Using(b.Bash)), nil},
    28  			{`(VOLUME|ENTRYPOINT|CMD|SHELL)((?:\s*\\?\s*))(\[.*?\])`, ByGroups(Keyword, Using(b.Bash), Using(j.JSON)), nil},
    29  			{`(LABEL|ENV|ARG)((?:(?:\s*\\?\s*)\w+=\w+(?:\s*\\?\s*))*)`, ByGroups(Keyword, Using(b.Bash)), nil},
    30  			{`((?:FROM|MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)|VOLUME)\b(.*)`, ByGroups(Keyword, LiteralString), nil},
    31  			{`((?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY))`, Keyword, nil},
    32  			{`(.*\\\n)*.+`, Using(b.Bash), nil},
    33  		},
    34  	}
    35  }
    36  

View as plain text