feat(languages): register tier-1 languages and chroma routing
This commit is contained in:
@@ -27,9 +27,14 @@ type LineChange struct {
|
||||
func resolveLexer(filename string) chroma.Lexer {
|
||||
ext := strings.TrimPrefix(strings.ToLower(filepath.Ext(filename)), ".")
|
||||
var l chroma.Lexer
|
||||
if ext == "less" || ext == "sass" {
|
||||
switch ext {
|
||||
case "less", "sass":
|
||||
l = lexers.Get("SCSS")
|
||||
} else {
|
||||
case "tfvars":
|
||||
l = lexers.Get("Terraform")
|
||||
case "cljs", "cljc":
|
||||
l = lexers.Get("Clojure")
|
||||
default:
|
||||
l = lexers.Match("f." + ext)
|
||||
}
|
||||
if l == nil {
|
||||
|
||||
@@ -21,6 +21,24 @@ func TestResolveLexer(t *testing.T) {
|
||||
{"a.less", "SCSS"},
|
||||
{"a.sass", "SCSS"},
|
||||
{"a.conf", ""},
|
||||
{"a.tf", "Terraform"},
|
||||
{"a.hcl", "HCL"},
|
||||
{"a.tfvars", "Terraform"},
|
||||
{"a.sol", "Solidity"},
|
||||
{"a.zig", "Zig"},
|
||||
{"a.ex", "Elixir"},
|
||||
{"a.exs", "Elixir"},
|
||||
{"a.nix", "Nix"},
|
||||
{"a.proto", "Protocol Buffer"},
|
||||
{"a.graphql", "GraphQL"},
|
||||
{"a.graphqls", "GraphQL"},
|
||||
{"a.ml", "OCaml"},
|
||||
{"a.mli", "OCaml"},
|
||||
{"a.hs", "Haskell"},
|
||||
{"a.clj", "Clojure"},
|
||||
{"a.edn", "Clojure"},
|
||||
{"a.cljs", "Clojure"},
|
||||
{"a.cljc", "Clojure"},
|
||||
}
|
||||
for _, c := range cases {
|
||||
l := resolveLexer(c.file)
|
||||
|
||||
@@ -63,6 +63,28 @@ var languageMap = map[string]types.Language{
|
||||
|
||||
"dockerfile": {LineComment: "#"},
|
||||
"makefile": {LineComment: "#"},
|
||||
|
||||
"tf": {LineComment: "#", AlternateLineComment: "//", BlockComment: &types.BlockComment{Start: "/*", End: "*/"}},
|
||||
"hcl": {LineComment: "#", AlternateLineComment: "//", BlockComment: &types.BlockComment{Start: "/*", End: "*/"}},
|
||||
"tfvars": {LineComment: "#", AlternateLineComment: "//", BlockComment: &types.BlockComment{Start: "/*", End: "*/"}},
|
||||
"sol": {LineComment: "//", BlockComment: &types.BlockComment{Start: "/*", End: "*/"}},
|
||||
"zig": {LineComment: "//"},
|
||||
"ex": {LineComment: "#"},
|
||||
"exs": {LineComment: "#"},
|
||||
"nix": {LineComment: "#", BlockComment: &types.BlockComment{Start: "/*", End: "*/"}},
|
||||
"proto": {LineComment: "//", BlockComment: &types.BlockComment{Start: "/*", End: "*/"}},
|
||||
|
||||
"graphql": {LineComment: "#"},
|
||||
"graphqls": {LineComment: "#"},
|
||||
|
||||
"ml": {BlockComment: &types.BlockComment{Start: "(*", End: "*)"}},
|
||||
"mli": {BlockComment: &types.BlockComment{Start: "(*", End: "*)"}},
|
||||
"hs": {LineComment: "--", BlockComment: &types.BlockComment{Start: "{-", End: "-}"}},
|
||||
|
||||
"clj": {LineComment: ";"},
|
||||
"cljs": {LineComment: ";"},
|
||||
"cljc": {LineComment: ";"},
|
||||
"edn": {LineComment: ";"},
|
||||
}
|
||||
|
||||
func DetectLanguage(filename string) (types.Language, error) {
|
||||
@@ -138,6 +160,25 @@ func GetLanguageName(filename string) string {
|
||||
|
||||
"dockerfile": "Dockerfile",
|
||||
"makefile": "Makefile",
|
||||
|
||||
"tf": "Terraform",
|
||||
"hcl": "HCL",
|
||||
"tfvars": "Terraform",
|
||||
"sol": "Solidity",
|
||||
"zig": "Zig",
|
||||
"ex": "Elixir",
|
||||
"exs": "Elixir",
|
||||
"nix": "Nix",
|
||||
"proto": "Protocol Buffer",
|
||||
"graphql": "GraphQL",
|
||||
"graphqls": "GraphQL",
|
||||
"ml": "OCaml",
|
||||
"mli": "OCaml",
|
||||
"hs": "Haskell",
|
||||
"clj": "Clojure",
|
||||
"cljs": "ClojureScript",
|
||||
"cljc": "Clojure",
|
||||
"edn": "EDN",
|
||||
}
|
||||
|
||||
if name, ok := names[ext]; ok {
|
||||
|
||||
Reference in New Issue
Block a user