mirror of
https://github.com/ralsina/tartrazine.git
synced 2024-11-10 13:32:24 +00:00
b248b21349
As discussed in https://github.com/go-enry/go-enry/issues/54, this provides an API for accessing a LanguageInfo struct which is populated with all the data from the Linguist YAML source file. Functions are provided to access the LanguageInfo by name or ID. The other top-level functions like GetLanguageExtensions, GetLanguageGroup, etc. could in principle be implemented using this structure, which would simplify the code generation. But that would be a big change so I didn't do any of that. Perhaps in the next major version something like that would make sense.
100 lines
2.5 KiB
Cheetah
100 lines
2.5 KiB
Cheetah
package data
|
|
|
|
// LanguageInfo exposes the data for a language's Linguist YAML entry as a Go struct.
|
|
// See https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
|
|
type LanguageInfo struct {
|
|
Name string
|
|
FSName string
|
|
Type Type
|
|
Color string
|
|
Group string
|
|
Aliases []string
|
|
Extensions []string
|
|
Interpreters []string
|
|
Filenames []string
|
|
MimeType string
|
|
TMScope string
|
|
AceMode string
|
|
CodemirrorMode string
|
|
Wrap bool
|
|
LanguageID int
|
|
}
|
|
|
|
// LanguageInfoByName allows accessing LanguageInfo by a language's primary name.
|
|
var LanguageInfoByName = map[string]LanguageInfo{
|
|
{{range $language, $info := . -}}
|
|
"{{$language}}": LanguageInfo{
|
|
Name: "{{$language}}",
|
|
FSName: "{{$info.FSName}}",
|
|
Type: TypeForString("{{$info.Type}}"),
|
|
Color: "{{$info.Color}}",
|
|
Group: "{{$info.Group}}",
|
|
Aliases: []string{
|
|
{{range $alias := $info.Aliases -}}
|
|
"{{$alias}}",
|
|
{{end -}}
|
|
},
|
|
Extensions: []string{
|
|
{{range $extension := $info.Extensions -}}
|
|
"{{$extension}}",
|
|
{{end -}}
|
|
},
|
|
Interpreters: []string{
|
|
{{range $interpreter := $info.Interpreters -}}
|
|
"{{$interpreter}}",
|
|
{{end -}}
|
|
},
|
|
Filenames: []string{
|
|
{{range $filename := $info.Filenames -}}
|
|
"{{$filename}}",
|
|
{{end -}}
|
|
},
|
|
MimeType: "{{$info.MimeType}}",
|
|
TMScope: "{{$info.TMScope}}",
|
|
AceMode: "{{$info.AceMode}}",
|
|
CodemirrorMode: "{{$info.CodemirrorMode}}",
|
|
Wrap: {{$info.Wrap}},
|
|
LanguageID: {{$info.LanguageID}},
|
|
},
|
|
{{end -}}
|
|
}
|
|
|
|
// LanguageInfoByID allows accessing LanguageInfo by a language's ID.
|
|
var LanguageInfoByID = map[int]LanguageInfo{
|
|
{{range $language, $info := . -}}
|
|
{{$info.LanguageID}}: LanguageInfo{
|
|
Name: "{{$language}}",
|
|
FSName: "{{$info.FSName}}",
|
|
Type: TypeForString("{{$info.Type}}"),
|
|
Color: "{{$info.Color}}",
|
|
Group: "{{$info.Group}}",
|
|
Aliases: []string{
|
|
{{range $alias := $info.Aliases -}}
|
|
"{{$alias}}",
|
|
{{end -}}
|
|
},
|
|
Extensions: []string{
|
|
{{range $extension := $info.Extensions -}}
|
|
"{{$extension}}",
|
|
{{end -}}
|
|
},
|
|
Interpreters: []string{
|
|
{{range $interpreter := $info.Interpreters -}}
|
|
"{{$interpreter}}",
|
|
{{end -}}
|
|
},
|
|
Filenames: []string{
|
|
{{range $filename := $info.Filenames -}}
|
|
"{{$filename}}",
|
|
{{end -}}
|
|
},
|
|
MimeType: "{{$info.MimeType}}",
|
|
TMScope: "{{$info.TMScope}}",
|
|
AceMode: "{{$info.AceMode}}",
|
|
CodemirrorMode: "{{$info.CodemirrorMode}}",
|
|
Wrap: {{$info.Wrap}},
|
|
LanguageID: {{$info.LanguageID}},
|
|
},
|
|
{{end -}}
|
|
}
|