From d759fb899279292f9694a421679a8c54fa9fbf07 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Tue, 4 Apr 2017 13:10:35 +0200 Subject: [PATCH 1/2] Added languages.go generator --- .../assets/languages.go.tmpl | 11 + cli/slinguist-generate/generator/generator.go | 34 + .../generator/generator_test.go | 98 + cli/slinguist-generate/generator/langs.go | 92 + .../test_files/formated_languages.gold | 12 + .../generator/test_files/languages.gold | 12 + .../test_files/languages.test.go.tmpl | 11 + .../generator/test_files/languages.test.tmpl | 11 + .../generator/test_files/languages.test.yml | 24 + cli/slinguist-generate/main.go | 42 + {cmd => cli}/slinguist/main.go | 0 extension_test.go | 2 +- generate.go | 3 + languages.go | 1892 +++++++++-------- 14 files changed, 1323 insertions(+), 921 deletions(-) create mode 100644 cli/slinguist-generate/assets/languages.go.tmpl create mode 100644 cli/slinguist-generate/generator/generator.go create mode 100644 cli/slinguist-generate/generator/generator_test.go create mode 100644 cli/slinguist-generate/generator/langs.go create mode 100644 cli/slinguist-generate/generator/test_files/formated_languages.gold create mode 100644 cli/slinguist-generate/generator/test_files/languages.gold create mode 100644 cli/slinguist-generate/generator/test_files/languages.test.go.tmpl create mode 100644 cli/slinguist-generate/generator/test_files/languages.test.tmpl create mode 100644 cli/slinguist-generate/generator/test_files/languages.test.yml create mode 100644 cli/slinguist-generate/main.go rename {cmd => cli}/slinguist/main.go (100%) create mode 100644 generate.go diff --git a/cli/slinguist-generate/assets/languages.go.tmpl b/cli/slinguist-generate/assets/languages.go.tmpl new file mode 100644 index 0000000..fcb5281 --- /dev/null +++ b/cli/slinguist-generate/assets/languages.go.tmpl @@ -0,0 +1,11 @@ +package slinguist + +// CODE GENERATED AUTOMATICALLY WITH github.com/src-d/simple-linguist/cli/slinguist-generate +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: {{ getCommit }} + +var languagesByExtension = map[string][]string{ + {{range $extension, $languages := . -}} + "{{ $extension }}": { {{- $languages | formatStringSlice -}} }, + {{end -}} +} diff --git a/cli/slinguist-generate/generator/generator.go b/cli/slinguist-generate/generator/generator.go new file mode 100644 index 0000000..bcfaa70 --- /dev/null +++ b/cli/slinguist-generate/generator/generator.go @@ -0,0 +1,34 @@ +package generator + +import ( + "go/format" + "io/ioutil" +) + +// Func is the function's type that generate the files from templates. +type Func func(dataToParse []byte, templatePath string, template string, commit string) ([]byte, error) + +// FromFile read data to parse from a file named fileToParse and write the generated source code to a file named outPath. The generated +// source code is formated with gofmt and tagged with commit. +func FromFile(fileToParse, outPath, tmplPath, tmplName, commit string, generate Func) error { + buf, err := ioutil.ReadFile(fileToParse) + if err != nil { + return err + } + + source, err := generate(buf, tmplPath, tmplName, commit) + if err != nil { + return err + } + + formatedSource, err := format.Source(source) + if err != nil { + return err + } + + if err := ioutil.WriteFile(outPath, formatedSource, 0666); err != nil { + return err + } + + return nil +} diff --git a/cli/slinguist-generate/generator/generator_test.go b/cli/slinguist-generate/generator/generator_test.go new file mode 100644 index 0000000..4a8140d --- /dev/null +++ b/cli/slinguist-generate/generator/generator_test.go @@ -0,0 +1,98 @@ +package generator + +import ( + "fmt" + "io/ioutil" + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +const ( + // FromFile test + formatedLangGold = "test_files/formated_languages.gold" + formatedContentGold = "test_files/formated_content.gold" + + // Languages test + ymlTestFile = "test_files/languages.test.yml" + langGold = "test_files/languages.gold" + languagesTestTmplPath = "test_files/languages.test.tmpl" + languagesTestTmplName = "languages.test.tmpl" + commitLangTest = "fe8b44ab8a225b1ffa75b983b916ea22fee5b6f7" +) + +func TestFromFile(t *testing.T) { + goldLang, err := ioutil.ReadFile(formatedLangGold) + assert.NoError(t, err) + + outPathLang, err := ioutil.TempFile("/tmp", "generator-test-") + assert.NoError(t, err) + defer os.Remove(outPathLang.Name()) + + tests := []struct { + name string + fileToParse string + outPath string + tmplPath string + tmplName string + commit string + generate Func + wantOut []byte + }{ + { + name: "TestFromFile_Language", + fileToParse: ymlTestFile, + outPath: outPathLang.Name(), + tmplPath: languagesTestTmplPath, + tmplName: languagesTestTmplName, + commit: commitLangTest, + generate: Languages, + wantOut: goldLang, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := FromFile(tt.fileToParse, tt.outPath, tt.tmplPath, tt.tmplName, tt.commit, tt.generate) + assert.NoError(t, err) + out, err := ioutil.ReadFile(tt.outPath) + assert.NoError(t, err) + assert.EqualValues(t, tt.wantOut, out, fmt.Sprintf("FromFile() = %v, want %v", string(out), string(tt.wantOut))) + }) + } +} + +func TestLanguages(t *testing.T) { + gold, err := ioutil.ReadFile(langGold) + assert.NoError(t, err) + + input, err := ioutil.ReadFile(ymlTestFile) + assert.NoError(t, err) + + tests := []struct { + name string + input []byte + tmplPath string + tmplName string + commit string + wantOut []byte + }{ + { + name: "TestLanguages", + input: input, + tmplPath: languagesTestTmplPath, + tmplName: languagesTestTmplName, + commit: commitLangTest, + wantOut: gold, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + out, err := Languages(tt.input, tt.tmplPath, tt.tmplName, tt.commit) + assert.NoError(t, err) + assert.EqualValues(t, tt.wantOut, out, fmt.Sprintf("Languages() = %v, want %v", string(out), string(tt.wantOut))) + }) + } +} diff --git a/cli/slinguist-generate/generator/langs.go b/cli/slinguist-generate/generator/langs.go new file mode 100644 index 0000000..07b6c29 --- /dev/null +++ b/cli/slinguist-generate/generator/langs.go @@ -0,0 +1,92 @@ +package generator + +import ( + "bytes" + "errors" + "io" + "strings" + "text/template" + + "gopkg.in/yaml.v2" +) + +var ( + // ErrExtensionsNotFound is the error returned if data parsed doesn't contain extensions. + ErrExtensionsNotFound = errors.New("extensions not found") +) + +// Languages reads from buf and builds languages.go file from languagesTmplPath. +func Languages(data []byte, languagesTmplPath, languagesTmplName, commit string) ([]byte, error) { + var yamlSlice yaml.MapSlice + if err := yaml.Unmarshal(data, &yamlSlice); err != nil { + return nil, err + } + + languagesByExtension, err := buildExtensionLanguageMap(yamlSlice) + if err != nil { + return nil, err + } + + buf := &bytes.Buffer{} + if err := executeLanguagesTemplate(buf, languagesByExtension, languagesTmplPath, languagesTmplName, commit); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +func buildExtensionLanguageMap(yamlSlice yaml.MapSlice) (map[string][]string, error) { + extensionLangsMap := make(map[string][]string) + for _, lang := range yamlSlice { + extensions, err := findExtensions(lang.Value.(yaml.MapSlice)) + if err != nil && err != ErrExtensionsNotFound { + return nil, err + } + + fillMap(extensionLangsMap, lang.Key.(string), extensions) + } + + return extensionLangsMap, nil +} + +func findExtensions(items yaml.MapSlice) ([]string, error) { + const extField = "extensions" + for _, item := range items { + if item.Key == extField { + extensions := toStringSlice(item.Value.([]interface{})) + return extensions, nil + } + } + + return nil, ErrExtensionsNotFound +} + +func toStringSlice(slice []interface{}) []string { + extensions := make([]string, 0, len(slice)) + for _, element := range slice { + extension := element.(string) + extensions = append(extensions, extension) + } + + return extensions +} + +func fillMap(extensionLangs map[string][]string, lang string, extensions []string) { + for _, extension := range extensions { + extensionLangs[extension] = append(extensionLangs[extension], lang) + } +} + +func executeLanguagesTemplate(out io.Writer, languagesByExtension map[string][]string, languagesTmplPath, languagesTmpl, commit string) error { + fmap := template.FuncMap{ + "getCommit": func() string { return commit }, + "formatStringSlice": func(slice []string) string { return `"` + strings.Join(slice, `","`) + `"` }, + } + + t := template.Must(template.New(languagesTmpl).Funcs(fmap).ParseFiles(languagesTmplPath)) + if err := t.Execute(out, languagesByExtension); err != nil { + return err + } + + return nil +} diff --git a/cli/slinguist-generate/generator/test_files/formated_languages.gold b/cli/slinguist-generate/generator/test_files/formated_languages.gold new file mode 100644 index 0000000..28c2a74 --- /dev/null +++ b/cli/slinguist-generate/generator/test_files/formated_languages.gold @@ -0,0 +1,12 @@ +package slinguist + +// CODE GENERATED AUTOMATICALLY WITH github.com/src-d/simple-linguist/cli/slinguist-generate +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: fe8b44ab8a225b1ffa75b983b916ea22fee5b6f7 + +var languagesByExtension = map[string][]string{ + ".abap": {"ABAP"}, + ".abnf": {"ABNF"}, + ".bsl": {"1C Enterprise"}, + ".os": {"1C Enterprise"}, +} diff --git a/cli/slinguist-generate/generator/test_files/languages.gold b/cli/slinguist-generate/generator/test_files/languages.gold new file mode 100644 index 0000000..8d58141 --- /dev/null +++ b/cli/slinguist-generate/generator/test_files/languages.gold @@ -0,0 +1,12 @@ +package slinguist + +// CODE GENERATED AUTOMATICALLY WITH github.com/src-d/simple-linguist/cli/slinguist-generate +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: fe8b44ab8a225b1ffa75b983b916ea22fee5b6f7 + +var languagesByExtension = map[string][]string{ + ".abap": {"ABAP"}, + ".abnf": {"ABNF"}, + ".bsl": {"1C Enterprise"}, + ".os": {"1C Enterprise"}, + } diff --git a/cli/slinguist-generate/generator/test_files/languages.test.go.tmpl b/cli/slinguist-generate/generator/test_files/languages.test.go.tmpl new file mode 100644 index 0000000..fcb5281 --- /dev/null +++ b/cli/slinguist-generate/generator/test_files/languages.test.go.tmpl @@ -0,0 +1,11 @@ +package slinguist + +// CODE GENERATED AUTOMATICALLY WITH github.com/src-d/simple-linguist/cli/slinguist-generate +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: {{ getCommit }} + +var languagesByExtension = map[string][]string{ + {{range $extension, $languages := . -}} + "{{ $extension }}": { {{- $languages | formatStringSlice -}} }, + {{end -}} +} diff --git a/cli/slinguist-generate/generator/test_files/languages.test.tmpl b/cli/slinguist-generate/generator/test_files/languages.test.tmpl new file mode 100644 index 0000000..fcb5281 --- /dev/null +++ b/cli/slinguist-generate/generator/test_files/languages.test.tmpl @@ -0,0 +1,11 @@ +package slinguist + +// CODE GENERATED AUTOMATICALLY WITH github.com/src-d/simple-linguist/cli/slinguist-generate +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: {{ getCommit }} + +var languagesByExtension = map[string][]string{ + {{range $extension, $languages := . -}} + "{{ $extension }}": { {{- $languages | formatStringSlice -}} }, + {{end -}} +} diff --git a/cli/slinguist-generate/generator/test_files/languages.test.yml b/cli/slinguist-generate/generator/test_files/languages.test.yml new file mode 100644 index 0000000..15d9ca8 --- /dev/null +++ b/cli/slinguist-generate/generator/test_files/languages.test.yml @@ -0,0 +1,24 @@ +--- +1C Enterprise: + type: programming + color: "#814CCC" + extensions: + - ".bsl" + - ".os" + tm_scope: source.bsl + ace_mode: text + language_id: 0 +ABAP: + type: programming + color: "#E8274B" + extensions: + - ".abap" + ace_mode: abap + language_id: 1 +ABNF: + type: data + ace_mode: text + extensions: + - ".abnf" + tm_scope: source.abnf + language_id: 429 \ No newline at end of file diff --git a/cli/slinguist-generate/main.go b/cli/slinguist-generate/main.go new file mode 100644 index 0000000..3e6b443 --- /dev/null +++ b/cli/slinguist-generate/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "io/ioutil" + "log" + + "srcd.works/simple-linguist.v1/cli/slinguist-generate/generator" +) + +const ( + languagesYAML = ".linguist/lib/linguist/languages.yml" + langFile = "languages.go" + languagesTmplPath = "cli/slinguist-generate/assets/languages.go.tmpl" + languagesTmpl = "languages.go.tmpl" + + heuristicsRuby = ".linguist/lib/linguist/heuristics.rb" + contentFile = "content.go" + contentTmplPath = "cli/slinguist-generate/assets/content.go.tmpl" + contentTmpl = "content.go.tmpl" + + commitPath = ".git/refs/heads/master" +) + +func main() { + commit, err := getCommit(commitPath) + if err != nil { + log.Printf("couldn't find commit: %v", err) + } + + if err := generator.FromFile(languagesYAML, langFile, languagesTmplPath, languagesTmpl, commit, generator.Languages); err != nil { + log.Println(err) + } +} + +func getCommit(path string) (string, error) { + commit, err := ioutil.ReadFile(path) + if err != nil { + return "", err + } + + return string(commit), nil +} diff --git a/cmd/slinguist/main.go b/cli/slinguist/main.go similarity index 100% rename from cmd/slinguist/main.go rename to cli/slinguist/main.go diff --git a/extension_test.go b/extension_test.go index 653d460..19fe110 100644 --- a/extension_test.go +++ b/extension_test.go @@ -12,7 +12,7 @@ func (s *TSuite) TestGetLanguageByExtension(c *C) { c.Assert(safe, Equals, true) lang, safe = GetLanguageByExtension("foo.go.php") - c.Assert(lang, Equals, "PHP") + c.Assert(lang, Equals, "Hack") c.Assert(safe, Equals, false) } diff --git a/generate.go b/generate.go new file mode 100644 index 0000000..d4269b7 --- /dev/null +++ b/generate.go @@ -0,0 +1,3 @@ +package slinguist + +//go:generate go run cli/slinguist-generate/main.go diff --git a/languages.go b/languages.go index ff91bb0..6a38687 100644 --- a/languages.go +++ b/languages.go @@ -1,930 +1,982 @@ package slinguist -// Extracted from github/linguist. -// This one-liner prints the latest version: -// curl https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml | python -c 'from collections import defaultdict; import os; import json; import yaml; l = yaml.load(os.sys.stdin.read()); exts = reduce(lambda acc, x: acc + x, [v.get("extensions", []) for k, v in l.items()], []); m = {ext: [k for k, v in l.items() if ext in v.get("extensions", [])] for ext in exts}; print "package utils\n\nvar languagesByExtension = map[string][]string{\n"+ json.dumps(m).replace("]", "}").replace("},", "},\n").replace("[", "{")[1:-1] + ",\n}\n"' | gofmt +// CODE GENERATED AUTOMATICALLY WITH github.com/src-d/simple-linguist/cli/slinguist-generate +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: 8b2d15a2d527c363dead3efe5e4dc3cb74fa4613 + var languagesByExtension = map[string][]string{ - ".obj": {"Wavefront Object"}, - ".sage": {"Sage"}, - ".tmux": {"Shell"}, - ".kt": {"Kotlin"}, - ".builder": {"Ruby"}, - ".lfe": {"LFE"}, - ".arpa": {"DNS Zone"}, - ".plsql": {"PLSQL"}, - ".nsh": {"NSIS"}, - ".sh-session": {"ShellSession"}, - ".ma": {"Mathematica"}, - ".raw": {"Raw token data"}, - ".moon": {"MoonScript"}, - ".rl": {"Ragel in Ruby Host"}, - ".ebuild": {"Gentoo Ebuild"}, - ".targets": {"XML"}, - ".lid": {"Dylan"}, - ".rb": {"Ruby"}, - ".iss": {"Inno Setup"}, - ".pony": {"Pony"}, - ".thor": {"Ruby"}, - ".xml.dist": {"XML"}, - ".resx": {"XML"}, - ".bmx": {"BlitzMax"}, - ".asd": {"Common Lisp"}, - ".geojson": {"JSON"}, - ".bro": {"Bro"}, - ".geo": {"GLSL"}, - ".mkdn": {"Markdown"}, - ".irclog": {"IRC log"}, - ".rs.in": {"Rust"}, - ".rkt": {"Racket"}, - ".bb": {"BitBake", "BlitzBasic"}, - ".rd": {"R"}, - ".mms": {"Module Management System"}, - ".glslv": {"GLSL"}, - ".el": {"Emacs Lisp"}, - ".nuspec": {"XML"}, - ".csx": {"C#"}, - ".rss": {"XML"}, - ".eh": {"eC"}, - ".c++objdump": {"Cpp-ObjDump"}, - ".sublime-settings": {"JavaScript"}, - ".ec": {"eC"}, - ".filters": {"XML"}, - ".csl": {"XML"}, - ".self": {"Self"}, - ".pytb": {"Python traceback"}, - ".ex": {"Elixir"}, - ".csd": {"Csound Document"}, - ".xliff": {"XML"}, - ".pm6": {"Perl6"}, - ".ant": {"XML"}, - ".pde": {"Processing"}, - ".pm": {"Perl6", "Perl"}, - ".pl": {"Perl6", "Prolog", "Perl"}, - ".rabl": {"Ruby"}, - ".f03": {"FORTRAN"}, - ".ph": {"Perl"}, - ".handlebars": {"Handlebars"}, - ".asmx": {"ASP"}, - ".chs": {"C2hs Haskell"}, - ".pb": {"PureBasic"}, - ".perl": {"Perl"}, - ".gtpl": {"Groovy"}, - ".py": {"Python"}, - ".djs": {"Dogescript"}, - ".xml": {"XML"}, - ".xmi": {"XML"}, - ".pp": {"Puppet", "Pascal"}, - ".ps": {"PostScript"}, - ".htm": {"HTML"}, - ".gsx": {"Gosu"}, - ".fxml": {"XML"}, - ".sagews": {"Sage"}, - ".sig": {"Standard ML"}, - ".stTheme": {"XML"}, - ".vba": {"Visual Basic"}, - ".gsp": {"Groovy Server Pages"}, - ".tst": {"Scilab", "GAP"}, - ".gst": {"Gosu"}, - ".sparql": {"SPARQL"}, - ".lagda": {"Literate Agda"}, - ".ily": {"LilyPond"}, - ".dita": {"XML"}, - ".watchr": {"Ruby"}, - ".vbs": {"Visual Basic"}, - ".prg": {"xBase"}, - ".ihlp": {"Stata"}, - ".pri": {"QMake"}, - ".ecr": {"HTML+ECR"}, - ".scrbl": {"Racket"}, - ".pro": {"INI", "Prolog", "QMake", "IDL"}, - ".axd": {"ASP"}, - ".txt": {"Text"}, - ".minid": {"MiniD"}, - ".maxpat": {"Max"}, - ".hh": {"Hack", "C++"}, - ".jinja": {"HTML+Django"}, - ".db2": {"SQLPL"}, - ".xsjs": {"JavaScript"}, - ".xojo_report": {"Xojo"}, - ".p6": {"Perl6"}, - ".escript": {"Erlang"}, - ".p6l": {"Perl6"}, - ".p6m": {"Perl6"}, - ".muf": {"MUF"}, - ".viw": {"SQL"}, - ".exs": {"Elixir"}, - ".qml": {"QML"}, - ".flex": {"JFlex"}, - ".sbt": {"Scala"}, - ".tml": {"XML"}, - ".nginxconf": {"Nginx"}, - ".xaml": {"XML"}, - ".zcml": {"XML"}, - ".urdf": {"XML"}, - ".hbs": {"Handlebars"}, - ".nit": {"Nit"}, - ".clp": {"CLIPS"}, - ".wiki": {"MediaWiki"}, - ".reb": {"Rebol"}, - ".ado": {"Stata"}, - ".red": {"Red"}, - ".adb": {"Ada"}, - ".ada": {"Ada"}, - ".bats": {"Shell"}, - ".xpy": {"Python"}, - ".hxsl": {"Haxe"}, - ".f90": {"FORTRAN"}, - ".ox": {"Ox"}, - ".wsf": {"XML"}, - ".oz": {"Oz"}, - ".ads": {"Ada"}, - ".xpl": {"XProc"}, - ".adp": {"Tcl"}, - ".graphql": {"GraphQL"}, - ".rktl": {"Racket"}, - ".3m": {"Groff"}, - ".owl": {"Web Ontology Language"}, - ".tmSnippet": {"XML"}, - ".vue": {"Vue"}, - ".pir": {"Parrot Internal Representation"}, - ".yaml": {"YAML"}, - ".axs": {"NetLinx"}, - ".rst.txt": {"reStructuredText"}, - ".wsgi": {"Python"}, - ".hlsl": {"HLSL"}, - ".lmi": {"Python"}, - ".command": {"Shell"}, - ".vert": {"GLSL"}, - ".objdump": {"ObjDump"}, - ".yml": {"YAML"}, - ".fr": {"Text", "Frege", "Forth"}, - ".pig": {"PigLatin"}, - ".phtml": {"HTML+PHP"}, - ".ml4": {"OCaml"}, - ".bas": {"Visual Basic"}, - ".fy": {"Fancy"}, - ".fx": {"HLSL", "FLUX"}, - ".wxi": {"XML"}, - ".wxl": {"XML"}, - ".gap": {"GAP"}, - ".aug": {"Augeas"}, - ".ipynb": {"Jupyter Notebook"}, - ".diff": {"Diff"}, - ".wl": {"Mathematica"}, - ".cljs.hl": {"Clojure"}, - ".wxs": {"XML"}, - ".tsx": {"XML", "TypeScript"}, - ".f08": {"FORTRAN"}, - ".rst": {"reStructuredText"}, - ".mll": {"OCaml"}, - ".mli": {"OCaml"}, - ".grace": {"Grace"}, - ".cljc": {"Clojure"}, - ".rsx": {"R"}, - ".txl": {"TXL"}, - ".cljx": {"Clojure"}, - ".sublime-syntax": {"YAML"}, - ".pmod": {"Pike"}, - ".cobol": {"COBOL"}, - ".mly": {"OCaml"}, - ".opa": {"Opa"}, - ".storyboard": {"XML"}, - ".cljs": {"Clojure"}, - ".feature": {"Cucumber"}, - ".rsh": {"RenderScript"}, - ".arc": {"Arc"}, - ".vshader": {"GLSL"}, - ".matah": {"Stata"}, - ".ts": {"XML", "TypeScript"}, - ".xojo_window": {"Xojo"}, - ".tu": {"Turing"}, - ".bsv": {"Bluespec"}, - ".tm": {"Tcl"}, - ".mo": {"Modelica"}, - ".rhtml": {"RHTML"}, - ".xib": {"XML"}, - ".tf": {"Terraform"}, - ".clixml": {"XML"}, - ".smt": {"SMT"}, - ".applescript": {"AppleScript"}, - ".rviz": {"YAML"}, - ".factor": {"Factor"}, - ".eclxml": {"ECL"}, - ".sma": {"SourcePawn"}, - ".fun": {"Standard ML"}, - ".sml": {"Standard ML"}, - ".axml": {"XML"}, - ".reds": {"Red"}, - ".dae": {"COLLADA"}, - ".spin": {"Propeller Spin"}, - ".bash": {"Shell"}, - ".tmCommand": {"XML"}, - ".cbx": {"TeX"}, - ".numpyw": {"NumPy"}, - ".cmake.in": {"CMake"}, - ".intr": {"Dylan"}, - ".vhdl": {"VHDL"}, - ".textile": {"Textile"}, - ".ditaval": {"XML"}, - ".vhost": {"Nginx", "ApacheConf"}, - ".tac": {"Python"}, - ".tab": {"SQL"}, - ".pov": {"POV-Ray SDL"}, - ".rno": {"Groff"}, - ".sublime-snippet": {"XML"}, - ".haml.deface": {"Haml"}, - ".rest": {"reStructuredText"}, - ".sublime-commands": {"JavaScript"}, - ".cfml": {"ColdFusion"}, - ".cp": {"Component Pascal", "C++"}, - "._coffee": {"CoffeeScript"}, - ".rebol": {"Rebol"}, - ".cs": {"C#", "Smalltalk"}, - ".ct": {"XML"}, - ".cu": {"Cuda"}, - ".cw": {"Redcode"}, - ".ch": {"Charity", "xBase"}, - ".wsdl": {"XML"}, - ".fan": {"Fantom"}, - ".ck": {"ChucK"}, - ".ahk": {"AutoHotkey"}, - ".dpatch": {"Darcs Patch"}, - ".fcgi": {"PHP", "Python", "Shell", "Perl", "Lua", "Ruby"}, - ".cc": {"C++"}, - ".yap": {"Prolog"}, - ".fancypack": {"Fancy"}, - ".1m": {"Groff"}, - ".sty": {"TeX"}, - ".cshtml": {"C#"}, - ".bf": {"HyPhy", "Brainfuck"}, - ".cl2": {"Clojure"}, - ".mcr": {"MAXScript"}, - ".rpy": {"Ren'Py", "Python"}, - ".vark": {"Gosu"}, - ".osm": {"XML"}, - ".upc": {"Unified Parallel C"}, - ".xojo_code": {"Xojo"}, - ".anim": {"Unity3D Asset"}, - ".smt2": {"SMT"}, - ".gms": {"GAMS"}, - ".hic": {"Clojure"}, - ".raml": {"RAML"}, - ".mawk": {"Awk"}, - ".iced": {"CoffeeScript"}, - ".pkgproj": {"XML"}, - ".dylan": {"Dylan"}, - ".em": {"EmberScript"}, - ".gml": {"XML", "Graph Modeling Language", "Game Maker Language"}, - ".dotsettings": {"XML"}, - ".ahkl": {"AutoHotkey"}, - ".ps1": {"PowerShell"}, - ".mdpolicy": {"XML"}, - ".sublime_metrics": {"JavaScript"}, - ".pwn": {"PAWN"}, - ".ldml": {"Lasso"}, - ".i7x": {"Inform 7"}, - ".clj": {"Clojure"}, - ".robot": {"RobotFramework"}, - ".1": {"Groff"}, - ".gvy": {"Groovy"}, - ".xproc": {"XProc"}, - ".cls": {"Visual Basic", "Apex", "TeX", "OpenEdge ABL"}, - ".unity": {"Unity3D Asset"}, - ".clw": {"Clarion"}, - ".opencl": {"OpenCL"}, - ".blade": {"Blade"}, - ".csv": {"CSV"}, - ".fish": {"fish"}, - ".idc": {"C"}, - ".1x": {"Groff"}, - ".ltx": {"TeX"}, - ".pac": {"JavaScript"}, - ".sch": {"Eagle", "KiCad"}, - ".php3": {"PHP"}, - ".idr": {"Idris"}, - ".mkfile": {"Makefile"}, - ".php5": {"PHP"}, - ".php4": {"PHP"}, - ".css": {"CSS"}, - ".ditamap": {"XML"}, - ".pas": {"Pascal"}, - ".grxml": {"XML"}, - ".jflex": {"JFlex"}, - ".bison": {"Bison"}, - ".a51": {"Assembly"}, - ".mtl": {"Wavefront Material"}, - ".metal": {"Metal"}, - ".opal": {"Opal"}, - ".mkdown": {"Markdown"}, - ".tcc": {"C++"}, - ".csh": {"Tcsh"}, - ".nproj": {"XML"}, - ".eps": {"PostScript"}, - ".xul": {"XML"}, - ".hb": {"Harbour"}, - ".markdown": {"Markdown"}, - ".sublime_session": {"JavaScript"}, - "._ls": {"LiveScript"}, - ".lgt": {"Logtalk"}, - ".phps": {"PHP"}, - ".hs": {"Haskell"}, - ".phpt": {"PHP"}, - ".fxh": {"HLSL"}, - ".epj": {"Ecere Projects"}, - ".hy": {"Hy"}, - ".hx": {"Haxe"}, - ".JSON-tmLanguage": {"JSON"}, - ".prefab": {"Unity3D Asset"}, - ".tex": {"TeX"}, - ".rbx": {"Ruby"}, - ".5": {"Groff"}, - ".pluginspec": {"XML", "Ruby"}, - ".yy": {"Yacc"}, - ".rbw": {"Ruby"}, - ".cl": {"OpenCL", "Cool", "Common Lisp"}, - ".es": {"JavaScript", "Erlang"}, - ".rest.txt": {"reStructuredText"}, - ".sublime-keymap": {"JavaScript"}, - ".tea": {"Tea"}, - ".eq": {"EQ"}, - ".f77": {"FORTRAN"}, - ".zmpl": {"Zimpl"}, - ".mediawiki": {"MediaWiki"}, - ".man": {"Groff"}, + ".1": {"Roff"}, + ".1in": {"Roff"}, + ".1m": {"Roff"}, + ".1x": {"Roff"}, + ".2": {"Roff"}, + ".3": {"Roff"}, + ".3in": {"Roff"}, + ".3m": {"Roff"}, + ".3qt": {"Roff"}, + ".3x": {"Roff"}, + ".4": {"Roff"}, ".4th": {"Forth"}, - ".pan": {"Pan"}, - ".d-objdump": {"D-ObjDump"}, - ".scxml": {"XML"}, - ".pd_lua": {"Lua"}, - ".god": {"Ruby"}, - ".hats": {"ATS"}, - ".lvproj": {"LabVIEW"}, - ".pat": {"Max"}, - ".purs": {"PureScript"}, - ".aux": {"TeX"}, - ".cproject": {"XML"}, - ".pxd": {"Cython"}, - ".creole": {"Creole"}, - ".moo": {"Mercury", "Moocode"}, - ".hpp": {"C++"}, - ".mod": {"Modula-2", "XML", "Linux Kernel Module", "AMPL"}, - ".pxi": {"Cython"}, - ".auk": {"Awk"}, - ".befunge": {"Befunge"}, - ".bib": {"TeX"}, - ".pd": {"Pure Data"}, - ".jsb": {"JavaScript"}, - ".mata": {"Stata"}, - ".3qt": {"Groff"}, - ".xhtml": {"HTML"}, - ".mako": {"Mako"}, - ".mask": {"Mask"}, - ".eex": {"HTML+EEX"}, - ".duby": {"Mirah"}, - ".coq": {"Coq"}, - ".scss": {"SCSS"}, - ".emacs": {"Emacs Lisp"}, - ".lex": {"Lex"}, - ".cob": {"COBOL"}, - ".toml": {"TOML"}, - ".ll": {"LLVM"}, - ".adoc": {"AsciiDoc"}, - ".ooc": {"ooc"}, - ".json": {"JSON"}, - ".tpp": {"C++"}, - ".au3": {"AutoIt"}, - ".vcl": {"VCL"}, - ".grt": {"Groovy"}, - ".lua": {"Lua"}, - ".vxml": {"XML"}, - ".6": {"Groff"}, - ".tpl": {"Smarty"}, - ".numpy": {"NumPy"}, - ".7": {"Groff"}, - ".sh.in": {"Shell"}, - ".odd": {"XML"}, - ".pyde": {"Python"}, - ".emberscript": {"EmberScript"}, - ".plist": {"XML"}, - ".sexp": {"Common Lisp"}, - ".pt": {"XML"}, - ".toc": {"World of Warcraft Addon Data", "TeX"}, - ".pod": {"Perl", "Pod"}, - ".ni": {"Inform 7"}, - ".mathematica": {"Mathematica"}, - ".ruby": {"Ruby"}, - ".sthlp": {"Stata"}, - ".g4": {"ANTLR"}, - ".dyl": {"Dylan"}, - ".pot": {"Gettext Catalog"}, - ".coffee": {"CoffeeScript"}, - ".nim": {"Nimrod"}, - ".cirru": {"Cirru"}, - ".kicad_pcb": {"KiCad"}, - ".groovy": {"Groovy"}, - ".nse": {"Lua"}, - ".ron": {"Markdown"}, - ".ls": {"LiveScript", "LoomScript"}, - ".lasso9": {"Lasso"}, - ".lasso8": {"Lasso"}, - ".xqy": {"XQuery"}, - ".asciidoc": {"AsciiDoc"}, - ".sublime-menu": {"JavaScript"}, - ".ecl": {"ECLiPSe", "ECL"}, - ".E": {"E"}, - ".myt": {"Myghty"}, - ".agc": {"Apollo Guidance Computer"}, - ".xtend": {"Xtend"}, - ".dpr": {"Pascal"}, - ".latte": {"Latte"}, - ".xqm": {"XQuery"}, - ".xql": {"XQuery"}, - ".ivy": {"XML"}, - ".gf": {"Grammatical Framework"}, - ".numsc": {"NumPy"}, - ".shader": {"GLSL"}, - ".hcl": {"HCL"}, - ".go": {"Go"}, - ".gi": {"GAP"}, - ".yang": {"YANG"}, - ".gv": {"Graphviz (DOT)"}, - ".sfproj": {"XML"}, - ".gp": {"Gnuplot"}, - ".njs": {"JavaScript"}, - ".gs": {"JavaScript", "Gosu"}, - ".lslp": {"LSL"}, - ".com": {"DIGITAL Command Language"}, - ".cy": {"Cycript"}, - ".scpt": {"AppleScript"}, - ".rg": {"Rouge"}, - ".boot": {"Clojure"}, - ".lasso": {"Lasso"}, - ".rs": {"RenderScript", "Rust"}, - ".flux": {"FLUX"}, - ".slim": {"Slim"}, - ".pike": {"Pike"}, - ".ru": {"Ruby"}, - ".rbuild": {"Ruby"}, - ".wlt": {"Mathematica"}, - ".1in": {"Groff"}, - ".hqf": {"SQF"}, - ".dats": {"ATS"}, - ".asset": {"Unity3D Asset"}, - ".hlsli": {"HLSL"}, - ".zpl": {"Zimpl"}, - ".prc": {"SQL"}, - ".for": {"Forth", "Formatted", "FORTRAN"}, - ".mkd": {"Markdown"}, - ".ccp": {"COBOL"}, - ".cr": {"Crystal"}, - ".ijs": {"J"}, - ".emacs.desktop": {"Emacs Lisp"}, - ".xojo_toolbar": {"Xojo"}, - ".x10": {"X10"}, - ".ttl": {"Turtle"}, - ".doh": {"Stata"}, - ".ux": {"XML"}, - ".gawk": {"Awk"}, - ".twig": {"Twig"}, - ".ur": {"UrWeb"}, - ".mumps": {"M"}, - ".darcspatch": {"Darcs Patch"}, - ".bbx": {"TeX"}, - ".ui": {"XML"}, - ".r3": {"Rebol"}, - ".r2": {"Rebol"}, - ".ksh": {"Shell"}, - ".ccxml": {"XML"}, - ".dot": {"Graphviz (DOT)"}, - ".xproj": {"XML"}, - ".sls": {"Scheme", "SaltStack"}, - ".vbproj": {"XML"}, - ".sql": {"PLpgSQL", "PLSQL", "SQL", "SQLPL"}, - ".hxx": {"C++"}, - ".thrift": {"Thrift"}, - ".yaml-tmlanguage": {"YAML"}, - ".ktm": {"Kotlin"}, - ".dfm": {"Pascal"}, - ".litcoffee": {"Literate CoffeeScript"}, - ".aj": {"AspectJ"}, - ".kts": {"Kotlin"}, - ".sld": {"Scheme"}, - ".icl": {"Clean"}, - ".topojson": {"JSON"}, - ".cjsx": {"CoffeeScript"}, - ".cdf": {"Mathematica"}, - ".ik": {"Ioke"}, - ".xrl": {"Erlang"}, - ".io": {"Io"}, - ".f": {"Forth", "FORTRAN"}, - ".sqf": {"SQF"}, - ".cmd": {"Batchfile"}, - ".dyalog": {"APL"}, - ".lisp": {"NewLisp", "Common Lisp"}, - ".sublime-mousemap": {"JavaScript"}, - ".al": {"Perl"}, - ".bones": {"JavaScript"}, - ".jscad": {"JavaScript"}, - ".vala": {"Vala"}, - ".druby": {"Mirah"}, - ".psc": {"Papyrus"}, - ".dlm": {"IDL"}, - ".cxx-objdump": {"Cpp-ObjDump"}, - ".xojo_menu": {"Xojo"}, - ".pkb": {"PLSQL"}, - ".lookml": {"LookML"}, - ".boo": {"Boo"}, - ".h++": {"C++"}, - ".pasm": {"Parrot Assembly"}, - ".dart": {"Dart"}, - ".cxx": {"C++"}, - ".ceylon": {"Ceylon"}, - ".pks": {"PLSQL"}, - ".bat": {"Batchfile"}, - ".desktop.in": {"desktop"}, - ".srt": {"SRecode Template", "SubRip Text"}, - ".c++-objdump": {"Cpp-ObjDump"}, - ".lol": {"LOLCODE"}, - ".dtx": {"TeX"}, - ".gco": {"G-code"}, - ".es6": {"JavaScript"}, - ".pbi": {"PureBasic"}, - ".qbs": {"QML"}, - ".cats": {"C"}, - ".psm1": {"PowerShell"}, - ".rbuistate": {"REALbasic"}, - ".tmLanguage": {"XML"}, - ".glf": {"Glyph"}, - ".irbrc": {"Ruby"}, - ".tmPreferences": {"XML"}, - ".tla": {"TLA"}, - ".vrx": {"GLSL"}, - ".rake": {"Ruby"}, - ".omgrofl": {"Omgrofl"}, - ".org": {"Org"}, - ".tmTheme": {"XML"}, - ".cql": {"SQL"}, - ".xslt": {"XSLT"}, - ".apl": {"APL"}, - ".lpr": {"Pascal"}, - ".vapi": {"Vala"}, - ".wlua": {"Lua"}, - ".uc": {"UnrealScript"}, - ".edn": {"edn"}, - ".hrl": {"Erlang"}, - ".maxproj": {"Max"}, - ".builds": {"XML"}, - ".veo": {"Verilog"}, - ".nbp": {"Mathematica"}, - ".vh": {"SystemVerilog"}, - ".udo": {"Csound"}, - ".ins": {"TeX"}, - ".pogo": {"PogoScript"}, - ".udf": {"SQL"}, - ".psd1": {"PowerShell"}, - ".bzl": {"Python"}, - ".glade": {"XML"}, - ".cppobjdump": {"Cpp-ObjDump"}, - ".inc": {"PHP", "HTML", "SourcePawn", "Assembly", "PAWN", "SQL", "Pascal", "POV-Ray SDL", "C++"}, - ".ini": {"INI"}, - ".vhd": {"VHDL"}, - ".webidl": {"WebIDL"}, - ".sublime-project": {"JavaScript"}, - ".inl": {"C++"}, - ".ino": {"Arduino"}, - ".frg": {"GLSL"}, - ".zsh": {"Shell"}, - ".decls": {"BlitzBasic"}, - ".xacro": {"XML"}, - ".frm": {"Visual Basic"}, - ".ddl": {"SQL"}, - ".cson": {"CoffeeScript"}, - ".cake": {"CoffeeScript", "C#"}, - ".ssjs": {"JavaScript"}, - ".frt": {"Forth"}, - ".dcl": {"Clean"}, - ".rbres": {"REALbasic"}, - ".sce": {"Scilab"}, - ".ascx": {"ASP"}, - ".frx": {"Visual Basic"}, - ".tcl": {"Tcl"}, - ".agda": {"Agda"}, - ".yrl": {"Erlang"}, - ".eclass": {"Gentoo Eclass"}, - ".3in": {"Groff"}, - ".mustache": {"HTML+Django"}, - ".fpp": {"FORTRAN"}, - ".geom": {"GLSL"}, - ".fsproj": {"XML"}, - ".json5": {"JSON5"}, - ".scaml": {"Scaml"}, - ".c++": {"C++"}, - ".jade": {"Jade"}, - ".gradle": {"Gradle"}, - ".mt": {"Mathematica"}, - ".mu": {"mupad"}, - ".ms": {"MAXScript", "GAS", "Groff"}, - ".f95": {"FORTRAN"}, - ".cpp-objdump": {"Cpp-ObjDump"}, - ".rbbas": {"REALbasic"}, - ".3x": {"Groff"}, - ".md": {"GCC Machine Description", "Markdown"}, - ".me": {"Groff"}, - ".mxt": {"Max"}, - ".apacheconf": {"ApacheConf"}, - ".ml": {"OCaml"}, - ".mm": {"Objective-C++", "XML"}, - ".mk": {"Makefile"}, - ".nawk": {"Awk"}, - ".axi.erb": {"NetLinx+ERB"}, - ".di": {"D"}, - ".orc": {"Csound"}, - ".podspec": {"Ruby"}, - ".dm": {"DM"}, - ".cmake": {"CMake"}, - ".do": {"Stata"}, - ".zep": {"Zephir"}, - ".chpl": {"Chapel"}, - ".svg": {"SVG"}, - ".props": {"XML"}, - ".podsl": {"Common Lisp"}, - ".roff": {"Groff"}, - ".svh": {"SystemVerilog"}, - ".ampl": {"AMPL"}, - ".m4": {"M4", "M4Sugar"}, - ".oxygene": {"Oxygene"}, - ".jbuilder": {"Ruby"}, - ".jsx": {"JSX"}, - ".cuh": {"Cuda"}, - ".mat": {"Unity3D Asset"}, - ".jsp": {"Java Server Pages"}, - ".jss": {"JavaScript"}, - ".jsm": {"JavaScript"}, - ".jsproj": {"XML"}, - ".mak": {"Makefile"}, - ".parrot": {"Parrot"}, - ".properties": {"INI"}, - ".mao": {"Mako"}, - ".hlean": {"Lean"}, - ".ML": {"Standard ML"}, - ".jl": {"Julia"}, - ".prw": {"xBase"}, - ".stan": {"Stan"}, - ".gcode": {"G-code"}, - ".plot": {"Gnuplot"}, - ".lsl": {"LSL"}, - ".matlab": {"Matlab"}, - ".axi": {"NetLinx"}, - ".pyp": {"Python"}, - ".zimpl": {"Zimpl"}, - ".pyt": {"Python"}, - ".pyw": {"Python"}, - ".lsp": {"NewLisp", "Common Lisp"}, - ".pyx": {"Cython"}, - ".psgi": {"Perl"}, - ".dockerfile": {"Dockerfile"}, - ".tcsh": {"Tcsh"}, - ".xojo_script": {"Xojo"}, - ".lean": {"Lean"}, - ".prolog": {"Prolog"}, - ".capnp": {"Cap'n Proto"}, - ".wisp": {"wisp"}, - ".jake": {"JavaScript"}, - ".golo": {"Golo"}, - ".nlogo": {"NetLogo"}, - ".rbmnu": {"REALbasic"}, - ".krl": {"KRL"}, - ".nsi": {"NSIS"}, - ".vhs": {"VHDL"}, - ".vht": {"VHDL"}, - ".rbfrm": {"REALbasic"}, - ".vhw": {"VHDL"}, - ".forth": {"Forth"}, - ".sublime-theme": {"JavaScript"}, - ".smali": {"Smali"}, - ".scm": {"Scheme"}, - ".sco": {"Csound Score"}, - ".pl6": {"Perl6"}, - ".sci": {"Scilab"}, - ".vhf": {"VHDL"}, - ".apib": {"API Blueprint"}, - ".scd": {"SuperCollider"}, - ".vhi": {"VHDL"}, - ".nut": {"Squirrel"}, - ".ninja": {"Ninja"}, - ".pkl": {"Pickle"}, - ".vho": {"VHDL"}, - ".syntax": {"YAML"}, - ".swift": {"Swift"}, - ".rbxs": {"Lua"}, - ".las": {"Lasso"}, - ".axs.erb": {"NetLinx+ERB"}, - ".js": {"JavaScript"}, - ".jq": {"JSONiq"}, - ".click": {"Click"}, - ".sublime-build": {"JavaScript"}, - ".aspx": {"ASP"}, - ".plb": {"PLSQL"}, - ".mss": {"CartoCSS"}, - ".sublime-workspace": {"JavaScript"}, - ".ipf": {"IGOR Pro"}, - ".mspec": {"Ruby"}, - ".gshader": {"GLSL"}, - ".pls": {"PLSQL"}, - ".http": {"HTTP"}, - ".plt": {"Gnuplot"}, - ".c-objdump": {"C-ObjDump"}, - ".eliom": {"OCaml"}, - ".lhs": {"Literate Haskell"}, - ".plx": {"Perl"}, - ".vb": {"Visual Basic"}, - ".rktd": {"Racket"}, - ".yacc": {"Yacc"}, - ".pck": {"PLSQL"}, - ".logtalk": {"Logtalk"}, - ".eliomi": {"OCaml"}, - ".cpp": {"C++"}, - ".cps": {"Component Pascal"}, - ".mirah": {"Mirah"}, - ".zone": {"DNS Zone"}, - ".cpy": {"COBOL"}, - ".erb.deface": {"HTML+ERB"}, - ".liquid": {"Liquid"}, - ".asp": {"ASP"}, - ".jsonld": {"JSONLD"}, - ".xq": {"XQuery"}, - ".proto": {"Protocol Buffer"}, - ".mmk": {"Module Management System"}, - ".ps1xml": {"XML"}, - ".fshader": {"GLSL"}, - ".asc": {"Public Key", "AsciiDoc", "AGS Script"}, - ".rq": {"SPARQL"}, - ".xc": {"XC"}, - ".xm": {"Logos"}, - ".vsh": {"GLSL"}, - ".ash": {"AGS Script"}, - ".xi": {"Logos"}, - ".csproj": {"XML"}, - ".asm": {"Assembly"}, - ".sh": {"Shell"}, - ".sj": {"Objective-J"}, - ".sl": {"Slash"}, - ".dll.config": {"XML"}, - ".volt": {"Volt"}, - ".rdoc": {"RDoc"}, - ".sc": {"SuperCollider", "Scala"}, - ".xlf": {"XML"}, - ".sp": {"SourcePawn"}, - ".tool": {"Shell"}, - ".urs": {"UrWeb"}, - ".ss": {"Scheme"}, - ".st": {"HTML", "Smalltalk"}, - ".sv": {"SystemVerilog"}, - ".cbl": {"COBOL"}, - ".iml": {"XML"}, - ".sps": {"Scheme"}, - ".sats": {"ATS"}, - ".frag": {"GLSL", "JavaScript"}, - ".kit": {"Kit"}, - ".pug": {"Jade"}, - ".sjs": {"JavaScript"}, - ".pub": {"Public Key"}, - ".html": {"HTML"}, - ".xsp.metadata": {"XPages"}, - ".eam.fs": {"Formatted"}, - ".kid": {"Genshi"}, - ".ld": {"Linker Script"}, - ".haml": {"Haml"}, - ".styl": {"Stylus"}, - ".po": {"Gettext Catalog"}, - ".fsi": {"F#"}, - ".fsh": {"GLSL"}, - ".elm": {"Elm"}, - ".nix": {"Nix"}, - ".lbx": {"TeX"}, - ".html.hl": {"HTML"}, - ".gyp": {"Python"}, - ".hsc": {"Haskell"}, - ".pascal": {"Pascal"}, - ".fsx": {"F#"}, - ".shen": {"Shen"}, - ".maxhelp": {"Max"}, - ".nqp": {"Perl6"}, + ".5": {"Roff"}, + ".6": {"Roff"}, ".6pl": {"Perl6"}, ".6pm": {"Perl6"}, - ".sass": {"Sass"}, - ".meta": {"Unity3D Asset"}, - ".brs": {"Brightscript"}, - ".mkiv": {"TeX"}, - ".vcxproj": {"XML"}, - ".rmd": {"RMarkdown"}, - ".8": {"Groff"}, - ".9": {"Groff"}, - ".scala": {"Scala"}, - ".jsfl": {"JavaScript"}, - ".mkii": {"TeX"}, - ".fs": {"GLSL", "F#", "Forth", "Filterscript"}, - ".2": {"Groff"}, - ".3": {"Groff"}, - ".4": {"Groff"}, - ".scad": {"OpenSCAD"}, - ".brd": {"Eagle", "KiCad"}, - ".glsl": {"GLSL"}, - ".no": {"Text"}, - ".gd": {"GAP", "GDScript"}, - ".nl": {"NewLisp", "NL"}, - ".rdf": {"XML"}, - ".xsl": {"XSLT"}, + ".7": {"Roff"}, + ".8": {"Roff"}, + ".8xk": {"TI Program"}, + ".8xk.txt": {"TI Program"}, + ".8xp": {"TI Program"}, + ".8xp.txt": {"TI Program"}, + ".9": {"Roff"}, + ".E": {"E"}, + ".JSON-tmLanguage": {"JSON"}, + ".ML": {"Standard ML"}, + "._coffee": {"CoffeeScript"}, "._js": {"JavaScript"}, - ".fp": {"GLSL"}, - ".nc": {"nesC"}, - ".nb": {"Text", "Mathematica"}, - ".gemspec": {"Ruby"}, - ".xsd": {"XML"}, - ".less": {"Less"}, - ".erl": {"Erlang"}, - ".ny": {"Common Lisp"}, - ".cgi": {"Python", "Shell", "Perl"}, - ".nu": {"Nu"}, - ".erb": {"HTML+ERB"}, - ".h": {"C", "Objective-C", "C++"}, - ".cljscm": {"Clojure"}, - ".j": {"Objective-J", "Jasmin"}, - ".vssettings": {"XML"}, - ".l": {"PicoLisp", "Lex", "Groff", "Common Lisp"}, - ".m": {"Mercury", "Limbo", "Objective-C", "MUF", "Mathematica", "Matlab", "M"}, - ".php": {"PHP", "Hack"}, - ".gnuplot": {"Gnuplot"}, - ".psc1": {"XML"}, - ".oxh": {"Ox"}, - ".b": {"Limbo", "Brainfuck"}, - ".c": {"C"}, - ".d": {"DTrace", "Makefile", "D"}, - ".e": {"Eiffel"}, - ".oxo": {"Ox"}, - ".g": {"G-code", "GAP"}, - ".x": {"Logos"}, - ".y": {"Yacc"}, - ".aw": {"PHP"}, - ".mxml": {"XML"}, - ".p": {"OpenEdge ABL"}, - ".nasm": {"Assembly"}, - ".r": {"Rebol", "R"}, - ".s": {"GAS"}, - ".t": {"Perl6", "Terra", "Turing", "Perl"}, - ".ston": {"STON"}, - ".v": {"Verilog", "Coq"}, - ".w": {"C"}, - ".desktop": {"desktop"}, - ".ejs": {"EJS"}, - ".gnu": {"Gnuplot"}, - ".awk": {"Awk"}, - ".x3d": {"XML"}, - ".vim": {"VimL"}, - ".sublime-completions": {"JavaScript"}, - ".asax": {"ASP"}, - ".ctp": {"PHP"}, - ".nimrod": {"Nimrod"}, - ".als": {"Alloy"}, - ".mir": {"Mirah"}, - ".lidr": {"Idris"}, - ".xquery": {"XQuery"}, - ".prefs": {"INI"}, - ".app.src": {"Erlang"}, - ".monkey": {"Monkey"}, - ".srdf": {"XML"}, - ".jelly": {"XML"}, - ".n": {"Nemerle", "Groff"}, - ".sublime-macro": {"JavaScript"}, - ".kml": {"XML"}, - ".thy": {"Isabelle"}, - ".ncl": {"Text", "NCL"}, - ".weechatlog": {"IRC log"}, - ".ashx": {"ASP"}, - ".xsjslib": {"JavaScript"}, - ".xht": {"HTML"}, - ".blade.php": {"Blade"}, - ".uno": {"Uno"}, - ".ly": {"LilyPond"}, - ".patch": {"Diff"}, - ".launch": {"XML"}, - ".mkvi": {"TeX"}, - ".xsp-config": {"XPages"}, - ".mtml": {"MTML"}, - ".xs": {"XS"}, - ".lds": {"Linker Script"}, - ".reek": {"YAML"}, - ".rbtbar": {"REALbasic"}, + "._ls": {"LiveScript"}, + ".a51": {"Assembly"}, ".abap": {"ABAP"}, - ".cfc": {"ColdFusion CFC"}, - ".ipp": {"C++"}, - ".vbhtml": {"Visual Basic"}, - ".cfg": {"INI"}, - ".sas": {"SAS"}, - ".ftl": {"FreeMarker"}, - ".java": {"Java"}, - ".fth": {"Forth"}, - ".cfm": {"ColdFusion"}, + ".abnf": {"ABNF"}, + ".ada": {"Ada"}, + ".adb": {"Ada"}, + ".ado": {"Stata"}, + ".adoc": {"AsciiDoc"}, + ".adp": {"Tcl"}, + ".ads": {"Ada"}, + ".agc": {"Apollo Guidance Computer"}, + ".agda": {"Agda"}, + ".ahk": {"AutoHotkey"}, + ".ahkl": {"AutoHotkey"}, + ".aj": {"AspectJ"}, + ".al": {"Perl"}, + ".als": {"Alloy"}, + ".ampl": {"AMPL"}, + ".anim": {"Unity3D Asset"}, + ".ant": {"XML"}, + ".apacheconf": {"ApacheConf"}, + ".apib": {"API Blueprint"}, + ".apl": {"APL"}, + ".app.src": {"Erlang"}, + ".applescript": {"AppleScript"}, + ".arc": {"Arc"}, + ".arpa": {"DNS Zone"}, ".as": {"ActionScript"}, - ".cf": {"CFEngine"}, + ".asax": {"ASP"}, + ".asc": {"AGS Script", "AsciiDoc", "Public Key"}, + ".asciidoc": {"AsciiDoc"}, + ".ascx": {"ASP"}, + ".asd": {"Common Lisp"}, + ".ash": {"AGS Script"}, + ".ashx": {"ASP"}, + ".asm": {"Assembly"}, + ".asmx": {"ASP"}, + ".asn": {"ASN.1"}, + ".asn1": {"ASN.1"}, + ".asp": {"ASP"}, + ".aspx": {"ASP"}, + ".asset": {"Unity3D Asset"}, + ".au3": {"AutoIt"}, + ".aug": {"Augeas"}, + ".auk": {"Awk"}, + ".aux": {"TeX"}, + ".aw": {"PHP"}, + ".awk": {"Awk"}, + ".axd": {"ASP"}, + ".axi": {"NetLinx"}, + ".axi.erb": {"NetLinx+ERB"}, + ".axml": {"XML"}, + ".axs": {"NetLinx"}, + ".axs.erb": {"NetLinx+ERB"}, + ".b": {"Brainfuck", "Limbo"}, + ".bas": {"Visual Basic"}, + ".bash": {"Shell"}, + ".bat": {"Batchfile"}, + ".bats": {"Shell"}, + ".bb": {"BitBake", "BlitzBasic"}, + ".bbx": {"TeX"}, + ".befunge": {"Befunge"}, + ".bf": {"Brainfuck", "HyPhy"}, + ".bib": {"TeX"}, + ".bison": {"Bison"}, + ".blade": {"Blade"}, + ".blade.php": {"Blade"}, + ".bmx": {"BlitzMax"}, + ".bones": {"JavaScript"}, + ".boo": {"Boo"}, + ".boot": {"Clojure"}, + ".brd": {"Eagle", "KiCad"}, + ".bro": {"Bro"}, + ".brs": {"Brightscript"}, + ".bsl": {"1C Enterprise"}, + ".bsv": {"Bluespec"}, + ".builder": {"Ruby"}, + ".builds": {"XML"}, + ".bzl": {"Python"}, + ".c": {"C"}, + ".c++": {"C++"}, + ".c++-objdump": {"Cpp-ObjDump"}, + ".c++objdump": {"Cpp-ObjDump"}, + ".c-objdump": {"C-ObjDump"}, + ".cake": {"C#", "CoffeeScript"}, + ".capnp": {"Cap'n Proto"}, + ".cats": {"C"}, + ".cbl": {"COBOL"}, + ".cbx": {"TeX"}, + ".cc": {"C++"}, + ".ccp": {"COBOL"}, + ".ccxml": {"XML"}, + ".cdf": {"Mathematica"}, + ".ceylon": {"Ceylon"}, + ".cfc": {"ColdFusion CFC"}, + ".cfg": {"INI"}, + ".cfm": {"ColdFusion"}, + ".cfml": {"ColdFusion"}, + ".cgi": {"Perl", "Python", "Shell"}, + ".ch": {"Charity", "xBase"}, + ".chem": {"Pic"}, + ".chpl": {"Chapel"}, + ".chs": {"C2hs Haskell"}, + ".cirru": {"Cirru"}, + ".cjsx": {"CoffeeScript"}, + ".ck": {"ChucK"}, + ".cl": {"Common Lisp", "Cool", "OpenCL"}, + ".cl2": {"Clojure"}, + ".click": {"Click"}, + ".clixml": {"XML"}, + ".clj": {"Clojure"}, + ".cljc": {"Clojure"}, + ".cljs": {"Clojure"}, + ".cljs.hl": {"Clojure"}, + ".cljscm": {"Clojure"}, + ".cljx": {"Clojure"}, + ".clp": {"CLIPS"}, + ".cls": {"Apex", "OpenEdge ABL", "TeX", "Visual Basic"}, + ".clw": {"Clarion"}, + ".cmake": {"CMake"}, + ".cmake.in": {"CMake"}, + ".cmd": {"Batchfile"}, + ".cob": {"COBOL"}, + ".cobol": {"COBOL"}, + ".coffee": {"CoffeeScript"}, + ".com": {"DIGITAL Command Language"}, + ".command": {"Shell"}, + ".coq": {"Coq"}, + ".cp": {"C++", "Component Pascal"}, + ".cpp": {"C++"}, + ".cpp-objdump": {"Cpp-ObjDump"}, + ".cppobjdump": {"Cpp-ObjDump"}, + ".cproject": {"XML"}, + ".cps": {"Component Pascal"}, + ".cpy": {"COBOL"}, + ".cql": {"SQL"}, + ".cr": {"Crystal"}, + ".creole": {"Creole"}, + ".cs": {"C#", "Smalltalk"}, + ".csd": {"Csound Document"}, + ".csh": {"Tcsh"}, + ".cshtml": {"C#"}, + ".csl": {"XML"}, + ".cson": {"CSON"}, + ".csproj": {"XML"}, + ".css": {"CSS"}, + ".csv": {"CSV"}, + ".csx": {"C#"}, + ".ct": {"XML"}, + ".ctp": {"PHP"}, + ".cu": {"Cuda"}, + ".cuh": {"Cuda"}, + ".cw": {"Redcode"}, + ".cxx": {"C++"}, + ".cxx-objdump": {"Cpp-ObjDump"}, + ".cy": {"Cycript"}, + ".d": {"D", "DTrace", "Makefile"}, + ".d-objdump": {"D-ObjDump"}, + ".dae": {"COLLADA"}, + ".darcspatch": {"Darcs Patch"}, + ".dart": {"Dart"}, + ".dats": {"ATS"}, + ".db2": {"SQLPL"}, + ".dcl": {"Clean"}, + ".ddl": {"SQL"}, + ".decls": {"BlitzBasic"}, + ".desktop": {"desktop"}, + ".desktop.in": {"desktop"}, + ".dfm": {"Pascal"}, + ".di": {"D"}, + ".diff": {"Diff"}, + ".dita": {"XML"}, + ".ditamap": {"XML"}, + ".ditaval": {"XML"}, + ".djs": {"Dogescript"}, + ".dll.config": {"XML"}, + ".dlm": {"IDL"}, + ".dm": {"DM"}, + ".do": {"Stata"}, + ".dockerfile": {"Dockerfile"}, + ".doh": {"Stata"}, + ".dot": {"Graphviz (DOT)"}, + ".dotsettings": {"XML"}, + ".dpatch": {"Darcs Patch"}, + ".dpr": {"Pascal"}, + ".druby": {"Mirah"}, + ".dtx": {"TeX"}, + ".duby": {"Mirah"}, + ".dyalog": {"APL"}, + ".dyl": {"Dylan"}, + ".dylan": {"Dylan"}, + ".e": {"Eiffel"}, + ".eam.fs": {"Formatted"}, + ".ebnf": {"EBNF"}, + ".ebuild": {"Gentoo Ebuild"}, + ".ec": {"eC"}, + ".ecl": {"ECL", "ECLiPSe"}, + ".eclass": {"Gentoo Eclass"}, + ".eclxml": {"ECL"}, + ".ecr": {"HTML+ECR"}, + ".edn": {"edn"}, + ".eex": {"HTML+EEX"}, + ".eh": {"eC"}, + ".ejs": {"EJS"}, + ".el": {"Emacs Lisp"}, + ".eliom": {"OCaml"}, + ".eliomi": {"OCaml"}, + ".elm": {"Elm"}, + ".em": {"EmberScript"}, + ".emacs": {"Emacs Lisp"}, + ".emacs.desktop": {"Emacs Lisp"}, + ".emberscript": {"EmberScript"}, + ".epj": {"Ecere Projects"}, + ".eps": {"PostScript"}, + ".eq": {"EQ"}, + ".erb": {"HTML+ERB"}, + ".erb.deface": {"HTML+ERB"}, + ".erl": {"Erlang"}, + ".es": {"Erlang", "JavaScript"}, + ".es6": {"JavaScript"}, + ".escript": {"Erlang"}, + ".ex": {"Elixir"}, + ".exs": {"Elixir"}, + ".eye": {"Ruby"}, + ".f": {"Filebench WML", "Forth", "Fortran"}, + ".f03": {"Fortran"}, + ".f08": {"Fortran"}, + ".f77": {"Fortran"}, + ".f90": {"Fortran"}, + ".f95": {"Fortran"}, + ".factor": {"Factor"}, + ".fan": {"Fantom"}, + ".fancypack": {"Fancy"}, + ".fcgi": {"Lua", "PHP", "Perl", "Python", "Ruby", "Shell"}, + ".fea": {"OpenType Feature File"}, + ".feature": {"Gherkin"}, + ".filters": {"XML"}, + ".fish": {"fish"}, + ".flex": {"JFlex"}, + ".flux": {"FLUX"}, + ".for": {"Formatted", "Forth", "Fortran"}, + ".forth": {"Forth"}, + ".fp": {"GLSL"}, + ".fpp": {"Fortran"}, + ".fr": {"Forth", "Frege", "Text"}, + ".frag": {"GLSL", "JavaScript"}, + ".frg": {"GLSL"}, + ".frm": {"Visual Basic"}, + ".frt": {"Forth"}, + ".frx": {"Visual Basic"}, + ".fs": {"F#", "Filterscript", "Forth", "GLSL"}, + ".fsh": {"GLSL"}, + ".fshader": {"GLSL"}, + ".fsi": {"F#"}, + ".fsproj": {"XML"}, + ".fsx": {"F#"}, + ".fth": {"Forth"}, + ".ftl": {"FreeMarker"}, + ".fun": {"Standard ML"}, + ".fx": {"FLUX", "HLSL"}, + ".fxh": {"HLSL"}, + ".fxml": {"XML"}, + ".fy": {"Fancy"}, + ".g": {"G-code", "GAP"}, + ".g4": {"ANTLR"}, + ".gap": {"GAP"}, + ".gawk": {"Awk"}, + ".gco": {"G-code"}, + ".gcode": {"G-code"}, + ".gd": {"GAP", "GDScript"}, + ".gdb": {"GDB"}, + ".gdbinit": {"GDB"}, + ".gemspec": {"Ruby"}, + ".geo": {"GLSL"}, + ".geojson": {"JSON"}, + ".geom": {"GLSL"}, + ".gf": {"Grammatical Framework"}, + ".gi": {"GAP"}, + ".glade": {"XML"}, + ".glf": {"Glyph"}, + ".glsl": {"GLSL"}, + ".glslv": {"GLSL"}, + ".gml": {"Game Maker Language", "Graph Modeling Language", "XML"}, + ".gms": {"GAMS"}, + ".gn": {"GN"}, + ".gni": {"GN"}, + ".gnu": {"Gnuplot"}, + ".gnuplot": {"Gnuplot"}, + ".go": {"Go"}, + ".god": {"Ruby"}, + ".golo": {"Golo"}, + ".gp": {"Gnuplot"}, + ".grace": {"Grace"}, + ".gradle": {"Gradle"}, + ".graphql": {"GraphQL"}, + ".groovy": {"Groovy"}, + ".grt": {"Groovy"}, + ".grxml": {"XML"}, + ".gs": {"Genie", "Gosu", "JavaScript"}, + ".gshader": {"GLSL"}, + ".gsp": {"Groovy Server Pages"}, + ".gst": {"Gosu"}, + ".gsx": {"Gosu"}, + ".gtpl": {"Groovy"}, + ".gv": {"Graphviz (DOT)"}, + ".gvy": {"Groovy"}, + ".gyp": {"Python"}, + ".gypi": {"Python"}, + ".h": {"C", "C++", "Objective-C"}, + ".h++": {"C++"}, + ".haml": {"Haml"}, + ".haml.deface": {"Haml"}, + ".handlebars": {"Handlebars"}, + ".hats": {"ATS"}, + ".hb": {"Harbour"}, + ".hbs": {"Handlebars"}, + ".hcl": {"HCL"}, + ".hh": {"C++", "Hack"}, + ".hic": {"Clojure"}, + ".hlean": {"Lean"}, + ".hlsl": {"HLSL"}, + ".hlsli": {"HLSL"}, + ".hpp": {"C++"}, + ".hqf": {"SQF"}, + ".hrl": {"Erlang"}, + ".hs": {"Haskell"}, + ".hsc": {"Haskell"}, + ".htm": {"HTML"}, + ".html": {"HTML"}, + ".html.hl": {"HTML"}, + ".http": {"HTTP"}, + ".hx": {"Haxe"}, + ".hxsl": {"Haxe"}, + ".hxx": {"C++"}, + ".hy": {"Hy"}, + ".i7x": {"Inform 7"}, + ".iced": {"CoffeeScript"}, + ".icl": {"Clean"}, + ".idc": {"C"}, + ".idr": {"Idris"}, + ".ihlp": {"Stata"}, + ".ijs": {"J"}, + ".ik": {"Ioke"}, + ".ily": {"LilyPond"}, + ".iml": {"XML"}, + ".inc": {"Assembly", "C++", "HTML", "PAWN", "PHP", "POV-Ray SDL", "Pascal", "SQL", "SourcePawn"}, + ".ini": {"INI"}, + ".inl": {"C++"}, + ".ino": {"Arduino"}, + ".ins": {"TeX"}, + ".intr": {"Dylan"}, + ".io": {"Io"}, + ".ipf": {"IGOR Pro"}, + ".ipp": {"C++"}, + ".ipynb": {"Jupyter Notebook"}, + ".irbrc": {"Ruby"}, + ".irclog": {"IRC log"}, + ".iss": {"Inno Setup"}, + ".ivy": {"XML"}, + ".j": {"Jasmin", "Objective-J"}, + ".jade": {"Pug"}, + ".jake": {"JavaScript"}, + ".java": {"Java"}, + ".jbuilder": {"Ruby"}, + ".jelly": {"XML"}, + ".jflex": {"JFlex"}, + ".jinja": {"HTML+Django"}, + ".jison": {"Jison"}, + ".jisonlex": {"Jison Lex"}, + ".jl": {"Julia"}, + ".jq": {"JSONiq"}, + ".js": {"JavaScript"}, + ".jsb": {"JavaScript"}, + ".jscad": {"JavaScript"}, + ".jsfl": {"JavaScript"}, + ".jsm": {"JavaScript"}, + ".json": {"JSON"}, + ".json5": {"JSON5"}, + ".jsonld": {"JSONLD"}, + ".jsp": {"Java Server Pages"}, + ".jsproj": {"XML"}, + ".jss": {"JavaScript"}, + ".jsx": {"JSX"}, + ".kicad_pcb": {"KiCad"}, + ".kid": {"Genshi"}, + ".kit": {"Kit"}, + ".kml": {"XML"}, + ".krl": {"KRL"}, + ".ksh": {"Shell"}, + ".kt": {"Kotlin"}, + ".ktm": {"Kotlin"}, + ".kts": {"Kotlin"}, + ".l": {"Common Lisp", "Lex", "PicoLisp", "Roff"}, + ".lagda": {"Literate Agda"}, + ".las": {"Lasso"}, + ".lasso": {"Lasso"}, + ".lasso8": {"Lasso"}, + ".lasso9": {"Lasso"}, + ".latte": {"Latte"}, + ".launch": {"XML"}, + ".lbx": {"TeX"}, + ".ld": {"Linker Script"}, + ".ldml": {"Lasso"}, + ".lds": {"Linker Script"}, + ".lean": {"Lean"}, + ".less": {"Less"}, + ".lex": {"Lex"}, + ".lfe": {"LFE"}, + ".lgt": {"Logtalk"}, + ".lhs": {"Literate Haskell"}, + ".lid": {"Dylan"}, + ".lidr": {"Idris"}, + ".liquid": {"Liquid"}, + ".lisp": {"Common Lisp", "NewLisp"}, + ".litcoffee": {"Literate CoffeeScript"}, + ".ll": {"LLVM"}, + ".lmi": {"Python"}, + ".logtalk": {"Logtalk"}, + ".lol": {"LOLCODE"}, + ".lookml": {"LookML"}, + ".lpr": {"Pascal"}, + ".ls": {"LiveScript", "LoomScript"}, + ".lsl": {"LSL"}, + ".lslp": {"LSL"}, + ".lsp": {"Common Lisp", "NewLisp"}, + ".ltx": {"TeX"}, + ".lua": {"Lua"}, + ".lvproj": {"LabVIEW"}, + ".ly": {"LilyPond"}, + ".m": {"Limbo", "M", "MUF", "Mathematica", "Matlab", "Mercury", "Objective-C"}, + ".m4": {"M4", "M4Sugar"}, + ".ma": {"Mathematica"}, + ".mak": {"Makefile"}, + ".make": {"Makefile"}, + ".mako": {"Mako"}, + ".man": {"Roff"}, + ".mao": {"Mako"}, + ".markdown": {"Markdown"}, + ".marko": {"Marko"}, + ".mask": {"Mask"}, + ".mat": {"Unity3D Asset"}, + ".mata": {"Stata"}, + ".matah": {"Stata"}, + ".mathematica": {"Mathematica"}, + ".matlab": {"Matlab"}, + ".mawk": {"Awk"}, + ".maxhelp": {"Max"}, + ".maxpat": {"Max"}, + ".maxproj": {"Max"}, + ".mcr": {"MAXScript"}, + ".md": {"GCC Machine Description", "Markdown"}, + ".mdown": {"Markdown"}, + ".mdpolicy": {"XML"}, + ".mdwn": {"Markdown"}, + ".me": {"Roff"}, + ".mediawiki": {"MediaWiki"}, + ".meta": {"Unity3D Asset"}, + ".metal": {"Metal"}, + ".minid": {"MiniD"}, + ".mir": {"Mirah"}, + ".mirah": {"Mirah"}, + ".mk": {"Makefile"}, + ".mkd": {"Markdown"}, + ".mkdn": {"Markdown"}, + ".mkdown": {"Markdown"}, + ".mkfile": {"Makefile"}, + ".mkii": {"TeX"}, + ".mkiv": {"TeX"}, + ".mkvi": {"TeX"}, + ".ml": {"OCaml"}, + ".ml4": {"OCaml"}, + ".mli": {"OCaml"}, + ".mll": {"OCaml"}, + ".mly": {"OCaml"}, + ".mm": {"Objective-C++", "XML"}, + ".mmk": {"Module Management System"}, + ".mms": {"Module Management System"}, + ".mo": {"Modelica"}, + ".mod": {"AMPL", "Linux Kernel Module", "Modula-2", "XML"}, + ".model.lkml": {"LookML"}, + ".monkey": {"Monkey"}, + ".moo": {"Mercury", "Moocode"}, + ".moon": {"MoonScript"}, + ".mq4": {"MQL4"}, + ".mq5": {"MQL5"}, + ".mqh": {"MQL4", "MQL5"}, + ".ms": {"MAXScript", "Roff", "Unix Assembly"}, + ".mspec": {"Ruby"}, + ".mss": {"CartoCSS"}, + ".mt": {"Mathematica"}, + ".mtl": {"Wavefront Material"}, + ".mtml": {"MTML"}, + ".mu": {"mupad"}, + ".muf": {"MUF"}, + ".mumps": {"M"}, + ".mustache": {"HTML+Django"}, + ".mxml": {"XML"}, + ".mxt": {"Max"}, + ".mysql": {"SQL"}, + ".myt": {"Myghty"}, + ".n": {"Nemerle", "Roff"}, + ".nasm": {"Assembly"}, + ".nawk": {"Awk"}, + ".nb": {"Mathematica", "Text"}, + ".nbp": {"Mathematica"}, + ".nc": {"nesC"}, + ".ncl": {"NCL", "Text"}, + ".nginxconf": {"Nginx"}, + ".ni": {"Inform 7"}, + ".nim": {"Nim"}, + ".nimrod": {"Nim"}, + ".ninja": {"Ninja"}, + ".nit": {"Nit"}, + ".nix": {"Nix"}, + ".njk": {"HTML+Django"}, + ".njs": {"JavaScript"}, + ".nl": {"NL", "NewLisp"}, + ".nlogo": {"NetLogo"}, + ".no": {"Text"}, + ".nproj": {"XML"}, + ".nqp": {"Perl6"}, + ".nse": {"Lua"}, + ".nsh": {"NSIS"}, + ".nsi": {"NSIS"}, + ".nu": {"Nu"}, + ".numpy": {"NumPy"}, + ".numpyw": {"NumPy"}, + ".numsc": {"NumPy"}, + ".nuspec": {"XML"}, + ".nut": {"Squirrel"}, + ".ny": {"Common Lisp"}, + ".obj": {"Wavefront Object"}, + ".objdump": {"ObjDump"}, + ".odd": {"XML"}, + ".omgrofl": {"Omgrofl"}, + ".ooc": {"ooc"}, + ".opa": {"Opa"}, + ".opal": {"Opal"}, + ".opencl": {"OpenCL"}, + ".orc": {"Csound"}, + ".org": {"Org"}, + ".os": {"1C Enterprise"}, + ".osm": {"XML"}, + ".owl": {"Web Ontology Language"}, + ".ox": {"Ox"}, + ".oxh": {"Ox"}, + ".oxo": {"Ox"}, + ".oxygene": {"Oxygene"}, + ".oz": {"Oz"}, + ".p": {"OpenEdge ABL"}, + ".p4": {"P4"}, + ".p6": {"Perl6"}, + ".p6l": {"Perl6"}, + ".p6m": {"Perl6"}, + ".pac": {"JavaScript"}, + ".pan": {"Pan"}, + ".parrot": {"Parrot"}, + ".pas": {"Pascal"}, + ".pascal": {"Pascal"}, + ".pasm": {"Parrot Assembly"}, + ".pat": {"Max"}, + ".patch": {"Diff"}, + ".pb": {"PureBasic"}, + ".pbi": {"PureBasic"}, + ".pbt": {"PowerBuilder"}, + ".pck": {"PLSQL"}, + ".pd": {"Pure Data"}, + ".pd_lua": {"Lua"}, + ".pde": {"Processing"}, + ".perl": {"Perl"}, + ".ph": {"Perl"}, + ".php": {"Hack", "PHP"}, + ".php3": {"PHP"}, + ".php4": {"PHP"}, + ".php5": {"PHP"}, + ".phps": {"PHP"}, + ".phpt": {"PHP"}, + ".phtml": {"HTML+PHP"}, + ".pic": {"Pic"}, + ".pig": {"PigLatin"}, + ".pike": {"Pike"}, + ".pir": {"Parrot Internal Representation"}, + ".pkb": {"PLSQL"}, + ".pkgproj": {"XML"}, + ".pkl": {"Pickle"}, + ".pks": {"PLSQL"}, + ".pl": {"Perl", "Perl6", "Prolog"}, + ".pl6": {"Perl6"}, + ".plb": {"PLSQL"}, + ".plist": {"XML"}, + ".plot": {"Gnuplot"}, + ".pls": {"PLSQL"}, + ".plsql": {"PLSQL"}, + ".plt": {"Gnuplot"}, + ".pluginspec": {"Ruby", "XML"}, + ".plx": {"Perl"}, + ".pm": {"Perl", "Perl6"}, + ".pm6": {"Perl6"}, + ".pmod": {"Pike"}, + ".po": {"Gettext Catalog"}, + ".pod": {"Perl", "Pod"}, + ".podsl": {"Common Lisp"}, + ".podspec": {"Ruby"}, + ".pogo": {"PogoScript"}, + ".pony": {"Pony"}, + ".pot": {"Gettext Catalog"}, + ".pov": {"POV-Ray SDL"}, + ".pp": {"Pascal", "Puppet"}, + ".pprx": {"REXX"}, + ".prc": {"SQL"}, + ".prefab": {"Unity3D Asset"}, + ".prefs": {"INI"}, + ".prg": {"xBase"}, + ".pri": {"QMake"}, + ".pro": {"IDL", "INI", "Prolog", "QMake"}, + ".prolog": {"Prolog"}, + ".properties": {"INI"}, + ".props": {"XML"}, + ".proto": {"Protocol Buffer"}, + ".prw": {"xBase"}, + ".ps": {"PostScript"}, + ".ps1": {"PowerShell"}, + ".ps1xml": {"XML"}, + ".psc": {"Papyrus"}, + ".psc1": {"XML"}, + ".psd1": {"PowerShell"}, + ".psgi": {"Perl"}, + ".psm1": {"PowerShell"}, + ".pt": {"XML"}, + ".pub": {"Public Key"}, + ".pug": {"Pug"}, + ".purs": {"PureScript"}, + ".pwn": {"PAWN"}, + ".pxd": {"Cython"}, + ".pxi": {"Cython"}, + ".py": {"Python"}, + ".py3": {"Python"}, + ".pyde": {"Python"}, + ".pyp": {"Python"}, + ".pyt": {"Python"}, + ".pytb": {"Python traceback"}, + ".pyw": {"Python"}, + ".pyx": {"Cython"}, + ".qbs": {"QML"}, + ".qml": {"QML"}, + ".r": {"R", "Rebol"}, + ".r2": {"Rebol"}, + ".r3": {"Rebol"}, + ".rabl": {"Ruby"}, + ".rake": {"Ruby"}, + ".raml": {"RAML"}, + ".raw": {"Raw token data"}, + ".rb": {"Ruby"}, + ".rbbas": {"REALbasic"}, + ".rbfrm": {"REALbasic"}, + ".rbmnu": {"REALbasic"}, + ".rbres": {"REALbasic"}, + ".rbtbar": {"REALbasic"}, + ".rbuild": {"Ruby"}, + ".rbuistate": {"REALbasic"}, + ".rbw": {"Ruby"}, + ".rbx": {"Ruby"}, + ".rbxs": {"Lua"}, + ".rd": {"R"}, + ".rdf": {"XML"}, + ".rdoc": {"RDoc"}, + ".re": {"C++", "Reason"}, + ".reb": {"Rebol"}, + ".rebol": {"Rebol"}, + ".red": {"Red"}, + ".reds": {"Red"}, + ".reek": {"YAML"}, + ".regex": {"Regular Expression"}, + ".regexp": {"Regular Expression"}, + ".rei": {"Reason"}, + ".rest": {"reStructuredText"}, + ".rest.txt": {"reStructuredText"}, + ".resx": {"XML"}, + ".rex": {"REXX"}, + ".rexx": {"REXX"}, + ".rg": {"Rouge"}, + ".rhtml": {"RHTML"}, + ".rkt": {"Racket"}, + ".rktd": {"Racket"}, + ".rktl": {"Racket"}, + ".rl": {"Ragel"}, + ".rmd": {"RMarkdown"}, + ".rnh": {"RUNOFF"}, + ".rno": {"RUNOFF", "Roff"}, + ".robot": {"RobotFramework"}, + ".roff": {"Roff"}, + ".ron": {"Markdown"}, + ".rpy": {"Python", "Ren'Py"}, + ".rq": {"SPARQL"}, + ".rs": {"RenderScript", "Rust"}, + ".rs.in": {"Rust"}, + ".rsc": {"Rascal"}, + ".rsh": {"RenderScript"}, + ".rss": {"XML"}, + ".rst": {"reStructuredText"}, + ".rst.txt": {"reStructuredText"}, + ".rsx": {"R"}, + ".ru": {"Ruby"}, + ".ruby": {"Ruby"}, + ".rviz": {"YAML"}, + ".s": {"Unix Assembly"}, + ".sage": {"Sage"}, + ".sagews": {"Sage"}, + ".sas": {"SAS"}, + ".sass": {"Sass"}, + ".sats": {"ATS"}, + ".sbt": {"Scala"}, + ".sc": {"Scala", "SuperCollider"}, + ".scad": {"OpenSCAD"}, + ".scala": {"Scala"}, + ".scaml": {"Scaml"}, + ".scd": {"SuperCollider"}, + ".sce": {"Scilab"}, + ".sch": {"Eagle", "KiCad", "XML"}, + ".sci": {"Scilab"}, + ".scm": {"Scheme"}, + ".sco": {"Csound Score"}, + ".scpt": {"AppleScript"}, + ".scrbl": {"Racket"}, + ".scss": {"SCSS"}, + ".scxml": {"XML"}, + ".self": {"Self"}, + ".sexp": {"Common Lisp"}, + ".sfd": {"Spline Font Database"}, + ".sfproj": {"XML"}, + ".sh": {"Shell"}, + ".sh-session": {"ShellSession"}, + ".sh.in": {"Shell"}, + ".shader": {"GLSL"}, + ".shen": {"Shen"}, + ".sig": {"Standard ML"}, + ".sj": {"Objective-J"}, + ".sjs": {"JavaScript"}, + ".sl": {"Slash"}, + ".sld": {"Scheme"}, + ".slim": {"Slim"}, + ".sls": {"SaltStack", "Scheme"}, + ".sma": {"SourcePawn"}, + ".smali": {"Smali"}, + ".sml": {"Standard ML"}, + ".smt": {"SMT"}, + ".smt2": {"SMT"}, + ".sp": {"SourcePawn"}, + ".sparql": {"SPARQL"}, + ".spec": {"Python", "RPM Spec", "Ruby"}, + ".spin": {"Propeller Spin"}, + ".sps": {"Scheme"}, + ".sqf": {"SQF"}, + ".sql": {"PLSQL", "PLpgSQL", "SQL", "SQLPL"}, + ".sra": {"PowerBuilder"}, + ".srdf": {"XML"}, + ".srt": {"SRecode Template", "SubRip Text"}, + ".sru": {"PowerBuilder"}, + ".srw": {"PowerBuilder"}, + ".ss": {"Scheme"}, + ".ssjs": {"JavaScript"}, + ".st": {"HTML", "Smalltalk"}, + ".stTheme": {"XML"}, + ".stan": {"Stan"}, + ".sthlp": {"Stata"}, + ".ston": {"STON"}, + ".storyboard": {"XML"}, + ".sty": {"TeX"}, + ".styl": {"Stylus"}, + ".sublime-build": {"Sublime Text Config"}, + ".sublime-commands": {"Sublime Text Config"}, + ".sublime-completions": {"Sublime Text Config"}, + ".sublime-keymap": {"Sublime Text Config"}, + ".sublime-macro": {"Sublime Text Config"}, + ".sublime-menu": {"Sublime Text Config"}, + ".sublime-mousemap": {"Sublime Text Config"}, + ".sublime-project": {"Sublime Text Config"}, + ".sublime-settings": {"Sublime Text Config"}, + ".sublime-snippet": {"XML"}, + ".sublime-syntax": {"YAML"}, + ".sublime-theme": {"Sublime Text Config"}, + ".sublime-workspace": {"Sublime Text Config"}, + ".sublime_metrics": {"Sublime Text Config"}, + ".sublime_session": {"Sublime Text Config"}, + ".sv": {"SystemVerilog"}, + ".svg": {"SVG"}, + ".svh": {"SystemVerilog"}, + ".swift": {"Swift"}, + ".syntax": {"YAML"}, + ".t": {"Perl", "Perl6", "Terra", "Turing"}, + ".tab": {"SQL"}, + ".tac": {"Python"}, + ".targets": {"XML"}, + ".tcc": {"C++"}, + ".tcl": {"Tcl"}, + ".tcsh": {"Tcsh"}, + ".tea": {"Tea"}, + ".tex": {"TeX"}, + ".textile": {"Textile"}, + ".tf": {"HCL"}, + ".thor": {"Ruby"}, + ".thrift": {"Thrift"}, + ".thy": {"Isabelle"}, + ".tla": {"TLA"}, + ".tm": {"Tcl"}, + ".tmCommand": {"XML"}, + ".tmLanguage": {"XML"}, + ".tmPreferences": {"XML"}, + ".tmSnippet": {"XML"}, + ".tmTheme": {"XML"}, + ".tmac": {"Roff"}, + ".tml": {"XML"}, + ".tmux": {"Shell"}, + ".toc": {"TeX", "World of Warcraft Addon Data"}, + ".toml": {"TOML"}, + ".tool": {"Shell"}, + ".topojson": {"JSON"}, + ".tpl": {"Smarty"}, + ".tpp": {"C++"}, + ".ts": {"TypeScript", "XML"}, + ".tst": {"GAP", "Scilab"}, + ".tsx": {"TypeScript", "XML"}, + ".ttl": {"Turtle"}, + ".tu": {"Turing"}, + ".twig": {"Twig"}, + ".txl": {"TXL"}, + ".txt": {"Text"}, + ".uc": {"UnrealScript"}, + ".udf": {"SQL"}, + ".udo": {"Csound"}, + ".ui": {"XML"}, + ".unity": {"Unity3D Asset"}, + ".uno": {"Uno"}, + ".upc": {"Unified Parallel C"}, + ".ur": {"UrWeb"}, + ".urdf": {"XML"}, + ".urs": {"UrWeb"}, + ".ux": {"XML"}, + ".v": {"Coq", "Verilog"}, + ".vala": {"Vala"}, + ".vapi": {"Vala"}, + ".vark": {"Gosu"}, + ".vb": {"Visual Basic"}, + ".vba": {"Visual Basic"}, + ".vbhtml": {"Visual Basic"}, + ".vbproj": {"XML"}, + ".vbs": {"Visual Basic"}, + ".vcl": {"VCL"}, + ".vcxproj": {"XML"}, + ".veo": {"Verilog"}, + ".vert": {"GLSL"}, + ".vh": {"SystemVerilog"}, + ".vhd": {"VHDL"}, + ".vhdl": {"VHDL"}, + ".vhf": {"VHDL"}, + ".vhi": {"VHDL"}, + ".vho": {"VHDL"}, + ".vhost": {"ApacheConf", "Nginx"}, + ".vhs": {"VHDL"}, + ".vht": {"VHDL"}, + ".vhw": {"VHDL"}, + ".view.lkml": {"LookML"}, + ".vim": {"Vim script"}, + ".viw": {"SQL"}, + ".volt": {"Volt"}, + ".vrx": {"GLSL"}, + ".vsh": {"GLSL"}, + ".vshader": {"GLSL"}, + ".vssettings": {"XML"}, + ".vue": {"Vue"}, + ".vxml": {"XML"}, + ".w": {"C"}, + ".watchr": {"Ruby"}, + ".webidl": {"WebIDL"}, + ".weechatlog": {"IRC log"}, + ".wiki": {"MediaWiki"}, + ".wisp": {"wisp"}, + ".wixproj": {"XML"}, + ".wl": {"Mathematica"}, + ".wlt": {"Mathematica"}, + ".wlua": {"Lua"}, + ".wsdl": {"XML"}, + ".wsf": {"XML"}, + ".wsgi": {"Python"}, + ".wxi": {"XML"}, + ".wxl": {"XML"}, + ".wxs": {"XML"}, + ".x": {"Logos"}, + ".x10": {"X10"}, + ".x3d": {"XML"}, + ".xacro": {"XML"}, + ".xaml": {"XML"}, + ".xc": {"XC"}, + ".xht": {"HTML"}, + ".xhtml": {"HTML"}, + ".xi": {"Logos"}, + ".xib": {"XML"}, + ".xlf": {"XML"}, + ".xliff": {"XML"}, + ".xm": {"Logos"}, + ".xmi": {"XML"}, + ".xml": {"XML"}, + ".xml.dist": {"XML"}, + ".xojo_code": {"Xojo"}, + ".xojo_menu": {"Xojo"}, + ".xojo_report": {"Xojo"}, + ".xojo_script": {"Xojo"}, + ".xojo_toolbar": {"Xojo"}, + ".xojo_window": {"Xojo"}, + ".xpl": {"XProc"}, + ".xproc": {"XProc"}, + ".xproj": {"XML"}, + ".xpy": {"Python"}, + ".xq": {"XQuery"}, + ".xql": {"XQuery"}, + ".xqm": {"XQuery"}, + ".xquery": {"XQuery"}, + ".xqy": {"XQuery"}, + ".xrl": {"Erlang"}, + ".xs": {"XS"}, + ".xsd": {"XML"}, + ".xsjs": {"JavaScript"}, + ".xsjslib": {"JavaScript"}, + ".xsl": {"XSLT"}, + ".xslt": {"XSLT"}, + ".xsp-config": {"XPages"}, + ".xsp.metadata": {"XPages"}, + ".xtend": {"Xtend"}, + ".xul": {"XML"}, + ".y": {"Yacc"}, + ".yacc": {"Yacc"}, + ".yaml": {"YAML"}, + ".yaml-tmlanguage": {"YAML"}, + ".yang": {"YANG"}, + ".yap": {"Prolog"}, + ".yml": {"YAML"}, + ".yml.mysql": {"YAML"}, + ".yrl": {"Erlang"}, + ".yy": {"Yacc"}, + ".zcml": {"XML"}, + ".zep": {"Zephir"}, + ".zimpl": {"Zimpl"}, + ".zmpl": {"Zimpl"}, + ".zone": {"DNS Zone"}, + ".zpl": {"Zimpl"}, + ".zsh": {"Shell"}, } From 665b7475e30be9fe56cfc026f7c9229fa1be78cd Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Wed, 5 Apr 2017 17:49:58 +0200 Subject: [PATCH 2/2] code generation move to internal/code-generator --- generate.go | 2 +- .../code-generator}/assets/languages.go.tmpl | 0 .../code-generator}/generator/generator.go | 0 .../code-generator}/generator/generator_test.go | 0 .../code-generator}/generator/langs.go | 0 .../generator/test_files/formated_languages.gold | 0 .../code-generator}/generator/test_files/languages.gold | 0 .../generator/test_files/languages.test.go.tmpl | 0 .../generator/test_files/languages.test.tmpl | 0 .../code-generator}/generator/test_files/languages.test.yml | 0 {cli/slinguist-generate => internal/code-generator}/main.go | 6 +++--- 11 files changed, 4 insertions(+), 4 deletions(-) rename {cli/slinguist-generate => internal/code-generator}/assets/languages.go.tmpl (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/generator.go (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/generator_test.go (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/langs.go (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/test_files/formated_languages.gold (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/test_files/languages.gold (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/test_files/languages.test.go.tmpl (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/test_files/languages.test.tmpl (100%) rename {cli/slinguist-generate => internal/code-generator}/generator/test_files/languages.test.yml (100%) rename {cli/slinguist-generate => internal/code-generator}/main.go (79%) diff --git a/generate.go b/generate.go index d4269b7..2cb7ea1 100644 --- a/generate.go +++ b/generate.go @@ -1,3 +1,3 @@ package slinguist -//go:generate go run cli/slinguist-generate/main.go +//go:generate go run internal/code-generator/main.go diff --git a/cli/slinguist-generate/assets/languages.go.tmpl b/internal/code-generator/assets/languages.go.tmpl similarity index 100% rename from cli/slinguist-generate/assets/languages.go.tmpl rename to internal/code-generator/assets/languages.go.tmpl diff --git a/cli/slinguist-generate/generator/generator.go b/internal/code-generator/generator/generator.go similarity index 100% rename from cli/slinguist-generate/generator/generator.go rename to internal/code-generator/generator/generator.go diff --git a/cli/slinguist-generate/generator/generator_test.go b/internal/code-generator/generator/generator_test.go similarity index 100% rename from cli/slinguist-generate/generator/generator_test.go rename to internal/code-generator/generator/generator_test.go diff --git a/cli/slinguist-generate/generator/langs.go b/internal/code-generator/generator/langs.go similarity index 100% rename from cli/slinguist-generate/generator/langs.go rename to internal/code-generator/generator/langs.go diff --git a/cli/slinguist-generate/generator/test_files/formated_languages.gold b/internal/code-generator/generator/test_files/formated_languages.gold similarity index 100% rename from cli/slinguist-generate/generator/test_files/formated_languages.gold rename to internal/code-generator/generator/test_files/formated_languages.gold diff --git a/cli/slinguist-generate/generator/test_files/languages.gold b/internal/code-generator/generator/test_files/languages.gold similarity index 100% rename from cli/slinguist-generate/generator/test_files/languages.gold rename to internal/code-generator/generator/test_files/languages.gold diff --git a/cli/slinguist-generate/generator/test_files/languages.test.go.tmpl b/internal/code-generator/generator/test_files/languages.test.go.tmpl similarity index 100% rename from cli/slinguist-generate/generator/test_files/languages.test.go.tmpl rename to internal/code-generator/generator/test_files/languages.test.go.tmpl diff --git a/cli/slinguist-generate/generator/test_files/languages.test.tmpl b/internal/code-generator/generator/test_files/languages.test.tmpl similarity index 100% rename from cli/slinguist-generate/generator/test_files/languages.test.tmpl rename to internal/code-generator/generator/test_files/languages.test.tmpl diff --git a/cli/slinguist-generate/generator/test_files/languages.test.yml b/internal/code-generator/generator/test_files/languages.test.yml similarity index 100% rename from cli/slinguist-generate/generator/test_files/languages.test.yml rename to internal/code-generator/generator/test_files/languages.test.yml diff --git a/cli/slinguist-generate/main.go b/internal/code-generator/main.go similarity index 79% rename from cli/slinguist-generate/main.go rename to internal/code-generator/main.go index 3e6b443..3dd69dc 100644 --- a/cli/slinguist-generate/main.go +++ b/internal/code-generator/main.go @@ -4,18 +4,18 @@ import ( "io/ioutil" "log" - "srcd.works/simple-linguist.v1/cli/slinguist-generate/generator" + "srcd.works/simple-linguist.v1/internal/code-generator/generator" ) const ( languagesYAML = ".linguist/lib/linguist/languages.yml" langFile = "languages.go" - languagesTmplPath = "cli/slinguist-generate/assets/languages.go.tmpl" + languagesTmplPath = "internal/code-generator/assets/languages.go.tmpl" languagesTmpl = "languages.go.tmpl" heuristicsRuby = ".linguist/lib/linguist/heuristics.rb" contentFile = "content.go" - contentTmplPath = "cli/slinguist-generate/assets/content.go.tmpl" + contentTmplPath = "internal/code-generator/assets/content.go.tmpl" contentTmpl = "content.go.tmpl" commitPath = ".git/refs/heads/master"