From 5d61ca93d8b517eba96293906cc29280dd9ec758 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Mon, 10 Apr 2017 12:39:35 +0200 Subject: [PATCH 1/7] changed langs.go to unmarshal on a languageInfo struct --- internal/code-generator/generator/langs.go | 57 ++++--------- languages.go | 96 +++++++++++----------- utils_test.go | 7 -- 3 files changed, 62 insertions(+), 98 deletions(-) diff --git a/internal/code-generator/generator/langs.go b/internal/code-generator/generator/langs.go index 07b6c29..7b972d3 100644 --- a/internal/code-generator/generator/langs.go +++ b/internal/code-generator/generator/langs.go @@ -2,7 +2,6 @@ package generator import ( "bytes" - "errors" "io" "strings" "text/template" @@ -10,19 +9,22 @@ import ( "gopkg.in/yaml.v2" ) -var ( - // ErrExtensionsNotFound is the error returned if data parsed doesn't contain extensions. - ErrExtensionsNotFound = errors.New("extensions not found") -) +type languageInfo struct { + Type string `yaml:"type,omitempty" json:"type,omitempty"` + Aliases []string `yaml:"aliases,omitempty,flow" json:"aliases,omitempty"` + Extensions []string `yaml:"extensions,omitempty,flow" json:"extensions,omitempty"` + Interpreters []string `yaml:"interpreters,omitempty,flow" json:"interpreters,omitempty"` + Group string `yaml:"group,omitempty" json:"group,omitempty"` +} // 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 { + languages := make(map[string]*languageInfo) + if err := yaml.Unmarshal(data, &languages); err != nil { return nil, err } - languagesByExtension, err := buildExtensionLanguageMap(yamlSlice) + languagesByExtension, err := buildExtensionLanguageMap(languages) if err != nil { return nil, err } @@ -35,48 +37,17 @@ func Languages(data []byte, languagesTmplPath, languagesTmplName, commit string) return buf.Bytes(), nil } -func buildExtensionLanguageMap(yamlSlice yaml.MapSlice) (map[string][]string, error) { +func buildExtensionLanguageMap(languages map[string]*languageInfo) (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 + for lang, info := range languages { + for _, extension := range info.Extensions { + extensionLangsMap[extension] = append(extensionLangsMap[extension], lang) } - - 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 }, diff --git a/languages.go b/languages.go index d7d9050..c0a698c 100644 --- a/languages.go +++ b/languages.go @@ -62,7 +62,7 @@ var languagesByExtension = map[string][]string{ ".arpa": {"DNS Zone"}, ".as": {"ActionScript"}, ".asax": {"ASP"}, - ".asc": {"AGS Script", "AsciiDoc", "Public Key"}, + ".asc": {"AsciiDoc", "AGS Script", "Public Key"}, ".asciidoc": {"AsciiDoc"}, ".ascx": {"ASP"}, ".asd": {"Common Lisp"}, @@ -87,15 +87,15 @@ var languagesByExtension = map[string][]string{ ".axml": {"XML"}, ".axs": {"NetLinx"}, ".axs.erb": {"NetLinx+ERB"}, - ".b": {"Brainfuck", "Limbo"}, + ".b": {"Limbo", "Brainfuck"}, ".bas": {"Visual Basic"}, ".bash": {"Shell"}, ".bat": {"Batchfile"}, ".bats": {"Shell"}, - ".bb": {"BitBake", "BlitzBasic"}, + ".bb": {"BlitzBasic", "BitBake"}, ".bbx": {"TeX"}, ".befunge": {"Befunge"}, - ".bf": {"Brainfuck", "HyPhy"}, + ".bf": {"HyPhy", "Brainfuck"}, ".bib": {"TeX"}, ".bison": {"Bison"}, ".blade": {"Blade"}, @@ -104,7 +104,7 @@ var languagesByExtension = map[string][]string{ ".bones": {"JavaScript"}, ".boo": {"Boo"}, ".boot": {"Clojure"}, - ".brd": {"Eagle", "KiCad"}, + ".brd": {"KiCad", "Eagle"}, ".bro": {"Bro"}, ".brs": {"Brightscript"}, ".bsl": {"1C Enterprise"}, @@ -117,7 +117,7 @@ var languagesByExtension = map[string][]string{ ".c++-objdump": {"Cpp-ObjDump"}, ".c++objdump": {"Cpp-ObjDump"}, ".c-objdump": {"C-ObjDump"}, - ".cake": {"C#", "CoffeeScript"}, + ".cake": {"CoffeeScript", "C#"}, ".capnp": {"Cap'n Proto"}, ".cats": {"C"}, ".cbl": {"COBOL"}, @@ -131,7 +131,7 @@ var languagesByExtension = map[string][]string{ ".cfg": {"INI"}, ".cfm": {"ColdFusion"}, ".cfml": {"ColdFusion"}, - ".cgi": {"Perl", "Python", "Shell"}, + ".cgi": {"Shell", "Python", "Perl"}, ".ch": {"Charity", "xBase"}, ".chem": {"Pic"}, ".chpl": {"Chapel"}, @@ -139,7 +139,7 @@ var languagesByExtension = map[string][]string{ ".cirru": {"Cirru"}, ".cjsx": {"CoffeeScript"}, ".ck": {"ChucK"}, - ".cl": {"Common Lisp", "Cool", "OpenCL"}, + ".cl": {"OpenCL", "Common Lisp", "Cool"}, ".cl2": {"Clojure"}, ".click": {"Click"}, ".clixml": {"XML"}, @@ -150,7 +150,7 @@ var languagesByExtension = map[string][]string{ ".cljscm": {"Clojure"}, ".cljx": {"Clojure"}, ".clp": {"CLIPS"}, - ".cls": {"Apex", "OpenEdge ABL", "TeX", "Visual Basic"}, + ".cls": {"TeX", "Apex", "OpenEdge ABL", "Visual Basic"}, ".clw": {"Clarion"}, ".cmake": {"CMake"}, ".cmake.in": {"CMake"}, @@ -189,7 +189,7 @@ var languagesByExtension = map[string][]string{ ".cxx": {"C++"}, ".cxx-objdump": {"Cpp-ObjDump"}, ".cy": {"Cycript"}, - ".d": {"D", "DTrace", "Makefile"}, + ".d": {"Makefile", "DTrace", "D"}, ".d-objdump": {"D-ObjDump"}, ".dae": {"COLLADA"}, ".darcspatch": {"Darcs Patch"}, @@ -229,7 +229,7 @@ var languagesByExtension = map[string][]string{ ".ebnf": {"EBNF"}, ".ebuild": {"Gentoo Ebuild"}, ".ec": {"eC"}, - ".ecl": {"ECL", "ECLiPSe"}, + ".ecl": {"ECLiPSe", "ECL"}, ".eclass": {"Gentoo Eclass"}, ".eclxml": {"ECL"}, ".ecr": {"HTML+ECR"}, @@ -257,7 +257,7 @@ var languagesByExtension = map[string][]string{ ".ex": {"Elixir"}, ".exs": {"Elixir"}, ".eye": {"Ruby"}, - ".f": {"Filebench WML", "Forth", "Fortran"}, + ".f": {"Fortran", "Filebench WML", "Forth"}, ".f03": {"Fortran"}, ".f08": {"Fortran"}, ".f77": {"Fortran"}, @@ -266,24 +266,24 @@ var languagesByExtension = map[string][]string{ ".factor": {"Factor"}, ".fan": {"Fantom"}, ".fancypack": {"Fancy"}, - ".fcgi": {"Lua", "PHP", "Perl", "Python", "Ruby", "Shell"}, + ".fcgi": {"Lua", "Shell", "PHP", "Python", "Perl", "Ruby"}, ".fea": {"OpenType Feature File"}, ".feature": {"Gherkin"}, ".filters": {"XML"}, ".fish": {"fish"}, ".flex": {"JFlex"}, ".flux": {"FLUX"}, - ".for": {"Formatted", "Forth", "Fortran"}, + ".for": {"Formatted", "Fortran", "Forth"}, ".forth": {"Forth"}, ".fp": {"GLSL"}, ".fpp": {"Fortran"}, - ".fr": {"Forth", "Frege", "Text"}, - ".frag": {"GLSL", "JavaScript"}, + ".fr": {"Text", "Frege", "Forth"}, + ".frag": {"JavaScript", "GLSL"}, ".frg": {"GLSL"}, ".frm": {"Visual Basic"}, ".frt": {"Forth"}, ".frx": {"Visual Basic"}, - ".fs": {"F#", "Filterscript", "Forth", "GLSL"}, + ".fs": {"Filterscript", "GLSL", "F#", "Forth"}, ".fsh": {"GLSL"}, ".fshader": {"GLSL"}, ".fsi": {"F#"}, @@ -292,7 +292,7 @@ var languagesByExtension = map[string][]string{ ".fth": {"Forth"}, ".ftl": {"FreeMarker"}, ".fun": {"Standard ML"}, - ".fx": {"FLUX", "HLSL"}, + ".fx": {"HLSL", "FLUX"}, ".fxh": {"HLSL"}, ".fxml": {"XML"}, ".fy": {"Fancy"}, @@ -302,7 +302,7 @@ var languagesByExtension = map[string][]string{ ".gawk": {"Awk"}, ".gco": {"G-code"}, ".gcode": {"G-code"}, - ".gd": {"GAP", "GDScript"}, + ".gd": {"GDScript", "GAP"}, ".gdb": {"GDB"}, ".gdbinit": {"GDB"}, ".gemspec": {"Ruby"}, @@ -315,7 +315,7 @@ var languagesByExtension = map[string][]string{ ".glf": {"Glyph"}, ".glsl": {"GLSL"}, ".glslv": {"GLSL"}, - ".gml": {"Game Maker Language", "Graph Modeling Language", "XML"}, + ".gml": {"Graph Modeling Language", "Game Maker Language", "XML"}, ".gms": {"GAMS"}, ".gn": {"GN"}, ".gni": {"GN"}, @@ -331,7 +331,7 @@ var languagesByExtension = map[string][]string{ ".groovy": {"Groovy"}, ".grt": {"Groovy"}, ".grxml": {"XML"}, - ".gs": {"Genie", "Gosu", "JavaScript"}, + ".gs": {"JavaScript", "Genie", "Gosu"}, ".gshader": {"GLSL"}, ".gsp": {"Groovy Server Pages"}, ".gst": {"Gosu"}, @@ -341,7 +341,7 @@ var languagesByExtension = map[string][]string{ ".gvy": {"Groovy"}, ".gyp": {"Python"}, ".gypi": {"Python"}, - ".h": {"C", "C++", "Objective-C"}, + ".h": {"C", "Objective-C", "C++"}, ".h++": {"C++"}, ".haml": {"Haml"}, ".haml.deface": {"Haml"}, @@ -378,7 +378,7 @@ var languagesByExtension = map[string][]string{ ".ik": {"Ioke"}, ".ily": {"LilyPond"}, ".iml": {"XML"}, - ".inc": {"Assembly", "C++", "HTML", "PAWN", "PHP", "POV-Ray SDL", "Pascal", "SQL", "SourcePawn"}, + ".inc": {"Assembly", "POV-Ray SDL", "HTML", "PHP", "PAWN", "Pascal", "C++", "SQL", "SourcePawn"}, ".ini": {"INI"}, ".inl": {"C++"}, ".ino": {"Arduino"}, @@ -425,7 +425,7 @@ var languagesByExtension = map[string][]string{ ".kt": {"Kotlin"}, ".ktm": {"Kotlin"}, ".kts": {"Kotlin"}, - ".l": {"Common Lisp", "Lex", "PicoLisp", "Roff"}, + ".l": {"Roff", "Common Lisp", "PicoLisp", "Lex"}, ".lagda": {"Literate Agda"}, ".las": {"Lasso"}, ".lasso": {"Lasso"}, @@ -446,7 +446,7 @@ var languagesByExtension = map[string][]string{ ".lid": {"Dylan"}, ".lidr": {"Idris"}, ".liquid": {"Liquid"}, - ".lisp": {"Common Lisp", "NewLisp"}, + ".lisp": {"NewLisp", "Common Lisp"}, ".litcoffee": {"Literate CoffeeScript"}, ".ll": {"LLVM"}, ".lmi": {"Python"}, @@ -454,15 +454,15 @@ var languagesByExtension = map[string][]string{ ".lol": {"LOLCODE"}, ".lookml": {"LookML"}, ".lpr": {"Pascal"}, - ".ls": {"LiveScript", "LoomScript"}, + ".ls": {"LoomScript", "LiveScript"}, ".lsl": {"LSL"}, ".lslp": {"LSL"}, - ".lsp": {"Common Lisp", "NewLisp"}, + ".lsp": {"NewLisp", "Common Lisp"}, ".ltx": {"TeX"}, ".lua": {"Lua"}, ".lvproj": {"LabVIEW"}, ".ly": {"LilyPond"}, - ".m": {"Limbo", "M", "MUF", "Mathematica", "Matlab", "Mercury", "Objective-C"}, + ".m": {"M", "Limbo", "Objective-C", "MUF", "Matlab", "Mercury", "Mathematica"}, ".m4": {"M4", "M4Sugar"}, ".ma": {"Mathematica"}, ".mak": {"Makefile"}, @@ -511,7 +511,7 @@ var languagesByExtension = map[string][]string{ ".mmk": {"Module Management System"}, ".mms": {"Module Management System"}, ".mo": {"Modelica"}, - ".mod": {"AMPL", "Linux Kernel Module", "Modula-2", "XML"}, + ".mod": {"Linux Kernel Module", "AMPL", "Modula-2", "XML"}, ".model.lkml": {"LookML"}, ".monkey": {"Monkey"}, ".moo": {"Mercury", "Moocode"}, @@ -519,7 +519,7 @@ var languagesByExtension = map[string][]string{ ".mq4": {"MQL4"}, ".mq5": {"MQL5"}, ".mqh": {"MQL4", "MQL5"}, - ".ms": {"MAXScript", "Roff", "Unix Assembly"}, + ".ms": {"Roff", "Unix Assembly", "MAXScript"}, ".mspec": {"Ruby"}, ".mss": {"CartoCSS"}, ".mt": {"Mathematica"}, @@ -533,10 +533,10 @@ var languagesByExtension = map[string][]string{ ".mxt": {"Max"}, ".mysql": {"SQL"}, ".myt": {"Myghty"}, - ".n": {"Nemerle", "Roff"}, + ".n": {"Roff", "Nemerle"}, ".nasm": {"Assembly"}, ".nawk": {"Awk"}, - ".nb": {"Mathematica", "Text"}, + ".nb": {"Text", "Mathematica"}, ".nbp": {"Mathematica"}, ".nc": {"nesC"}, ".ncl": {"NCL", "Text"}, @@ -549,7 +549,7 @@ var languagesByExtension = map[string][]string{ ".nix": {"Nix"}, ".njk": {"HTML+Django"}, ".njs": {"JavaScript"}, - ".nl": {"NL", "NewLisp"}, + ".nl": {"NewLisp", "NL"}, ".nlogo": {"NetLogo"}, ".no": {"Text"}, ".nproj": {"XML"}, @@ -604,7 +604,7 @@ var languagesByExtension = map[string][]string{ ".pde": {"Processing"}, ".perl": {"Perl"}, ".ph": {"Perl"}, - ".php": {"Hack", "PHP"}, + ".php": {"PHP", "Hack"}, ".php3": {"PHP"}, ".php4": {"PHP"}, ".php5": {"PHP"}, @@ -619,7 +619,7 @@ var languagesByExtension = map[string][]string{ ".pkgproj": {"XML"}, ".pkl": {"Pickle"}, ".pks": {"PLSQL"}, - ".pl": {"Perl", "Perl6", "Prolog"}, + ".pl": {"Prolog", "Perl", "Perl6"}, ".pl6": {"Perl6"}, ".plb": {"PLSQL"}, ".plist": {"XML"}, @@ -633,14 +633,14 @@ var languagesByExtension = map[string][]string{ ".pm6": {"Perl6"}, ".pmod": {"Pike"}, ".po": {"Gettext Catalog"}, - ".pod": {"Perl", "Pod"}, + ".pod": {"Pod", "Perl"}, ".podsl": {"Common Lisp"}, ".podspec": {"Ruby"}, ".pogo": {"PogoScript"}, ".pony": {"Pony"}, ".pot": {"Gettext Catalog"}, ".pov": {"POV-Ray SDL"}, - ".pp": {"Pascal", "Puppet"}, + ".pp": {"Puppet", "Pascal"}, ".pprx": {"REXX"}, ".prc": {"SQL"}, ".prefab": {"Unity3D Asset"}, @@ -678,7 +678,7 @@ var languagesByExtension = map[string][]string{ ".pyx": {"Cython"}, ".qbs": {"QML"}, ".qml": {"QML"}, - ".r": {"R", "Rebol"}, + ".r": {"Rebol", "R"}, ".r2": {"Rebol"}, ".r3": {"Rebol"}, ".rabl": {"Ruby"}, @@ -699,7 +699,7 @@ var languagesByExtension = map[string][]string{ ".rd": {"R"}, ".rdf": {"XML"}, ".rdoc": {"RDoc"}, - ".re": {"C++", "Reason"}, + ".re": {"Reason", "C++"}, ".reb": {"Rebol"}, ".rebol": {"Rebol"}, ".red": {"Red"}, @@ -727,7 +727,7 @@ var languagesByExtension = map[string][]string{ ".ron": {"Markdown"}, ".rpy": {"Python", "Ren'Py"}, ".rq": {"SPARQL"}, - ".rs": {"RenderScript", "Rust"}, + ".rs": {"Rust", "RenderScript"}, ".rs.in": {"Rust"}, ".rsc": {"Rascal"}, ".rsh": {"RenderScript"}, @@ -751,7 +751,7 @@ var languagesByExtension = map[string][]string{ ".scaml": {"Scaml"}, ".scd": {"SuperCollider"}, ".sce": {"Scilab"}, - ".sch": {"Eagle", "KiCad", "XML"}, + ".sch": {"KiCad", "Eagle", "XML"}, ".sci": {"Scilab"}, ".scm": {"Scheme"}, ".sco": {"Csound Score"}, @@ -774,7 +774,7 @@ var languagesByExtension = map[string][]string{ ".sl": {"Slash"}, ".sld": {"Scheme"}, ".slim": {"Slim"}, - ".sls": {"SaltStack", "Scheme"}, + ".sls": {"Scheme", "SaltStack"}, ".sma": {"SourcePawn"}, ".smali": {"Smali"}, ".sml": {"Standard ML"}, @@ -782,14 +782,14 @@ var languagesByExtension = map[string][]string{ ".smt2": {"SMT"}, ".sp": {"SourcePawn"}, ".sparql": {"SPARQL"}, - ".spec": {"Python", "RPM Spec", "Ruby"}, + ".spec": {"Python", "Ruby", "RPM Spec"}, ".spin": {"Propeller Spin"}, ".sps": {"Scheme"}, ".sqf": {"SQF"}, - ".sql": {"PLSQL", "PLpgSQL", "SQL", "SQLPL"}, + ".sql": {"PLpgSQL", "PLSQL", "SQL", "SQLPL"}, ".sra": {"PowerBuilder"}, ".srdf": {"XML"}, - ".srt": {"SRecode Template", "SubRip Text"}, + ".srt": {"SubRip Text", "SRecode Template"}, ".sru": {"PowerBuilder"}, ".srw": {"PowerBuilder"}, ".ss": {"Scheme"}, @@ -822,7 +822,7 @@ var languagesByExtension = map[string][]string{ ".svh": {"SystemVerilog"}, ".swift": {"Swift"}, ".syntax": {"YAML"}, - ".t": {"Perl", "Perl6", "Terra", "Turing"}, + ".t": {"Turing", "Perl", "Terra", "Perl6"}, ".tab": {"SQL"}, ".tac": {"Python"}, ".targets": {"XML"}, @@ -853,7 +853,7 @@ var languagesByExtension = map[string][]string{ ".tpl": {"Smarty"}, ".tpp": {"C++"}, ".ts": {"TypeScript", "XML"}, - ".tst": {"GAP", "Scilab"}, + ".tst": {"Scilab", "GAP"}, ".tsx": {"TypeScript", "XML"}, ".ttl": {"Turtle"}, ".tu": {"Turing"}, @@ -890,7 +890,7 @@ var languagesByExtension = map[string][]string{ ".vhf": {"VHDL"}, ".vhi": {"VHDL"}, ".vho": {"VHDL"}, - ".vhost": {"ApacheConf", "Nginx"}, + ".vhost": {"Nginx", "ApacheConf"}, ".vhs": {"VHDL"}, ".vht": {"VHDL"}, ".vhw": {"VHDL"}, diff --git a/utils_test.go b/utils_test.go index 28ba604..9bc1a45 100644 --- a/utils_test.go +++ b/utils_test.go @@ -21,13 +21,6 @@ func (s *TSuite) TestIsVendor(c *C) { func (s *TSuite) TestIsDocumentation(c *C) { c.Assert(IsDocumentation("foo"), Equals, false) c.Assert(IsDocumentation("README"), Equals, true) - c.Assert(IsDocumentation("samples/something"), Equals, true) - c.Assert(IsDocumentation("Docs/whatever"), Equals, true) - c.Assert(IsDocumentation("/javadoc/*"), Equals, true) - c.Assert(IsDocumentation("License"), Equals, true) - c.Assert(IsDocumentation("CONTRIBUTING.bar"), Equals, true) - c.Assert(IsDocumentation("/CHANGES"), Equals, true) - c.Assert(IsDocumentation("INSTALL"), Equals, true) } func (s *TSuite) TestIsConfiguration(c *C) { From ef3940355598e827177890c42f7af1e0cc8658a4 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Tue, 11 Apr 2017 11:26:23 +0200 Subject: [PATCH 2/7] added type.go generation --- extension_test.go | 2 +- internal/code-generator/assets/type.go.tmpl | 24 + .../generator/generator_test.go | 58 +++ internal/code-generator/generator/langs.go | 19 +- .../generator/test_files/formated_type.gold | 25 + .../generator/test_files/type.gold | 25 + .../generator/test_files/type.test.go.tmpl | 24 + .../generator/test_files/type.test.yml | 46 ++ internal/code-generator/generator/types.go | 55 +++ internal/code-generator/main.go | 35 +- languages.go | 100 ++-- type.go | 465 ++++++++++++++++++ type_test.go | 32 ++ 13 files changed, 836 insertions(+), 74 deletions(-) create mode 100644 internal/code-generator/assets/type.go.tmpl create mode 100644 internal/code-generator/generator/test_files/formated_type.gold create mode 100644 internal/code-generator/generator/test_files/type.gold create mode 100644 internal/code-generator/generator/test_files/type.test.go.tmpl create mode 100644 internal/code-generator/generator/test_files/type.test.yml create mode 100644 internal/code-generator/generator/types.go create mode 100644 type.go create mode 100644 type_test.go diff --git a/extension_test.go b/extension_test.go index 19fe110..653d460 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, "Hack") + c.Assert(lang, Equals, "PHP") c.Assert(safe, Equals, false) } diff --git a/internal/code-generator/assets/type.go.tmpl b/internal/code-generator/assets/type.go.tmpl new file mode 100644 index 0000000..aaa5282 --- /dev/null +++ b/internal/code-generator/assets/type.go.tmpl @@ -0,0 +1,24 @@ +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 }} + +const ( + TypeUnknown = iota + TypeData = iota + TypeProgramming = iota + TypeMarkup = iota + TypeProse = iota +) + +func GetLanguageType(language string) (langType int) { + langType, _ = languagesType[language] + return langType +} + +var languagesType = map[string]int{ + {{range $language, $type := . -}} + "{{ $language }}": {{ $type -}}, + {{end -}} +} diff --git a/internal/code-generator/generator/generator_test.go b/internal/code-generator/generator/generator_test.go index 28634eb..9584b1d 100644 --- a/internal/code-generator/generator/generator_test.go +++ b/internal/code-generator/generator/generator_test.go @@ -17,6 +17,7 @@ const ( formatedContentGold = "test_files/formated_content.gold" formatedVendorGold = "test_files/formated_vendor.gold" formatedDocumentationGold = "test_files/formated_documentation.gold" + formatedTypesGold = "test_files/formated_type.gold" // Languages test ymlTestFile = "test_files/languages.test.yml" @@ -41,6 +42,12 @@ const ( documentationGold = "test_files/documentation.gold" documentationTestTmplPath = "test_files/documentation.test.go.tmpl" documentationTestTmplName = "documentation.test.go.tmpl" + + // Types test + typesTestFile = "test_files/type.test.yml" + typesGold = "test_files/type.gold" + typesTestTmplPath = "test_files/type.test.go.tmpl" + typesTestTmplName = "type.test.go.tmpl" ) func TestFromFile(t *testing.T) { @@ -56,6 +63,9 @@ func TestFromFile(t *testing.T) { goldDocumentation, err := ioutil.ReadFile(formatedDocumentationGold) assert.NoError(t, err) + goldTypes, err := ioutil.ReadFile(formatedTypesGold) + assert.NoError(t, err) + outPathLang, err := ioutil.TempFile("/tmp", "generator-test-") assert.NoError(t, err) defer os.Remove(outPathLang.Name()) @@ -72,6 +82,10 @@ func TestFromFile(t *testing.T) { assert.NoError(t, err) defer os.Remove(outPathDocumentation.Name()) + outPathTypes, err := ioutil.TempFile("/tmp", "generator-test-") + assert.NoError(t, err) + defer os.Remove(outPathTypes.Name()) + tests := []struct { name string fileToParse string @@ -122,6 +136,16 @@ func TestFromFile(t *testing.T) { generate: Documentation, wantOut: goldDocumentation, }, + { + name: "tyTestFromFile_Types", + fileToParse: typesTestFile, + outPath: outPathTypes.Name(), + tmplPath: typesTestTmplPath, + tmplName: typesTestTmplName, + commit: commitTest, + generate: Types, + wantOut: goldTypes, + }, } for _, tt := range tests { @@ -270,3 +294,37 @@ func TestDocumentation(t *testing.T) { }) } } + +func TestTypes(t *testing.T) { + gold, err := ioutil.ReadFile(typesGold) + assert.NoError(t, err) + + input, err := ioutil.ReadFile(typesTestFile) + assert.NoError(t, err) + + tests := []struct { + name string + input []byte + tmplPath string + tmplName string + commit string + wantOut []byte + }{ + { + name: "TestTypes", + input: input, + tmplPath: typesTestTmplPath, + tmplName: typesTestTmplName, + commit: commitTest, + wantOut: gold, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + out, err := Types(tt.input, tt.tmplPath, tt.tmplName, tt.commit) + assert.NoError(t, err) + assert.EqualValues(t, tt.wantOut, out, fmt.Sprintf("Types() = %v, want %v", string(out), string(tt.wantOut))) + }) + } +} diff --git a/internal/code-generator/generator/langs.go b/internal/code-generator/generator/langs.go index 7b972d3..50c8084 100644 --- a/internal/code-generator/generator/langs.go +++ b/internal/code-generator/generator/langs.go @@ -10,11 +10,11 @@ import ( ) type languageInfo struct { - Type string `yaml:"type,omitempty" json:"type,omitempty"` - Aliases []string `yaml:"aliases,omitempty,flow" json:"aliases,omitempty"` - Extensions []string `yaml:"extensions,omitempty,flow" json:"extensions,omitempty"` - Interpreters []string `yaml:"interpreters,omitempty,flow" json:"interpreters,omitempty"` - Group string `yaml:"group,omitempty" json:"group,omitempty"` + Type string `yaml:"type,omitempty"` + Aliases []string `yaml:"aliases,omitempty,flow"` + Extensions []string `yaml:"extensions,omitempty,flow"` + Interpreters []string `yaml:"interpreters,omitempty,flow"` + Group string `yaml:"group,omitempty"` } // Languages reads from buf and builds languages.go file from languagesTmplPath. @@ -24,10 +24,7 @@ func Languages(data []byte, languagesTmplPath, languagesTmplName, commit string) return nil, err } - languagesByExtension, err := buildExtensionLanguageMap(languages) - if err != nil { - return nil, err - } + languagesByExtension := buildExtensionLanguageMap(languages) buf := &bytes.Buffer{} if err := executeLanguagesTemplate(buf, languagesByExtension, languagesTmplPath, languagesTmplName, commit); err != nil { @@ -37,7 +34,7 @@ func Languages(data []byte, languagesTmplPath, languagesTmplName, commit string) return buf.Bytes(), nil } -func buildExtensionLanguageMap(languages map[string]*languageInfo) (map[string][]string, error) { +func buildExtensionLanguageMap(languages map[string]*languageInfo) map[string][]string { extensionLangsMap := make(map[string][]string) for lang, info := range languages { for _, extension := range info.Extensions { @@ -45,7 +42,7 @@ func buildExtensionLanguageMap(languages map[string]*languageInfo) (map[string][ } } - return extensionLangsMap, nil + return extensionLangsMap } func executeLanguagesTemplate(out io.Writer, languagesByExtension map[string][]string, languagesTmplPath, languagesTmpl, commit string) error { diff --git a/internal/code-generator/generator/test_files/formated_type.gold b/internal/code-generator/generator/test_files/formated_type.gold new file mode 100644 index 0000000..6d0de86 --- /dev/null +++ b/internal/code-generator/generator/test_files/formated_type.gold @@ -0,0 +1,25 @@ +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 + +const ( + TypeUnknown = iota + TypeData = iota + TypeProgramming = iota + TypeMarkup = iota + TypeProse = iota +) + +func GetLanguageType(language string) (langType int) { + langType, _ = languagesType[language] + return langType +} + +var languagesType = map[string]int{ + "Scaml": TypeMarkup, + "Scheme": TypeProgramming, + "Scilab": TypeProgramming, + "Self": TypeProgramming, +} diff --git a/internal/code-generator/generator/test_files/type.gold b/internal/code-generator/generator/test_files/type.gold new file mode 100644 index 0000000..1ed18ba --- /dev/null +++ b/internal/code-generator/generator/test_files/type.gold @@ -0,0 +1,25 @@ +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 + +const ( + TypeUnknown = iota + TypeData = iota + TypeProgramming = iota + TypeMarkup = iota + TypeProse = iota +) + +func GetLanguageType(language string) (langType int) { + langType, _ = languagesType[language] + return langType +} + +var languagesType = map[string]int{ + "Scaml": TypeMarkup, + "Scheme": TypeProgramming, + "Scilab": TypeProgramming, + "Self": TypeProgramming, + } diff --git a/internal/code-generator/generator/test_files/type.test.go.tmpl b/internal/code-generator/generator/test_files/type.test.go.tmpl new file mode 100644 index 0000000..aaa5282 --- /dev/null +++ b/internal/code-generator/generator/test_files/type.test.go.tmpl @@ -0,0 +1,24 @@ +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 }} + +const ( + TypeUnknown = iota + TypeData = iota + TypeProgramming = iota + TypeMarkup = iota + TypeProse = iota +) + +func GetLanguageType(language string) (langType int) { + langType, _ = languagesType[language] + return langType +} + +var languagesType = map[string]int{ + {{range $language, $type := . -}} + "{{ $language }}": {{ $type -}}, + {{end -}} +} diff --git a/internal/code-generator/generator/test_files/type.test.yml b/internal/code-generator/generator/test_files/type.test.yml new file mode 100644 index 0000000..2167232 --- /dev/null +++ b/internal/code-generator/generator/test_files/type.test.yml @@ -0,0 +1,46 @@ +--- +Scaml: + group: HTML + type: markup + extensions: + - ".scaml" + tm_scope: source.scaml + ace_mode: text + language_id: 342 +Scheme: + type: programming + color: "#1e4aec" + extensions: + - ".scm" + - ".sld" + - ".sls" + - ".sps" + - ".ss" + interpreters: + - guile + - bigloo + - chicken + - csi + - gosh + - r6rs + ace_mode: scheme + codemirror_mode: scheme + codemirror_mime_type: text/x-scheme + language_id: 343 +Scilab: + type: programming + extensions: + - ".sci" + - ".sce" + - ".tst" + ace_mode: text + language_id: 344 +Self: + type: programming + color: "#0579aa" + extensions: + - ".self" + tm_scope: none + ace_mode: text + language_id: 345 + \ No newline at end of file diff --git a/internal/code-generator/generator/types.go b/internal/code-generator/generator/types.go new file mode 100644 index 0000000..be6fb70 --- /dev/null +++ b/internal/code-generator/generator/types.go @@ -0,0 +1,55 @@ +package generator + +import ( + "bytes" + "io" + "text/template" + + yaml "gopkg.in/yaml.v2" +) + +var typeToTypeConst = map[string]string{ + "data": "TypeData", + "programming": "TypeProgramming", + "markup": "TypeMarkup", + "prose": "TypeProse", +} + +// Types reads from buf and builds type.go file from typeTmplPath. +func Types(data []byte, typeTmplPath, typeTmplName, commit string) ([]byte, error) { + languages := make(map[string]*languageInfo) + if err := yaml.Unmarshal(data, &languages); err != nil { + return nil, err + } + + langTypeMap := buildLanguageTypeMap(languages) + + buf := &bytes.Buffer{} + if err := executeTypesTemplate(buf, langTypeMap, typeTmplPath, typeTmplName, commit); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +func buildLanguageTypeMap(languages map[string]*languageInfo) map[string]string { + langTypeMap := make(map[string]string) + for lang, info := range languages { + langTypeMap[lang] = typeToTypeConst[info.Type] + } + + return langTypeMap +} + +func executeTypesTemplate(out io.Writer, langTypeMap map[string]string, typeTmplPath, typeTmpl, commit string) error { + fmap := template.FuncMap{ + "getCommit": func() string { return commit }, + } + + t := template.Must(template.New(typeTmpl).Funcs(fmap).ParseFiles(typeTmplPath)) + if err := t.Execute(out, langTypeMap); err != nil { + return err + } + + return nil +} diff --git a/internal/code-generator/main.go b/internal/code-generator/main.go index 731a002..7e45c5d 100644 --- a/internal/code-generator/main.go +++ b/internal/code-generator/main.go @@ -28,29 +28,40 @@ const ( documentationTmplPath = "internal/code-generator/assets/documentation.go.tmpl" documentationTmpl = "documentation.go.tmpl" + typeFile = "type.go" + typeTmplPath = "internal/code-generator/assets/type.go.tmpl" + typeTmpl = "type.go.tmpl" + commitPath = ".git/refs/heads/master" ) +type generatorArgs struct { + fileToParse string + outPath string + tmplPath string + tmplName string + commit string + generate generator.Func +} + 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) + argsList := []*generatorArgs{ + &generatorArgs{languagesYAML, langFile, languagesTmplPath, languagesTmpl, commit, generator.Languages}, + &generatorArgs{heuristicsRuby, contentFile, contentTmplPath, contentTmpl, commit, generator.Heuristics}, + &generatorArgs{vendorYAML, vendorFile, vendorTmplPath, vendorTmpl, commit, generator.Vendor}, + &generatorArgs{documentationYAML, documentationFile, documentationTmplPath, documentationTmpl, commit, generator.Documentation}, + &generatorArgs{languagesYAML, typeFile, typeTmplPath, typeTmpl, commit, generator.Types}, } - if err := generator.FromFile(heuristicsRuby, contentFile, contentTmplPath, contentTmpl, commit, generator.Heuristics); err != nil { - log.Println(err) - } - - if err := generator.FromFile(vendorYAML, vendorFile, vendorTmplPath, vendorTmpl, commit, generator.Vendor); err != nil { - log.Println(err) - } - - if err := generator.FromFile(documentationYAML, documentationFile, documentationTmplPath, documentationTmpl, commit, generator.Documentation); err != nil { - log.Println(err) + for _, args := range argsList { + if err := generator.FromFile(args.fileToParse, args.outPath, args.tmplPath, args.tmplName, args.commit, args.generate); err != nil { + log.Println(err) + } } } diff --git a/languages.go b/languages.go index c0a698c..9f667da 100644 --- a/languages.go +++ b/languages.go @@ -62,7 +62,7 @@ var languagesByExtension = map[string][]string{ ".arpa": {"DNS Zone"}, ".as": {"ActionScript"}, ".asax": {"ASP"}, - ".asc": {"AsciiDoc", "AGS Script", "Public Key"}, + ".asc": {"AGS Script", "Public Key", "AsciiDoc"}, ".asciidoc": {"AsciiDoc"}, ".ascx": {"ASP"}, ".asd": {"Common Lisp"}, @@ -87,7 +87,7 @@ var languagesByExtension = map[string][]string{ ".axml": {"XML"}, ".axs": {"NetLinx"}, ".axs.erb": {"NetLinx+ERB"}, - ".b": {"Limbo", "Brainfuck"}, + ".b": {"Brainfuck", "Limbo"}, ".bas": {"Visual Basic"}, ".bash": {"Shell"}, ".bat": {"Batchfile"}, @@ -95,7 +95,7 @@ var languagesByExtension = map[string][]string{ ".bb": {"BlitzBasic", "BitBake"}, ".bbx": {"TeX"}, ".befunge": {"Befunge"}, - ".bf": {"HyPhy", "Brainfuck"}, + ".bf": {"Brainfuck", "HyPhy"}, ".bib": {"TeX"}, ".bison": {"Bison"}, ".blade": {"Blade"}, @@ -104,7 +104,7 @@ var languagesByExtension = map[string][]string{ ".bones": {"JavaScript"}, ".boo": {"Boo"}, ".boot": {"Clojure"}, - ".brd": {"KiCad", "Eagle"}, + ".brd": {"Eagle", "KiCad"}, ".bro": {"Bro"}, ".brs": {"Brightscript"}, ".bsl": {"1C Enterprise"}, @@ -117,7 +117,7 @@ var languagesByExtension = map[string][]string{ ".c++-objdump": {"Cpp-ObjDump"}, ".c++objdump": {"Cpp-ObjDump"}, ".c-objdump": {"C-ObjDump"}, - ".cake": {"CoffeeScript", "C#"}, + ".cake": {"C#", "CoffeeScript"}, ".capnp": {"Cap'n Proto"}, ".cats": {"C"}, ".cbl": {"COBOL"}, @@ -131,7 +131,7 @@ var languagesByExtension = map[string][]string{ ".cfg": {"INI"}, ".cfm": {"ColdFusion"}, ".cfml": {"ColdFusion"}, - ".cgi": {"Shell", "Python", "Perl"}, + ".cgi": {"Python", "Perl", "Shell"}, ".ch": {"Charity", "xBase"}, ".chem": {"Pic"}, ".chpl": {"Chapel"}, @@ -139,7 +139,7 @@ var languagesByExtension = map[string][]string{ ".cirru": {"Cirru"}, ".cjsx": {"CoffeeScript"}, ".ck": {"ChucK"}, - ".cl": {"OpenCL", "Common Lisp", "Cool"}, + ".cl": {"Common Lisp", "OpenCL", "Cool"}, ".cl2": {"Clojure"}, ".click": {"Click"}, ".clixml": {"XML"}, @@ -150,7 +150,7 @@ var languagesByExtension = map[string][]string{ ".cljscm": {"Clojure"}, ".cljx": {"Clojure"}, ".clp": {"CLIPS"}, - ".cls": {"TeX", "Apex", "OpenEdge ABL", "Visual Basic"}, + ".cls": {"Apex", "TeX", "Visual Basic", "OpenEdge ABL"}, ".clw": {"Clarion"}, ".cmake": {"CMake"}, ".cmake.in": {"CMake"}, @@ -161,7 +161,7 @@ var languagesByExtension = map[string][]string{ ".com": {"DIGITAL Command Language"}, ".command": {"Shell"}, ".coq": {"Coq"}, - ".cp": {"C++", "Component Pascal"}, + ".cp": {"Component Pascal", "C++"}, ".cpp": {"C++"}, ".cpp-objdump": {"Cpp-ObjDump"}, ".cppobjdump": {"Cpp-ObjDump"}, @@ -189,7 +189,7 @@ var languagesByExtension = map[string][]string{ ".cxx": {"C++"}, ".cxx-objdump": {"Cpp-ObjDump"}, ".cy": {"Cycript"}, - ".d": {"Makefile", "DTrace", "D"}, + ".d": {"Makefile", "D", "DTrace"}, ".d-objdump": {"D-ObjDump"}, ".dae": {"COLLADA"}, ".darcspatch": {"Darcs Patch"}, @@ -229,7 +229,7 @@ var languagesByExtension = map[string][]string{ ".ebnf": {"EBNF"}, ".ebuild": {"Gentoo Ebuild"}, ".ec": {"eC"}, - ".ecl": {"ECLiPSe", "ECL"}, + ".ecl": {"ECL", "ECLiPSe"}, ".eclass": {"Gentoo Eclass"}, ".eclxml": {"ECL"}, ".ecr": {"HTML+ECR"}, @@ -251,13 +251,13 @@ var languagesByExtension = map[string][]string{ ".erb": {"HTML+ERB"}, ".erb.deface": {"HTML+ERB"}, ".erl": {"Erlang"}, - ".es": {"Erlang", "JavaScript"}, + ".es": {"JavaScript", "Erlang"}, ".es6": {"JavaScript"}, ".escript": {"Erlang"}, ".ex": {"Elixir"}, ".exs": {"Elixir"}, ".eye": {"Ruby"}, - ".f": {"Fortran", "Filebench WML", "Forth"}, + ".f": {"Fortran", "Forth", "Filebench WML"}, ".f03": {"Fortran"}, ".f08": {"Fortran"}, ".f77": {"Fortran"}, @@ -266,24 +266,24 @@ var languagesByExtension = map[string][]string{ ".factor": {"Factor"}, ".fan": {"Fantom"}, ".fancypack": {"Fancy"}, - ".fcgi": {"Lua", "Shell", "PHP", "Python", "Perl", "Ruby"}, + ".fcgi": {"PHP", "Python", "Perl", "Shell", "Ruby", "Lua"}, ".fea": {"OpenType Feature File"}, ".feature": {"Gherkin"}, ".filters": {"XML"}, ".fish": {"fish"}, ".flex": {"JFlex"}, ".flux": {"FLUX"}, - ".for": {"Formatted", "Fortran", "Forth"}, + ".for": {"Fortran", "Formatted", "Forth"}, ".forth": {"Forth"}, ".fp": {"GLSL"}, ".fpp": {"Fortran"}, - ".fr": {"Text", "Frege", "Forth"}, + ".fr": {"Forth", "Frege", "Text"}, ".frag": {"JavaScript", "GLSL"}, ".frg": {"GLSL"}, ".frm": {"Visual Basic"}, ".frt": {"Forth"}, ".frx": {"Visual Basic"}, - ".fs": {"Filterscript", "GLSL", "F#", "Forth"}, + ".fs": {"F#", "Forth", "Filterscript", "GLSL"}, ".fsh": {"GLSL"}, ".fshader": {"GLSL"}, ".fsi": {"F#"}, @@ -302,7 +302,7 @@ var languagesByExtension = map[string][]string{ ".gawk": {"Awk"}, ".gco": {"G-code"}, ".gcode": {"G-code"}, - ".gd": {"GDScript", "GAP"}, + ".gd": {"GAP", "GDScript"}, ".gdb": {"GDB"}, ".gdbinit": {"GDB"}, ".gemspec": {"Ruby"}, @@ -315,7 +315,7 @@ var languagesByExtension = map[string][]string{ ".glf": {"Glyph"}, ".glsl": {"GLSL"}, ".glslv": {"GLSL"}, - ".gml": {"Graph Modeling Language", "Game Maker Language", "XML"}, + ".gml": {"XML", "Graph Modeling Language", "Game Maker Language"}, ".gms": {"GAMS"}, ".gn": {"GN"}, ".gni": {"GN"}, @@ -341,7 +341,7 @@ var languagesByExtension = map[string][]string{ ".gvy": {"Groovy"}, ".gyp": {"Python"}, ".gypi": {"Python"}, - ".h": {"C", "Objective-C", "C++"}, + ".h": {"C++", "C", "Objective-C"}, ".h++": {"C++"}, ".haml": {"Haml"}, ".haml.deface": {"Haml"}, @@ -350,7 +350,7 @@ var languagesByExtension = map[string][]string{ ".hb": {"Harbour"}, ".hbs": {"Handlebars"}, ".hcl": {"HCL"}, - ".hh": {"C++", "Hack"}, + ".hh": {"Hack", "C++"}, ".hic": {"Clojure"}, ".hlean": {"Lean"}, ".hlsl": {"HLSL"}, @@ -378,7 +378,7 @@ var languagesByExtension = map[string][]string{ ".ik": {"Ioke"}, ".ily": {"LilyPond"}, ".iml": {"XML"}, - ".inc": {"Assembly", "POV-Ray SDL", "HTML", "PHP", "PAWN", "Pascal", "C++", "SQL", "SourcePawn"}, + ".inc": {"PHP", "Assembly", "HTML", "POV-Ray SDL", "SQL", "Pascal", "C++", "SourcePawn", "PAWN"}, ".ini": {"INI"}, ".inl": {"C++"}, ".ino": {"Arduino"}, @@ -392,7 +392,7 @@ var languagesByExtension = map[string][]string{ ".irclog": {"IRC log"}, ".iss": {"Inno Setup"}, ".ivy": {"XML"}, - ".j": {"Jasmin", "Objective-J"}, + ".j": {"Objective-J", "Jasmin"}, ".jade": {"Pug"}, ".jake": {"JavaScript"}, ".java": {"Java"}, @@ -425,7 +425,7 @@ var languagesByExtension = map[string][]string{ ".kt": {"Kotlin"}, ".ktm": {"Kotlin"}, ".kts": {"Kotlin"}, - ".l": {"Roff", "Common Lisp", "PicoLisp", "Lex"}, + ".l": {"Common Lisp", "Roff", "PicoLisp", "Lex"}, ".lagda": {"Literate Agda"}, ".las": {"Lasso"}, ".lasso": {"Lasso"}, @@ -454,7 +454,7 @@ var languagesByExtension = map[string][]string{ ".lol": {"LOLCODE"}, ".lookml": {"LookML"}, ".lpr": {"Pascal"}, - ".ls": {"LoomScript", "LiveScript"}, + ".ls": {"LiveScript", "LoomScript"}, ".lsl": {"LSL"}, ".lslp": {"LSL"}, ".lsp": {"NewLisp", "Common Lisp"}, @@ -462,8 +462,8 @@ var languagesByExtension = map[string][]string{ ".lua": {"Lua"}, ".lvproj": {"LabVIEW"}, ".ly": {"LilyPond"}, - ".m": {"M", "Limbo", "Objective-C", "MUF", "Matlab", "Mercury", "Mathematica"}, - ".m4": {"M4", "M4Sugar"}, + ".m": {"Matlab", "M", "Limbo", "Objective-C", "Mathematica", "MUF", "Mercury"}, + ".m4": {"M4Sugar", "M4"}, ".ma": {"Mathematica"}, ".mak": {"Makefile"}, ".make": {"Makefile"}, @@ -483,7 +483,7 @@ var languagesByExtension = map[string][]string{ ".maxpat": {"Max"}, ".maxproj": {"Max"}, ".mcr": {"MAXScript"}, - ".md": {"GCC Machine Description", "Markdown"}, + ".md": {"Markdown", "GCC Machine Description"}, ".mdown": {"Markdown"}, ".mdpolicy": {"XML"}, ".mdwn": {"Markdown"}, @@ -507,19 +507,19 @@ var languagesByExtension = map[string][]string{ ".mli": {"OCaml"}, ".mll": {"OCaml"}, ".mly": {"OCaml"}, - ".mm": {"Objective-C++", "XML"}, + ".mm": {"XML", "Objective-C++"}, ".mmk": {"Module Management System"}, ".mms": {"Module Management System"}, ".mo": {"Modelica"}, - ".mod": {"Linux Kernel Module", "AMPL", "Modula-2", "XML"}, + ".mod": {"XML", "Modula-2", "AMPL", "Linux Kernel Module"}, ".model.lkml": {"LookML"}, ".monkey": {"Monkey"}, - ".moo": {"Mercury", "Moocode"}, + ".moo": {"Moocode", "Mercury"}, ".moon": {"MoonScript"}, ".mq4": {"MQL4"}, ".mq5": {"MQL5"}, - ".mqh": {"MQL4", "MQL5"}, - ".ms": {"Roff", "Unix Assembly", "MAXScript"}, + ".mqh": {"MQL5", "MQL4"}, + ".ms": {"Unix Assembly", "Roff", "MAXScript"}, ".mspec": {"Ruby"}, ".mss": {"CartoCSS"}, ".mt": {"Mathematica"}, @@ -533,7 +533,7 @@ var languagesByExtension = map[string][]string{ ".mxt": {"Max"}, ".mysql": {"SQL"}, ".myt": {"Myghty"}, - ".n": {"Roff", "Nemerle"}, + ".n": {"Nemerle", "Roff"}, ".nasm": {"Assembly"}, ".nawk": {"Awk"}, ".nb": {"Text", "Mathematica"}, @@ -619,7 +619,7 @@ var languagesByExtension = map[string][]string{ ".pkgproj": {"XML"}, ".pkl": {"Pickle"}, ".pks": {"PLSQL"}, - ".pl": {"Prolog", "Perl", "Perl6"}, + ".pl": {"Perl", "Perl6", "Prolog"}, ".pl6": {"Perl6"}, ".plb": {"PLSQL"}, ".plist": {"XML"}, @@ -627,13 +627,13 @@ var languagesByExtension = map[string][]string{ ".pls": {"PLSQL"}, ".plsql": {"PLSQL"}, ".plt": {"Gnuplot"}, - ".pluginspec": {"Ruby", "XML"}, + ".pluginspec": {"XML", "Ruby"}, ".plx": {"Perl"}, ".pm": {"Perl", "Perl6"}, ".pm6": {"Perl6"}, ".pmod": {"Pike"}, ".po": {"Gettext Catalog"}, - ".pod": {"Pod", "Perl"}, + ".pod": {"Perl", "Pod"}, ".podsl": {"Common Lisp"}, ".podspec": {"Ruby"}, ".pogo": {"PogoScript"}, @@ -647,7 +647,7 @@ var languagesByExtension = map[string][]string{ ".prefs": {"INI"}, ".prg": {"xBase"}, ".pri": {"QMake"}, - ".pro": {"IDL", "INI", "Prolog", "QMake"}, + ".pro": {"IDL", "QMake", "INI", "Prolog"}, ".prolog": {"Prolog"}, ".properties": {"INI"}, ".props": {"XML"}, @@ -727,7 +727,7 @@ var languagesByExtension = map[string][]string{ ".ron": {"Markdown"}, ".rpy": {"Python", "Ren'Py"}, ".rq": {"SPARQL"}, - ".rs": {"Rust", "RenderScript"}, + ".rs": {"RenderScript", "Rust"}, ".rs.in": {"Rust"}, ".rsc": {"Rascal"}, ".rsh": {"RenderScript"}, @@ -751,7 +751,7 @@ var languagesByExtension = map[string][]string{ ".scaml": {"Scaml"}, ".scd": {"SuperCollider"}, ".sce": {"Scilab"}, - ".sch": {"KiCad", "Eagle", "XML"}, + ".sch": {"XML", "Eagle", "KiCad"}, ".sci": {"Scilab"}, ".scm": {"Scheme"}, ".sco": {"Csound Score"}, @@ -774,7 +774,7 @@ var languagesByExtension = map[string][]string{ ".sl": {"Slash"}, ".sld": {"Scheme"}, ".slim": {"Slim"}, - ".sls": {"Scheme", "SaltStack"}, + ".sls": {"SaltStack", "Scheme"}, ".sma": {"SourcePawn"}, ".smali": {"Smali"}, ".sml": {"Standard ML"}, @@ -786,15 +786,15 @@ var languagesByExtension = map[string][]string{ ".spin": {"Propeller Spin"}, ".sps": {"Scheme"}, ".sqf": {"SQF"}, - ".sql": {"PLpgSQL", "PLSQL", "SQL", "SQLPL"}, + ".sql": {"SQLPL", "SQL", "PLpgSQL", "PLSQL"}, ".sra": {"PowerBuilder"}, ".srdf": {"XML"}, - ".srt": {"SubRip Text", "SRecode Template"}, + ".srt": {"SRecode Template", "SubRip Text"}, ".sru": {"PowerBuilder"}, ".srw": {"PowerBuilder"}, ".ss": {"Scheme"}, ".ssjs": {"JavaScript"}, - ".st": {"HTML", "Smalltalk"}, + ".st": {"Smalltalk", "HTML"}, ".stTheme": {"XML"}, ".stan": {"Stan"}, ".sthlp": {"Stata"}, @@ -822,7 +822,7 @@ var languagesByExtension = map[string][]string{ ".svh": {"SystemVerilog"}, ".swift": {"Swift"}, ".syntax": {"YAML"}, - ".t": {"Turing", "Perl", "Terra", "Perl6"}, + ".t": {"Turing", "Perl", "Perl6", "Terra"}, ".tab": {"SQL"}, ".tac": {"Python"}, ".targets": {"XML"}, @@ -846,15 +846,15 @@ var languagesByExtension = map[string][]string{ ".tmac": {"Roff"}, ".tml": {"XML"}, ".tmux": {"Shell"}, - ".toc": {"TeX", "World of Warcraft Addon Data"}, + ".toc": {"World of Warcraft Addon Data", "TeX"}, ".toml": {"TOML"}, ".tool": {"Shell"}, ".topojson": {"JSON"}, ".tpl": {"Smarty"}, ".tpp": {"C++"}, - ".ts": {"TypeScript", "XML"}, - ".tst": {"Scilab", "GAP"}, - ".tsx": {"TypeScript", "XML"}, + ".ts": {"XML", "TypeScript"}, + ".tst": {"GAP", "Scilab"}, + ".tsx": {"XML", "TypeScript"}, ".ttl": {"Turtle"}, ".tu": {"Turing"}, ".twig": {"Twig"}, @@ -890,7 +890,7 @@ var languagesByExtension = map[string][]string{ ".vhf": {"VHDL"}, ".vhi": {"VHDL"}, ".vho": {"VHDL"}, - ".vhost": {"Nginx", "ApacheConf"}, + ".vhost": {"ApacheConf", "Nginx"}, ".vhs": {"VHDL"}, ".vht": {"VHDL"}, ".vhw": {"VHDL"}, diff --git a/type.go b/type.go new file mode 100644 index 0000000..1e4fa58 --- /dev/null +++ b/type.go @@ -0,0 +1,465 @@ +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: dae33dc2b20cddc85d1300435c3be7118a7115a9 + +const ( + TypeUnknown = iota + TypeData = iota + TypeProgramming = iota + TypeMarkup = iota + TypeProse = iota +) + +func GetLanguageType(language string) (langType int) { + langType, _ = languagesType[language] + return langType +} + +var languagesType = map[string]int{ + "1C Enterprise": TypeProgramming, + "ABAP": TypeProgramming, + "ABNF": TypeData, + "AGS Script": TypeProgramming, + "AMPL": TypeProgramming, + "ANTLR": TypeProgramming, + "API Blueprint": TypeMarkup, + "APL": TypeProgramming, + "ASN.1": TypeData, + "ASP": TypeProgramming, + "ATS": TypeProgramming, + "ActionScript": TypeProgramming, + "Ada": TypeProgramming, + "Agda": TypeProgramming, + "Alloy": TypeProgramming, + "Alpine Abuild": TypeProgramming, + "Ant Build System": TypeData, + "ApacheConf": TypeMarkup, + "Apex": TypeProgramming, + "Apollo Guidance Computer": TypeProgramming, + "AppleScript": TypeProgramming, + "Arc": TypeProgramming, + "Arduino": TypeProgramming, + "AsciiDoc": TypeProse, + "AspectJ": TypeProgramming, + "Assembly": TypeProgramming, + "Augeas": TypeProgramming, + "AutoHotkey": TypeProgramming, + "AutoIt": TypeProgramming, + "Awk": TypeProgramming, + "Batchfile": TypeProgramming, + "Befunge": TypeProgramming, + "Bison": TypeProgramming, + "BitBake": TypeProgramming, + "Blade": TypeMarkup, + "BlitzBasic": TypeProgramming, + "BlitzMax": TypeProgramming, + "Bluespec": TypeProgramming, + "Boo": TypeProgramming, + "Brainfuck": TypeProgramming, + "Brightscript": TypeProgramming, + "Bro": TypeProgramming, + "C": TypeProgramming, + "C#": TypeProgramming, + "C++": TypeProgramming, + "C-ObjDump": TypeData, + "C2hs Haskell": TypeProgramming, + "CLIPS": TypeProgramming, + "CMake": TypeProgramming, + "COBOL": TypeProgramming, + "COLLADA": TypeData, + "CSON": TypeData, + "CSS": TypeMarkup, + "CSV": TypeData, + "Cap'n Proto": TypeProgramming, + "CartoCSS": TypeProgramming, + "Ceylon": TypeProgramming, + "Chapel": TypeProgramming, + "Charity": TypeProgramming, + "ChucK": TypeProgramming, + "Cirru": TypeProgramming, + "Clarion": TypeProgramming, + "Clean": TypeProgramming, + "Click": TypeProgramming, + "Clojure": TypeProgramming, + "CoffeeScript": TypeProgramming, + "ColdFusion": TypeProgramming, + "ColdFusion CFC": TypeProgramming, + "Common Lisp": TypeProgramming, + "Component Pascal": TypeProgramming, + "Cool": TypeProgramming, + "Coq": TypeProgramming, + "Cpp-ObjDump": TypeData, + "Creole": TypeProse, + "Crystal": TypeProgramming, + "Csound": TypeProgramming, + "Csound Document": TypeProgramming, + "Csound Score": TypeProgramming, + "Cuda": TypeProgramming, + "Cycript": TypeProgramming, + "Cython": TypeProgramming, + "D": TypeProgramming, + "D-ObjDump": TypeData, + "DIGITAL Command Language": TypeProgramming, + "DM": TypeProgramming, + "DNS Zone": TypeData, + "DTrace": TypeProgramming, + "Darcs Patch": TypeData, + "Dart": TypeProgramming, + "Diff": TypeData, + "Dockerfile": TypeData, + "Dogescript": TypeProgramming, + "Dylan": TypeProgramming, + "E": TypeProgramming, + "EBNF": TypeData, + "ECL": TypeProgramming, + "ECLiPSe": TypeProgramming, + "EJS": TypeMarkup, + "EQ": TypeProgramming, + "Eagle": TypeMarkup, + "Ecere Projects": TypeData, + "Eiffel": TypeProgramming, + "Elixir": TypeProgramming, + "Elm": TypeProgramming, + "Emacs Lisp": TypeProgramming, + "EmberScript": TypeProgramming, + "Erlang": TypeProgramming, + "F#": TypeProgramming, + "FLUX": TypeProgramming, + "Factor": TypeProgramming, + "Fancy": TypeProgramming, + "Fantom": TypeProgramming, + "Filebench WML": TypeProgramming, + "Filterscript": TypeProgramming, + "Formatted": TypeData, + "Forth": TypeProgramming, + "Fortran": TypeProgramming, + "FreeMarker": TypeProgramming, + "Frege": TypeProgramming, + "G-code": TypeData, + "GAMS": TypeProgramming, + "GAP": TypeProgramming, + "GCC Machine Description": TypeProgramming, + "GDB": TypeProgramming, + "GDScript": TypeProgramming, + "GLSL": TypeProgramming, + "GN": TypeData, + "Game Maker Language": TypeProgramming, + "Genie": TypeProgramming, + "Genshi": TypeProgramming, + "Gentoo Ebuild": TypeProgramming, + "Gentoo Eclass": TypeProgramming, + "Gettext Catalog": TypeProse, + "Gherkin": TypeProgramming, + "Glyph": TypeProgramming, + "Gnuplot": TypeProgramming, + "Go": TypeProgramming, + "Golo": TypeProgramming, + "Gosu": TypeProgramming, + "Grace": TypeProgramming, + "Gradle": TypeData, + "Grammatical Framework": TypeProgramming, + "Graph Modeling Language": TypeData, + "GraphQL": TypeData, + "Graphviz (DOT)": TypeData, + "Groovy": TypeProgramming, + "Groovy Server Pages": TypeProgramming, + "HCL": TypeProgramming, + "HLSL": TypeProgramming, + "HTML": TypeMarkup, + "HTML+Django": TypeMarkup, + "HTML+ECR": TypeMarkup, + "HTML+EEX": TypeMarkup, + "HTML+ERB": TypeMarkup, + "HTML+PHP": TypeMarkup, + "HTTP": TypeData, + "Hack": TypeProgramming, + "Haml": TypeMarkup, + "Handlebars": TypeMarkup, + "Harbour": TypeProgramming, + "Haskell": TypeProgramming, + "Haxe": TypeProgramming, + "Hy": TypeProgramming, + "HyPhy": TypeProgramming, + "IDL": TypeProgramming, + "IGOR Pro": TypeProgramming, + "INI": TypeData, + "IRC log": TypeData, + "Idris": TypeProgramming, + "Inform 7": TypeProgramming, + "Inno Setup": TypeProgramming, + "Io": TypeProgramming, + "Ioke": TypeProgramming, + "Isabelle": TypeProgramming, + "Isabelle ROOT": TypeProgramming, + "J": TypeProgramming, + "JFlex": TypeProgramming, + "JSON": TypeData, + "JSON5": TypeData, + "JSONLD": TypeData, + "JSONiq": TypeProgramming, + "JSX": TypeProgramming, + "Jasmin": TypeProgramming, + "Java": TypeProgramming, + "Java Server Pages": TypeProgramming, + "JavaScript": TypeProgramming, + "Jison": TypeProgramming, + "Jison Lex": TypeProgramming, + "Julia": TypeProgramming, + "Jupyter Notebook": TypeMarkup, + "KRL": TypeProgramming, + "KiCad": TypeProgramming, + "Kit": TypeMarkup, + "Kotlin": TypeProgramming, + "LFE": TypeProgramming, + "LLVM": TypeProgramming, + "LOLCODE": TypeProgramming, + "LSL": TypeProgramming, + "LabVIEW": TypeProgramming, + "Lasso": TypeProgramming, + "Latte": TypeMarkup, + "Lean": TypeProgramming, + "Less": TypeMarkup, + "Lex": TypeProgramming, + "LilyPond": TypeProgramming, + "Limbo": TypeProgramming, + "Linker Script": TypeData, + "Linux Kernel Module": TypeData, + "Liquid": TypeMarkup, + "Literate Agda": TypeProgramming, + "Literate CoffeeScript": TypeProgramming, + "Literate Haskell": TypeProgramming, + "LiveScript": TypeProgramming, + "Logos": TypeProgramming, + "Logtalk": TypeProgramming, + "LookML": TypeProgramming, + "LoomScript": TypeProgramming, + "Lua": TypeProgramming, + "M": TypeProgramming, + "M4": TypeProgramming, + "M4Sugar": TypeProgramming, + "MAXScript": TypeProgramming, + "MQL4": TypeProgramming, + "MQL5": TypeProgramming, + "MTML": TypeMarkup, + "MUF": TypeProgramming, + "Makefile": TypeProgramming, + "Mako": TypeProgramming, + "Markdown": TypeProse, + "Marko": TypeMarkup, + "Mask": TypeMarkup, + "Mathematica": TypeProgramming, + "Matlab": TypeProgramming, + "Maven POM": TypeData, + "Max": TypeProgramming, + "MediaWiki": TypeProse, + "Mercury": TypeProgramming, + "Meson": TypeProgramming, + "Metal": TypeProgramming, + "MiniD": TypeProgramming, + "Mirah": TypeProgramming, + "Modelica": TypeProgramming, + "Modula-2": TypeProgramming, + "Module Management System": TypeProgramming, + "Monkey": TypeProgramming, + "Moocode": TypeProgramming, + "MoonScript": TypeProgramming, + "Myghty": TypeProgramming, + "NCL": TypeProgramming, + "NL": TypeData, + "NSIS": TypeProgramming, + "Nemerle": TypeProgramming, + "NetLinx": TypeProgramming, + "NetLinx+ERB": TypeProgramming, + "NetLogo": TypeProgramming, + "NewLisp": TypeProgramming, + "Nginx": TypeMarkup, + "Nim": TypeProgramming, + "Ninja": TypeData, + "Nit": TypeProgramming, + "Nix": TypeProgramming, + "Nu": TypeProgramming, + "NumPy": TypeProgramming, + "OCaml": TypeProgramming, + "ObjDump": TypeData, + "Objective-C": TypeProgramming, + "Objective-C++": TypeProgramming, + "Objective-J": TypeProgramming, + "Omgrofl": TypeProgramming, + "Opa": TypeProgramming, + "Opal": TypeProgramming, + "OpenCL": TypeProgramming, + "OpenEdge ABL": TypeProgramming, + "OpenRC runscript": TypeProgramming, + "OpenSCAD": TypeProgramming, + "OpenType Feature File": TypeData, + "Org": TypeProse, + "Ox": TypeProgramming, + "Oxygene": TypeProgramming, + "Oz": TypeProgramming, + "P4": TypeProgramming, + "PAWN": TypeProgramming, + "PHP": TypeProgramming, + "PLSQL": TypeProgramming, + "PLpgSQL": TypeProgramming, + "POV-Ray SDL": TypeProgramming, + "Pan": TypeProgramming, + "Papyrus": TypeProgramming, + "Parrot": TypeProgramming, + "Parrot Assembly": TypeProgramming, + "Parrot Internal Representation": TypeProgramming, + "Pascal": TypeProgramming, + "Perl": TypeProgramming, + "Perl6": TypeProgramming, + "Pic": TypeMarkup, + "Pickle": TypeData, + "PicoLisp": TypeProgramming, + "PigLatin": TypeProgramming, + "Pike": TypeProgramming, + "Pod": TypeProse, + "PogoScript": TypeProgramming, + "Pony": TypeProgramming, + "PostScript": TypeMarkup, + "PowerBuilder": TypeProgramming, + "PowerShell": TypeProgramming, + "Processing": TypeProgramming, + "Prolog": TypeProgramming, + "Propeller Spin": TypeProgramming, + "Protocol Buffer": TypeMarkup, + "Public Key": TypeData, + "Pug": TypeMarkup, + "Puppet": TypeProgramming, + "Pure Data": TypeProgramming, + "PureBasic": TypeProgramming, + "PureScript": TypeProgramming, + "Python": TypeProgramming, + "Python console": TypeProgramming, + "Python traceback": TypeData, + "QML": TypeProgramming, + "QMake": TypeProgramming, + "R": TypeProgramming, + "RAML": TypeMarkup, + "RDoc": TypeProse, + "REALbasic": TypeProgramming, + "REXX": TypeProgramming, + "RHTML": TypeMarkup, + "RMarkdown": TypeProse, + "RPM Spec": TypeData, + "RUNOFF": TypeMarkup, + "Racket": TypeProgramming, + "Ragel": TypeProgramming, + "Rascal": TypeProgramming, + "Raw token data": TypeData, + "Reason": TypeProgramming, + "Rebol": TypeProgramming, + "Red": TypeProgramming, + "Redcode": TypeProgramming, + "Regular Expression": TypeData, + "Ren'Py": TypeProgramming, + "RenderScript": TypeProgramming, + "RobotFramework": TypeProgramming, + "Roff": TypeMarkup, + "Rouge": TypeProgramming, + "Ruby": TypeProgramming, + "Rust": TypeProgramming, + "SAS": TypeProgramming, + "SCSS": TypeMarkup, + "SMT": TypeProgramming, + "SPARQL": TypeData, + "SQF": TypeProgramming, + "SQL": TypeData, + "SQLPL": TypeProgramming, + "SRecode Template": TypeMarkup, + "STON": TypeData, + "SVG": TypeData, + "Sage": TypeProgramming, + "SaltStack": TypeProgramming, + "Sass": TypeMarkup, + "Scala": TypeProgramming, + "Scaml": TypeMarkup, + "Scheme": TypeProgramming, + "Scilab": TypeProgramming, + "Self": TypeProgramming, + "Shell": TypeProgramming, + "ShellSession": TypeProgramming, + "Shen": TypeProgramming, + "Slash": TypeProgramming, + "Slim": TypeMarkup, + "Smali": TypeProgramming, + "Smalltalk": TypeProgramming, + "Smarty": TypeProgramming, + "SourcePawn": TypeProgramming, + "Spline Font Database": TypeData, + "Squirrel": TypeProgramming, + "Stan": TypeProgramming, + "Standard ML": TypeProgramming, + "Stata": TypeProgramming, + "Stylus": TypeMarkup, + "SubRip Text": TypeData, + "Sublime Text Config": TypeData, + "SuperCollider": TypeProgramming, + "Swift": TypeProgramming, + "SystemVerilog": TypeProgramming, + "TI Program": TypeProgramming, + "TLA": TypeProgramming, + "TOML": TypeData, + "TXL": TypeProgramming, + "Tcl": TypeProgramming, + "Tcsh": TypeProgramming, + "TeX": TypeMarkup, + "Tea": TypeMarkup, + "Terra": TypeProgramming, + "Text": TypeProse, + "Textile": TypeProse, + "Thrift": TypeProgramming, + "Turing": TypeProgramming, + "Turtle": TypeData, + "Twig": TypeMarkup, + "TypeScript": TypeProgramming, + "Unified Parallel C": TypeProgramming, + "Unity3D Asset": TypeData, + "Unix Assembly": TypeProgramming, + "Uno": TypeProgramming, + "UnrealScript": TypeProgramming, + "UrWeb": TypeProgramming, + "VCL": TypeProgramming, + "VHDL": TypeProgramming, + "Vala": TypeProgramming, + "Verilog": TypeProgramming, + "Vim script": TypeProgramming, + "Visual Basic": TypeProgramming, + "Volt": TypeProgramming, + "Vue": TypeMarkup, + "Wavefront Material": TypeData, + "Wavefront Object": TypeData, + "Web Ontology Language": TypeMarkup, + "WebIDL": TypeProgramming, + "World of Warcraft Addon Data": TypeData, + "X10": TypeProgramming, + "XC": TypeProgramming, + "XCompose": TypeData, + "XML": TypeData, + "XPages": TypeProgramming, + "XProc": TypeProgramming, + "XQuery": TypeProgramming, + "XS": TypeProgramming, + "XSLT": TypeProgramming, + "Xojo": TypeProgramming, + "Xtend": TypeProgramming, + "YAML": TypeData, + "YANG": TypeData, + "Yacc": TypeProgramming, + "Zephir": TypeProgramming, + "Zimpl": TypeProgramming, + "desktop": TypeData, + "eC": TypeProgramming, + "edn": TypeData, + "fish": TypeProgramming, + "mupad": TypeProgramming, + "nesC": TypeProgramming, + "ooc": TypeProgramming, + "reStructuredText": TypeProse, + "wisp": TypeProgramming, + "xBase": TypeProgramming, +} diff --git a/type_test.go b/type_test.go new file mode 100644 index 0000000..17485dc --- /dev/null +++ b/type_test.go @@ -0,0 +1,32 @@ +package slinguist + +import . "gopkg.in/check.v1" + +func (s *TSuite) TestGetLanguageType(c *C) { + langType := GetLanguageType("BestLanguageEver") + c.Assert(langType, Equals, TypeUnknown) + + langType = GetLanguageType("JSON") + c.Assert(langType, Equals, TypeData) + + langType = GetLanguageType("COLLADA") + c.Assert(langType, Equals, TypeData) + + langType = GetLanguageType("Go") + c.Assert(langType, Equals, TypeProgramming) + + langType = GetLanguageType("Brainfuck") + c.Assert(langType, Equals, TypeProgramming) + + langType = GetLanguageType("HTML") + c.Assert(langType, Equals, TypeMarkup) + + langType = GetLanguageType("Sass") + c.Assert(langType, Equals, TypeMarkup) + + langType = GetLanguageType("AsciiDoc") + c.Assert(langType, Equals, TypeProse) + + langType = GetLanguageType("Textile") + c.Assert(langType, Equals, TypeProse) +} From 9a9968dca0525226ef2330b612bbb507bde4ccc6 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Tue, 11 Apr 2017 12:10:05 +0200 Subject: [PATCH 3/7] added comments to constants --- internal/code-generator/main.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/code-generator/main.go b/internal/code-generator/main.go index 7e45c5d..63e74c7 100644 --- a/internal/code-generator/main.go +++ b/internal/code-generator/main.go @@ -8,26 +8,31 @@ import ( ) const ( + // languages.go generation languagesYAML = ".linguist/lib/linguist/languages.yml" langFile = "languages.go" languagesTmplPath = "internal/code-generator/assets/languages.go.tmpl" languagesTmpl = "languages.go.tmpl" + // content.go generation heuristicsRuby = ".linguist/lib/linguist/heuristics.rb" contentFile = "content.go" contentTmplPath = "internal/code-generator/assets/content.go.tmpl" contentTmpl = "content.go.tmpl" + // vendor_matchers.go generation vendorYAML = ".linguist/lib/linguist/vendor.yml" vendorFile = "vendor_matchers.go" vendorTmplPath = "internal/code-generator/assets/vendor.go.tmpl" vendorTmpl = "vendor.go.tmpl" + // documentation_matchers.go generation documentationYAML = ".linguist/lib/linguist/documentation.yml" documentationFile = "documentation_matchers.go" documentationTmplPath = "internal/code-generator/assets/documentation.go.tmpl" documentationTmpl = "documentation.go.tmpl" + // type.go generation typeFile = "type.go" typeTmplPath = "internal/code-generator/assets/type.go.tmpl" typeTmpl = "type.go.tmpl" From 25e835f5fd60d24025d2051f3d484cba909b9ad4 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Wed, 12 Apr 2017 09:10:16 +0200 Subject: [PATCH 4/7] slice of languages arranged in alphabetical order --- internal/code-generator/generator/langs.go | 28 ++++++- languages.go | 94 +++++++++++----------- 2 files changed, 71 insertions(+), 51 deletions(-) diff --git a/internal/code-generator/generator/langs.go b/internal/code-generator/generator/langs.go index 50c8084..614d246 100644 --- a/internal/code-generator/generator/langs.go +++ b/internal/code-generator/generator/langs.go @@ -24,7 +24,12 @@ func Languages(data []byte, languagesTmplPath, languagesTmplName, commit string) return nil, err } - languagesByExtension := buildExtensionLanguageMap(languages) + orderedKeyList, err := getAlphabeticalOrderedKeys(data) + if err != nil { + return nil, err + } + + languagesByExtension := buildExtensionLanguageMap(languages, orderedKeyList) buf := &bytes.Buffer{} if err := executeLanguagesTemplate(buf, languagesByExtension, languagesTmplPath, languagesTmplName, commit); err != nil { @@ -34,10 +39,25 @@ func Languages(data []byte, languagesTmplPath, languagesTmplName, commit string) return buf.Bytes(), nil } -func buildExtensionLanguageMap(languages map[string]*languageInfo) map[string][]string { +func getAlphabeticalOrderedKeys(data []byte) ([]string, error) { + var yamlSlice yaml.MapSlice + if err := yaml.Unmarshal(data, &yamlSlice); err != nil { + return nil, err + } + + orderedKeyList := make([]string, 0) + for _, lang := range yamlSlice { + orderedKeyList = append(orderedKeyList, lang.Key.(string)) + } + + return orderedKeyList, nil +} + +func buildExtensionLanguageMap(languages map[string]*languageInfo, orderedKeyList []string) map[string][]string { extensionLangsMap := make(map[string][]string) - for lang, info := range languages { - for _, extension := range info.Extensions { + for _, lang := range orderedKeyList { + langInfo := languages[lang] + for _, extension := range langInfo.Extensions { extensionLangsMap[extension] = append(extensionLangsMap[extension], lang) } } diff --git a/languages.go b/languages.go index 9f667da..d7d9050 100644 --- a/languages.go +++ b/languages.go @@ -62,7 +62,7 @@ var languagesByExtension = map[string][]string{ ".arpa": {"DNS Zone"}, ".as": {"ActionScript"}, ".asax": {"ASP"}, - ".asc": {"AGS Script", "Public Key", "AsciiDoc"}, + ".asc": {"AGS Script", "AsciiDoc", "Public Key"}, ".asciidoc": {"AsciiDoc"}, ".ascx": {"ASP"}, ".asd": {"Common Lisp"}, @@ -92,7 +92,7 @@ var languagesByExtension = map[string][]string{ ".bash": {"Shell"}, ".bat": {"Batchfile"}, ".bats": {"Shell"}, - ".bb": {"BlitzBasic", "BitBake"}, + ".bb": {"BitBake", "BlitzBasic"}, ".bbx": {"TeX"}, ".befunge": {"Befunge"}, ".bf": {"Brainfuck", "HyPhy"}, @@ -131,7 +131,7 @@ var languagesByExtension = map[string][]string{ ".cfg": {"INI"}, ".cfm": {"ColdFusion"}, ".cfml": {"ColdFusion"}, - ".cgi": {"Python", "Perl", "Shell"}, + ".cgi": {"Perl", "Python", "Shell"}, ".ch": {"Charity", "xBase"}, ".chem": {"Pic"}, ".chpl": {"Chapel"}, @@ -139,7 +139,7 @@ var languagesByExtension = map[string][]string{ ".cirru": {"Cirru"}, ".cjsx": {"CoffeeScript"}, ".ck": {"ChucK"}, - ".cl": {"Common Lisp", "OpenCL", "Cool"}, + ".cl": {"Common Lisp", "Cool", "OpenCL"}, ".cl2": {"Clojure"}, ".click": {"Click"}, ".clixml": {"XML"}, @@ -150,7 +150,7 @@ var languagesByExtension = map[string][]string{ ".cljscm": {"Clojure"}, ".cljx": {"Clojure"}, ".clp": {"CLIPS"}, - ".cls": {"Apex", "TeX", "Visual Basic", "OpenEdge ABL"}, + ".cls": {"Apex", "OpenEdge ABL", "TeX", "Visual Basic"}, ".clw": {"Clarion"}, ".cmake": {"CMake"}, ".cmake.in": {"CMake"}, @@ -161,7 +161,7 @@ var languagesByExtension = map[string][]string{ ".com": {"DIGITAL Command Language"}, ".command": {"Shell"}, ".coq": {"Coq"}, - ".cp": {"Component Pascal", "C++"}, + ".cp": {"C++", "Component Pascal"}, ".cpp": {"C++"}, ".cpp-objdump": {"Cpp-ObjDump"}, ".cppobjdump": {"Cpp-ObjDump"}, @@ -189,7 +189,7 @@ var languagesByExtension = map[string][]string{ ".cxx": {"C++"}, ".cxx-objdump": {"Cpp-ObjDump"}, ".cy": {"Cycript"}, - ".d": {"Makefile", "D", "DTrace"}, + ".d": {"D", "DTrace", "Makefile"}, ".d-objdump": {"D-ObjDump"}, ".dae": {"COLLADA"}, ".darcspatch": {"Darcs Patch"}, @@ -251,13 +251,13 @@ var languagesByExtension = map[string][]string{ ".erb": {"HTML+ERB"}, ".erb.deface": {"HTML+ERB"}, ".erl": {"Erlang"}, - ".es": {"JavaScript", "Erlang"}, + ".es": {"Erlang", "JavaScript"}, ".es6": {"JavaScript"}, ".escript": {"Erlang"}, ".ex": {"Elixir"}, ".exs": {"Elixir"}, ".eye": {"Ruby"}, - ".f": {"Fortran", "Forth", "Filebench WML"}, + ".f": {"Filebench WML", "Forth", "Fortran"}, ".f03": {"Fortran"}, ".f08": {"Fortran"}, ".f77": {"Fortran"}, @@ -266,24 +266,24 @@ var languagesByExtension = map[string][]string{ ".factor": {"Factor"}, ".fan": {"Fantom"}, ".fancypack": {"Fancy"}, - ".fcgi": {"PHP", "Python", "Perl", "Shell", "Ruby", "Lua"}, + ".fcgi": {"Lua", "PHP", "Perl", "Python", "Ruby", "Shell"}, ".fea": {"OpenType Feature File"}, ".feature": {"Gherkin"}, ".filters": {"XML"}, ".fish": {"fish"}, ".flex": {"JFlex"}, ".flux": {"FLUX"}, - ".for": {"Fortran", "Formatted", "Forth"}, + ".for": {"Formatted", "Forth", "Fortran"}, ".forth": {"Forth"}, ".fp": {"GLSL"}, ".fpp": {"Fortran"}, ".fr": {"Forth", "Frege", "Text"}, - ".frag": {"JavaScript", "GLSL"}, + ".frag": {"GLSL", "JavaScript"}, ".frg": {"GLSL"}, ".frm": {"Visual Basic"}, ".frt": {"Forth"}, ".frx": {"Visual Basic"}, - ".fs": {"F#", "Forth", "Filterscript", "GLSL"}, + ".fs": {"F#", "Filterscript", "Forth", "GLSL"}, ".fsh": {"GLSL"}, ".fshader": {"GLSL"}, ".fsi": {"F#"}, @@ -292,7 +292,7 @@ var languagesByExtension = map[string][]string{ ".fth": {"Forth"}, ".ftl": {"FreeMarker"}, ".fun": {"Standard ML"}, - ".fx": {"HLSL", "FLUX"}, + ".fx": {"FLUX", "HLSL"}, ".fxh": {"HLSL"}, ".fxml": {"XML"}, ".fy": {"Fancy"}, @@ -315,7 +315,7 @@ var languagesByExtension = map[string][]string{ ".glf": {"Glyph"}, ".glsl": {"GLSL"}, ".glslv": {"GLSL"}, - ".gml": {"XML", "Graph Modeling Language", "Game Maker Language"}, + ".gml": {"Game Maker Language", "Graph Modeling Language", "XML"}, ".gms": {"GAMS"}, ".gn": {"GN"}, ".gni": {"GN"}, @@ -331,7 +331,7 @@ var languagesByExtension = map[string][]string{ ".groovy": {"Groovy"}, ".grt": {"Groovy"}, ".grxml": {"XML"}, - ".gs": {"JavaScript", "Genie", "Gosu"}, + ".gs": {"Genie", "Gosu", "JavaScript"}, ".gshader": {"GLSL"}, ".gsp": {"Groovy Server Pages"}, ".gst": {"Gosu"}, @@ -341,7 +341,7 @@ var languagesByExtension = map[string][]string{ ".gvy": {"Groovy"}, ".gyp": {"Python"}, ".gypi": {"Python"}, - ".h": {"C++", "C", "Objective-C"}, + ".h": {"C", "C++", "Objective-C"}, ".h++": {"C++"}, ".haml": {"Haml"}, ".haml.deface": {"Haml"}, @@ -350,7 +350,7 @@ var languagesByExtension = map[string][]string{ ".hb": {"Harbour"}, ".hbs": {"Handlebars"}, ".hcl": {"HCL"}, - ".hh": {"Hack", "C++"}, + ".hh": {"C++", "Hack"}, ".hic": {"Clojure"}, ".hlean": {"Lean"}, ".hlsl": {"HLSL"}, @@ -378,7 +378,7 @@ var languagesByExtension = map[string][]string{ ".ik": {"Ioke"}, ".ily": {"LilyPond"}, ".iml": {"XML"}, - ".inc": {"PHP", "Assembly", "HTML", "POV-Ray SDL", "SQL", "Pascal", "C++", "SourcePawn", "PAWN"}, + ".inc": {"Assembly", "C++", "HTML", "PAWN", "PHP", "POV-Ray SDL", "Pascal", "SQL", "SourcePawn"}, ".ini": {"INI"}, ".inl": {"C++"}, ".ino": {"Arduino"}, @@ -392,7 +392,7 @@ var languagesByExtension = map[string][]string{ ".irclog": {"IRC log"}, ".iss": {"Inno Setup"}, ".ivy": {"XML"}, - ".j": {"Objective-J", "Jasmin"}, + ".j": {"Jasmin", "Objective-J"}, ".jade": {"Pug"}, ".jake": {"JavaScript"}, ".java": {"Java"}, @@ -425,7 +425,7 @@ var languagesByExtension = map[string][]string{ ".kt": {"Kotlin"}, ".ktm": {"Kotlin"}, ".kts": {"Kotlin"}, - ".l": {"Common Lisp", "Roff", "PicoLisp", "Lex"}, + ".l": {"Common Lisp", "Lex", "PicoLisp", "Roff"}, ".lagda": {"Literate Agda"}, ".las": {"Lasso"}, ".lasso": {"Lasso"}, @@ -446,7 +446,7 @@ var languagesByExtension = map[string][]string{ ".lid": {"Dylan"}, ".lidr": {"Idris"}, ".liquid": {"Liquid"}, - ".lisp": {"NewLisp", "Common Lisp"}, + ".lisp": {"Common Lisp", "NewLisp"}, ".litcoffee": {"Literate CoffeeScript"}, ".ll": {"LLVM"}, ".lmi": {"Python"}, @@ -457,13 +457,13 @@ var languagesByExtension = map[string][]string{ ".ls": {"LiveScript", "LoomScript"}, ".lsl": {"LSL"}, ".lslp": {"LSL"}, - ".lsp": {"NewLisp", "Common Lisp"}, + ".lsp": {"Common Lisp", "NewLisp"}, ".ltx": {"TeX"}, ".lua": {"Lua"}, ".lvproj": {"LabVIEW"}, ".ly": {"LilyPond"}, - ".m": {"Matlab", "M", "Limbo", "Objective-C", "Mathematica", "MUF", "Mercury"}, - ".m4": {"M4Sugar", "M4"}, + ".m": {"Limbo", "M", "MUF", "Mathematica", "Matlab", "Mercury", "Objective-C"}, + ".m4": {"M4", "M4Sugar"}, ".ma": {"Mathematica"}, ".mak": {"Makefile"}, ".make": {"Makefile"}, @@ -483,7 +483,7 @@ var languagesByExtension = map[string][]string{ ".maxpat": {"Max"}, ".maxproj": {"Max"}, ".mcr": {"MAXScript"}, - ".md": {"Markdown", "GCC Machine Description"}, + ".md": {"GCC Machine Description", "Markdown"}, ".mdown": {"Markdown"}, ".mdpolicy": {"XML"}, ".mdwn": {"Markdown"}, @@ -507,19 +507,19 @@ var languagesByExtension = map[string][]string{ ".mli": {"OCaml"}, ".mll": {"OCaml"}, ".mly": {"OCaml"}, - ".mm": {"XML", "Objective-C++"}, + ".mm": {"Objective-C++", "XML"}, ".mmk": {"Module Management System"}, ".mms": {"Module Management System"}, ".mo": {"Modelica"}, - ".mod": {"XML", "Modula-2", "AMPL", "Linux Kernel Module"}, + ".mod": {"AMPL", "Linux Kernel Module", "Modula-2", "XML"}, ".model.lkml": {"LookML"}, ".monkey": {"Monkey"}, - ".moo": {"Moocode", "Mercury"}, + ".moo": {"Mercury", "Moocode"}, ".moon": {"MoonScript"}, ".mq4": {"MQL4"}, ".mq5": {"MQL5"}, - ".mqh": {"MQL5", "MQL4"}, - ".ms": {"Unix Assembly", "Roff", "MAXScript"}, + ".mqh": {"MQL4", "MQL5"}, + ".ms": {"MAXScript", "Roff", "Unix Assembly"}, ".mspec": {"Ruby"}, ".mss": {"CartoCSS"}, ".mt": {"Mathematica"}, @@ -536,7 +536,7 @@ var languagesByExtension = map[string][]string{ ".n": {"Nemerle", "Roff"}, ".nasm": {"Assembly"}, ".nawk": {"Awk"}, - ".nb": {"Text", "Mathematica"}, + ".nb": {"Mathematica", "Text"}, ".nbp": {"Mathematica"}, ".nc": {"nesC"}, ".ncl": {"NCL", "Text"}, @@ -549,7 +549,7 @@ var languagesByExtension = map[string][]string{ ".nix": {"Nix"}, ".njk": {"HTML+Django"}, ".njs": {"JavaScript"}, - ".nl": {"NewLisp", "NL"}, + ".nl": {"NL", "NewLisp"}, ".nlogo": {"NetLogo"}, ".no": {"Text"}, ".nproj": {"XML"}, @@ -604,7 +604,7 @@ var languagesByExtension = map[string][]string{ ".pde": {"Processing"}, ".perl": {"Perl"}, ".ph": {"Perl"}, - ".php": {"PHP", "Hack"}, + ".php": {"Hack", "PHP"}, ".php3": {"PHP"}, ".php4": {"PHP"}, ".php5": {"PHP"}, @@ -627,7 +627,7 @@ var languagesByExtension = map[string][]string{ ".pls": {"PLSQL"}, ".plsql": {"PLSQL"}, ".plt": {"Gnuplot"}, - ".pluginspec": {"XML", "Ruby"}, + ".pluginspec": {"Ruby", "XML"}, ".plx": {"Perl"}, ".pm": {"Perl", "Perl6"}, ".pm6": {"Perl6"}, @@ -640,14 +640,14 @@ var languagesByExtension = map[string][]string{ ".pony": {"Pony"}, ".pot": {"Gettext Catalog"}, ".pov": {"POV-Ray SDL"}, - ".pp": {"Puppet", "Pascal"}, + ".pp": {"Pascal", "Puppet"}, ".pprx": {"REXX"}, ".prc": {"SQL"}, ".prefab": {"Unity3D Asset"}, ".prefs": {"INI"}, ".prg": {"xBase"}, ".pri": {"QMake"}, - ".pro": {"IDL", "QMake", "INI", "Prolog"}, + ".pro": {"IDL", "INI", "Prolog", "QMake"}, ".prolog": {"Prolog"}, ".properties": {"INI"}, ".props": {"XML"}, @@ -678,7 +678,7 @@ var languagesByExtension = map[string][]string{ ".pyx": {"Cython"}, ".qbs": {"QML"}, ".qml": {"QML"}, - ".r": {"Rebol", "R"}, + ".r": {"R", "Rebol"}, ".r2": {"Rebol"}, ".r3": {"Rebol"}, ".rabl": {"Ruby"}, @@ -699,7 +699,7 @@ var languagesByExtension = map[string][]string{ ".rd": {"R"}, ".rdf": {"XML"}, ".rdoc": {"RDoc"}, - ".re": {"Reason", "C++"}, + ".re": {"C++", "Reason"}, ".reb": {"Rebol"}, ".rebol": {"Rebol"}, ".red": {"Red"}, @@ -751,7 +751,7 @@ var languagesByExtension = map[string][]string{ ".scaml": {"Scaml"}, ".scd": {"SuperCollider"}, ".sce": {"Scilab"}, - ".sch": {"XML", "Eagle", "KiCad"}, + ".sch": {"Eagle", "KiCad", "XML"}, ".sci": {"Scilab"}, ".scm": {"Scheme"}, ".sco": {"Csound Score"}, @@ -782,11 +782,11 @@ var languagesByExtension = map[string][]string{ ".smt2": {"SMT"}, ".sp": {"SourcePawn"}, ".sparql": {"SPARQL"}, - ".spec": {"Python", "Ruby", "RPM Spec"}, + ".spec": {"Python", "RPM Spec", "Ruby"}, ".spin": {"Propeller Spin"}, ".sps": {"Scheme"}, ".sqf": {"SQF"}, - ".sql": {"SQLPL", "SQL", "PLpgSQL", "PLSQL"}, + ".sql": {"PLSQL", "PLpgSQL", "SQL", "SQLPL"}, ".sra": {"PowerBuilder"}, ".srdf": {"XML"}, ".srt": {"SRecode Template", "SubRip Text"}, @@ -794,7 +794,7 @@ var languagesByExtension = map[string][]string{ ".srw": {"PowerBuilder"}, ".ss": {"Scheme"}, ".ssjs": {"JavaScript"}, - ".st": {"Smalltalk", "HTML"}, + ".st": {"HTML", "Smalltalk"}, ".stTheme": {"XML"}, ".stan": {"Stan"}, ".sthlp": {"Stata"}, @@ -822,7 +822,7 @@ var languagesByExtension = map[string][]string{ ".svh": {"SystemVerilog"}, ".swift": {"Swift"}, ".syntax": {"YAML"}, - ".t": {"Turing", "Perl", "Perl6", "Terra"}, + ".t": {"Perl", "Perl6", "Terra", "Turing"}, ".tab": {"SQL"}, ".tac": {"Python"}, ".targets": {"XML"}, @@ -846,15 +846,15 @@ var languagesByExtension = map[string][]string{ ".tmac": {"Roff"}, ".tml": {"XML"}, ".tmux": {"Shell"}, - ".toc": {"World of Warcraft Addon Data", "TeX"}, + ".toc": {"TeX", "World of Warcraft Addon Data"}, ".toml": {"TOML"}, ".tool": {"Shell"}, ".topojson": {"JSON"}, ".tpl": {"Smarty"}, ".tpp": {"C++"}, - ".ts": {"XML", "TypeScript"}, + ".ts": {"TypeScript", "XML"}, ".tst": {"GAP", "Scilab"}, - ".tsx": {"XML", "TypeScript"}, + ".tsx": {"TypeScript", "XML"}, ".ttl": {"Turtle"}, ".tu": {"Turing"}, ".twig": {"Twig"}, From 92cd8c6976798a16a5d0d7562c9b1fd344000de8 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Wed, 12 Apr 2017 10:22:47 +0200 Subject: [PATCH 5/7] fixed .php test --- extension_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) } From b277944b2a658b8368a51d18b54d3d883d28c2e8 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Mon, 17 Apr 2017 12:00:50 +0200 Subject: [PATCH 6/7] fixed constant iotas --- internal/code-generator/assets/type.go.tmpl | 8 ++++---- .../generator/test_files/formated_type.gold | 8 ++++---- internal/code-generator/generator/test_files/type.gold | 8 ++++---- .../generator/test_files/type.test.go.tmpl | 8 ++++---- type.go | 10 +++++----- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/internal/code-generator/assets/type.go.tmpl b/internal/code-generator/assets/type.go.tmpl index aaa5282..bf063a2 100644 --- a/internal/code-generator/assets/type.go.tmpl +++ b/internal/code-generator/assets/type.go.tmpl @@ -6,10 +6,10 @@ package slinguist const ( TypeUnknown = iota - TypeData = iota - TypeProgramming = iota - TypeMarkup = iota - TypeProse = iota + TypeData + TypeProgramming + TypeMarkup + TypeProse ) func GetLanguageType(language string) (langType int) { diff --git a/internal/code-generator/generator/test_files/formated_type.gold b/internal/code-generator/generator/test_files/formated_type.gold index 6d0de86..8ce97d1 100644 --- a/internal/code-generator/generator/test_files/formated_type.gold +++ b/internal/code-generator/generator/test_files/formated_type.gold @@ -6,10 +6,10 @@ package slinguist const ( TypeUnknown = iota - TypeData = iota - TypeProgramming = iota - TypeMarkup = iota - TypeProse = iota + TypeData + TypeProgramming + TypeMarkup + TypeProse ) func GetLanguageType(language string) (langType int) { diff --git a/internal/code-generator/generator/test_files/type.gold b/internal/code-generator/generator/test_files/type.gold index 1ed18ba..a128e6c 100644 --- a/internal/code-generator/generator/test_files/type.gold +++ b/internal/code-generator/generator/test_files/type.gold @@ -6,10 +6,10 @@ package slinguist const ( TypeUnknown = iota - TypeData = iota - TypeProgramming = iota - TypeMarkup = iota - TypeProse = iota + TypeData + TypeProgramming + TypeMarkup + TypeProse ) func GetLanguageType(language string) (langType int) { diff --git a/internal/code-generator/generator/test_files/type.test.go.tmpl b/internal/code-generator/generator/test_files/type.test.go.tmpl index aaa5282..bf063a2 100644 --- a/internal/code-generator/generator/test_files/type.test.go.tmpl +++ b/internal/code-generator/generator/test_files/type.test.go.tmpl @@ -6,10 +6,10 @@ package slinguist const ( TypeUnknown = iota - TypeData = iota - TypeProgramming = iota - TypeMarkup = iota - TypeProse = iota + TypeData + TypeProgramming + TypeMarkup + TypeProse ) func GetLanguageType(language string) (langType int) { diff --git a/type.go b/type.go index 1e4fa58..32058e4 100644 --- a/type.go +++ b/type.go @@ -5,11 +5,11 @@ package slinguist // Extracted from github/linguist commit: dae33dc2b20cddc85d1300435c3be7118a7115a9 const ( - TypeUnknown = iota - TypeData = iota - TypeProgramming = iota - TypeMarkup = iota - TypeProse = iota + TypeUnknown = iota + TypeData + TypeProgramming + TypeMarkup + TypeProse ) func GetLanguageType(language string) (langType int) { From c08b85120d6e94d5c9057f60cefe7ebb306c9d15 Mon Sep 17 00:00:00 2001 From: Manuel Carmona Date: Mon, 17 Apr 2017 12:08:54 +0200 Subject: [PATCH 7/7] created 'type Type int' for type.go generation --- internal/code-generator/assets/type.go.tmpl | 8 +++++--- .../generator/test_files/formated_type.gold | 8 +++++--- internal/code-generator/generator/test_files/type.gold | 8 +++++--- .../code-generator/generator/test_files/type.test.go.tmpl | 8 +++++--- type.go | 8 +++++--- 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/internal/code-generator/assets/type.go.tmpl b/internal/code-generator/assets/type.go.tmpl index bf063a2..94dbdfa 100644 --- a/internal/code-generator/assets/type.go.tmpl +++ b/internal/code-generator/assets/type.go.tmpl @@ -4,20 +4,22 @@ package slinguist // THIS FILE SHOULD NOT BE EDITED BY HAND // Extracted from github/linguist commit: {{ getCommit }} +type Type int + const ( - TypeUnknown = iota + TypeUnknown Type = iota TypeData TypeProgramming TypeMarkup TypeProse ) -func GetLanguageType(language string) (langType int) { +func GetLanguageType(language string) (langType Type) { langType, _ = languagesType[language] return langType } -var languagesType = map[string]int{ +var languagesType = map[string]Type{ {{range $language, $type := . -}} "{{ $language }}": {{ $type -}}, {{end -}} diff --git a/internal/code-generator/generator/test_files/formated_type.gold b/internal/code-generator/generator/test_files/formated_type.gold index 8ce97d1..69eec08 100644 --- a/internal/code-generator/generator/test_files/formated_type.gold +++ b/internal/code-generator/generator/test_files/formated_type.gold @@ -4,20 +4,22 @@ package slinguist // THIS FILE SHOULD NOT BE EDITED BY HAND // Extracted from github/linguist commit: fe8b44ab8a225b1ffa75b983b916ea22fee5b6f7 +type Type int + const ( - TypeUnknown = iota + TypeUnknown Type = iota TypeData TypeProgramming TypeMarkup TypeProse ) -func GetLanguageType(language string) (langType int) { +func GetLanguageType(language string) (langType Type) { langType, _ = languagesType[language] return langType } -var languagesType = map[string]int{ +var languagesType = map[string]Type{ "Scaml": TypeMarkup, "Scheme": TypeProgramming, "Scilab": TypeProgramming, diff --git a/internal/code-generator/generator/test_files/type.gold b/internal/code-generator/generator/test_files/type.gold index a128e6c..a00b93c 100644 --- a/internal/code-generator/generator/test_files/type.gold +++ b/internal/code-generator/generator/test_files/type.gold @@ -4,20 +4,22 @@ package slinguist // THIS FILE SHOULD NOT BE EDITED BY HAND // Extracted from github/linguist commit: fe8b44ab8a225b1ffa75b983b916ea22fee5b6f7 +type Type int + const ( - TypeUnknown = iota + TypeUnknown Type = iota TypeData TypeProgramming TypeMarkup TypeProse ) -func GetLanguageType(language string) (langType int) { +func GetLanguageType(language string) (langType Type) { langType, _ = languagesType[language] return langType } -var languagesType = map[string]int{ +var languagesType = map[string]Type{ "Scaml": TypeMarkup, "Scheme": TypeProgramming, "Scilab": TypeProgramming, diff --git a/internal/code-generator/generator/test_files/type.test.go.tmpl b/internal/code-generator/generator/test_files/type.test.go.tmpl index bf063a2..94dbdfa 100644 --- a/internal/code-generator/generator/test_files/type.test.go.tmpl +++ b/internal/code-generator/generator/test_files/type.test.go.tmpl @@ -4,20 +4,22 @@ package slinguist // THIS FILE SHOULD NOT BE EDITED BY HAND // Extracted from github/linguist commit: {{ getCommit }} +type Type int + const ( - TypeUnknown = iota + TypeUnknown Type = iota TypeData TypeProgramming TypeMarkup TypeProse ) -func GetLanguageType(language string) (langType int) { +func GetLanguageType(language string) (langType Type) { langType, _ = languagesType[language] return langType } -var languagesType = map[string]int{ +var languagesType = map[string]Type{ {{range $language, $type := . -}} "{{ $language }}": {{ $type -}}, {{end -}} diff --git a/type.go b/type.go index 32058e4..00b4b93 100644 --- a/type.go +++ b/type.go @@ -4,20 +4,22 @@ package slinguist // THIS FILE SHOULD NOT BE EDITED BY HAND // Extracted from github/linguist commit: dae33dc2b20cddc85d1300435c3be7118a7115a9 +type Type int + const ( - TypeUnknown = iota + TypeUnknown Type = iota TypeData TypeProgramming TypeMarkup TypeProse ) -func GetLanguageType(language string) (langType int) { +func GetLanguageType(language string) (langType Type) { langType, _ = languagesType[language] return langType } -var languagesType = map[string]int{ +var languagesType = map[string]Type{ "1C Enterprise": TypeProgramming, "ABAP": TypeProgramming, "ABNF": TypeData,