diff --git a/common.go b/common.go index c373f6f..f6b97a8 100644 --- a/common.go +++ b/common.go @@ -4,790 +4,928 @@ package slinguist // 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 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": {"HCL"}, + ".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"}, + ".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"}, + ".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"}, - ".4th": {"Forth"}, - ".5": {"Groff"}, - ".6": {"Groff"}, - ".6pl": {"Perl6"}, - ".6pm": {"Perl6"}, - ".7": {"Groff"}, - "._coffee": {"CoffeeScript"}, - "._js": {"JavaScript"}, - "._ls": {"LiveScript"}, - ".a51": {"Assembly"}, - ".abap": {"ABAP"}, - ".ada": {"Ada"}, - ".adb": {"Ada"}, - ".ado": {"Stata"}, - ".adoc": {"AsciiDoc"}, - ".adp": {"Tcl"}, - ".ads": {"Ada"}, - ".agda": {"Agda"}, - ".ahk": {"AutoHotkey"}, - ".ahkl": {"AutoHotkey"}, - ".aj": {"AspectJ"}, - ".als": {"Alloy"}, - ".ant": {"XML"}, - ".apacheconf": {"ApacheConf"}, - ".apl": {"APL"}, - ".applescript": {"AppleScript"}, - ".arc": {"Arc"}, - ".as": {"ActionScript"}, - ".asax": {"ASP"}, - ".asc": {"Public Key", "AsciiDoc", "AGS Script"}, - ".asciidoc": {"AsciiDoc"}, - ".ascx": {"ASP"}, - ".asd": {"Common Lisp"}, - ".ash": {"AGS Script"}, - ".ashx": {"ASP"}, - ".ASM": {"Assembly"}, - ".asm": {"Assembly"}, - ".asmx": {"ASP"}, - ".asp": {"ASP"}, - ".aspx": {"ASP"}, - ".au3": {"AutoIt"}, - ".aug": {"Augeas"}, - ".auk": {"Awk"}, - ".aux": {"TeX"}, - ".aw": {"PHP"}, - ".awk": {"Awk"}, - ".axd": {"ASP"}, - ".axml": {"XML"}, - ".b": {"Brainfuck"}, - ".bas": {"Visual Basic"}, - ".bash": {"Shell"}, - ".bat": {"Batchfile"}, - ".bats": {"Shell"}, - ".bb": {"BitBake", "BlitzBasic"}, - ".bbx": {"TeX"}, - ".befunge": {"Befunge"}, - ".bf": {"Brainfuck"}, - ".bib": {"TeX"}, - ".bmx": {"BlitzMax"}, - ".bones": {"JavaScript"}, - ".boo": {"Boo"}, - ".brd": {"Eagle"}, - ".bro": {"Bro"}, - ".brs": {"Brightscript"}, - ".bsv": {"Bluespec"}, - ".builder": {"Ruby"}, - ".C": {"C"}, - ".c": {"C"}, - ".c++": {"C++"}, - ".c++-objdump": {"Cpp-ObjDump"}, - ".c++objdump": {"Cpp-ObjDump"}, - ".c-objdump": {"C-ObjDump"}, - ".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": {"Python", "Shell", "Perl"}, - ".chpl": {"Chapel"}, - ".chs": {"C2hs Haskell"}, - ".cirru": {"Cirru"}, - ".cjsx": {"CoffeeScript"}, - ".ck": {"ChucK"}, - ".cl": {"Cool", "OpenCL", "Common Lisp"}, - ".cl2": {"Clojure"}, - ".clixml": {"XML"}, - ".clj": {"Clojure"}, - ".cljc": {"Clojure"}, - ".cljs": {"Clojure"}, - ".cljs.hl": {"Clojure"}, - ".cljscm": {"Clojure"}, - ".cljx": {"Clojure"}, - ".clp": {"CLIPS"}, - ".cls": {"Visual Basic", "Apex", "OpenEdge ABL", "TeX"}, - ".cmake": {"CMake"}, - ".cmake.in": {"CMake"}, - ".cmd": {"Batchfile"}, - ".cob": {"COBOL"}, - ".COB": {"COBOL"}, - ".cobol": {"COBOL"}, - ".coffee": {"CoffeeScript"}, - ".command": {"Shell"}, - ".conf": {"ApacheConf"}, - ".coq": {"Coq"}, - ".cp": {"Component Pascal", "C++"}, - ".cpp": {"C++"}, - ".cpp-objdump": {"Cpp-ObjDump"}, - ".cppobjdump": {"Cpp-ObjDump"}, - ".cproject": {"XML"}, - ".cps": {"Component Pascal"}, - ".cpy": {"COBOL"}, - ".CPY": {"COBOL"}, - ".cql": {"SQL"}, - ".cr": {"Crystal"}, - ".creole": {"Creole"}, - ".cs": {"C#", "Smalltalk"}, - ".csh": {"Tcsh"}, - ".cshtml": {"C#"}, - ".cson": {"CoffeeScript"}, - ".csproj": {"XML"}, - ".css": {"CSS"}, - ".csx": {"C#"}, - ".ct": {"XML"}, - ".ctp": {"PHP"}, - ".cu": {"Cuda"}, - ".cuh": {"Cuda"}, - ".cw": {"Redcode"}, - ".cxx": {"C++"}, - ".cxx-objdump": {"Cpp-ObjDump"}, - ".cy": {"Cycript"}, - ".d": {"D"}, - ".d-objdump": {"D-ObjDump"}, - ".darcspatch": {"Darcs Patch"}, - ".dart": {"Dart"}, - ".dats": {"ATS"}, - ".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)"}, - ".dot": {"Graphviz (DOT)"}, - ".dpatch": {"Darcs Patch"}, - ".dpr": {"Pascal"}, - ".druby": {"Mirah"}, - ".dtx": {"TeX"}, - ".duby": {"Mirah"}, - ".dyalog": {"APL"}, - ".dyl": {"Dylan"}, - ".dylan": {"Dylan"}, - ".E": {"E"}, - ".e": {"Eiffel"}, - ".ebuild": {"Gentoo Ebuild"}, - ".ec": {"eC"}, - ".ecl": {"Prolog", "ECL"}, - ".eclass": {"Gentoo Eclass"}, - ".eclxml": {"ECL"}, - ".edn": {"edn"}, - ".eh": {"eC"}, - ".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"}, - ".erb": {"HTML+ERB"}, - ".erb.deface": {"HTML+ERB"}, - ".erl": {"Erlang"}, - ".es": {"Erlang"}, - ".es6": {"JavaScript"}, - ".escript": {"Erlang"}, - ".ex": {"Elixir"}, - ".exs": {"Elixir"}, - ".F": {"Forth", "FORTRAN"}, - ".f": {"Forth", "FORTRAN"}, - ".f03": {"FORTRAN"}, - ".F03": {"FORTRAN"}, - ".f08": {"FORTRAN"}, - ".F08": {"FORTRAN"}, - ".F77": {"FORTRAN"}, - ".f77": {"FORTRAN"}, - ".f90": {"FORTRAN"}, - ".F90": {"FORTRAN"}, - ".F95": {"FORTRAN"}, - ".f95": {"FORTRAN"}, - ".factor": {"Factor"}, - ".fan": {"Fantom"}, - ".fancypack": {"Fancy"}, - ".fcgi": {"PHP", "Python", "Shell", "Perl", "Ruby", "Lua"}, - ".feature": {"Cucumber"}, - ".filters": {"XML"}, - ".fish": {"fish"}, - ".flux": {"FLUX"}, - ".for": {"Forth", "FORTRAN"}, - ".FOR": {"FORTRAN"}, - ".forth": {"Forth"}, - ".fp": {"GLSL"}, - ".FPP": {"FORTRAN"}, - ".fpp": {"FORTRAN"}, - ".fr": {"Forth", "Text", "Frege"}, - ".frag": {"GLSL", "JavaScript"}, - ".frg": {"GLSL"}, - ".frm": {"Visual Basic"}, - ".frt": {"Forth"}, - ".frx": {"Visual Basic"}, - ".fs": {"GLSL", "Forth", "F#"}, - ".fshader": {"GLSL"}, - ".fsi": {"F#"}, - ".fsproj": {"XML"}, - ".fsx": {"F#"}, - ".fth": {"Forth"}, - ".fun": {"Standard ML"}, - ".fx": {"FLUX"}, - ".fxml": {"XML"}, - ".fy": {"Fancy"}, - ".g": {"G-code", "GAP"}, - ".g4": {"ANTLR"}, - ".gap": {"GAP"}, - ".gawk": {"Awk"}, - ".gco": {"G-code"}, - ".gcode": {"G-code"}, - ".gd": {"GAP", "GDScript"}, - ".gemspec": {"Ruby"}, - ".geo": {"GLSL"}, - ".geom": {"GLSL"}, - ".gf": {"Grammatical Framework"}, - ".gi": {"GAP"}, - ".glade": {"XML"}, - ".glf": {"Glyph"}, - ".glsl": {"GLSL"}, - ".glslv": {"GLSL"}, - ".gml": {"Graph Modeling Language", "Game Maker Language"}, - ".gms": {"GAMS"}, - ".gnu": {"Gnuplot"}, - ".gnuplot": {"Gnuplot"}, - ".go": {"Go"}, - ".god": {"Ruby"}, - ".golo": {"Golo"}, - ".gp": {"Gnuplot"}, - ".grace": {"Grace"}, - ".gradle": {"Gradle"}, - ".groovy": {"Groovy"}, - ".grt": {"Groovy"}, - ".grxml": {"XML"}, - ".gs": {"Gosu", "JavaScript"}, - ".gshader": {"GLSL"}, - ".gsp": {"Groovy Server Pages"}, - ".gst": {"Gosu"}, - ".gsx": {"Gosu"}, - ".gtpl": {"Groovy"}, - ".gv": {"Graphviz (DOT)"}, - ".gvy": {"Groovy"}, - ".gyp": {"Python"}, - ".H": {"C"}, - ".h": {"C", "C++", "Objective-C"}, - ".h++": {"C++"}, - ".haml": {"Haml"}, - ".haml.deface": {"Haml"}, - ".handlebars": {"Handlebars"}, - ".hats": {"ATS"}, - ".hb": {"Harbour"}, - ".hbs": {"Handlebars"}, - ".hh": {"Hack", "C++"}, - ".hic": {"Clojure"}, - ".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"}, - ".ini": {"INI"}, - ".inl": {"C++"}, - ".ino": {"Arduino"}, - ".ins": {"TeX"}, - ".intr": {"Dylan"}, - ".io": {"Io"}, - ".ipf": {"IGOR Pro"}, - ".ipp": {"C++"}, - ".irbrc": {"Ruby"}, - ".irclog": {"IRC log"}, - ".iss": {"Inno Setup"}, - ".ivy": {"XML"}, - ".j": {"Objective-J", "Jasmin"}, - ".jade": {"Jade"}, - ".jake": {"JavaScript"}, - ".java": {"Java"}, - ".jelly": {"XML"}, - ".jinja": {"HTML+Django"}, - ".jl": {"Julia"}, - ".jq": {"JSONiq"}, - ".js": {"JavaScript"}, - ".jsb": {"JavaScript"}, - ".jsfl": {"JavaScript"}, - ".jsm": {"JavaScript"}, - ".json": {"JSON"}, - ".json5": {"JSON5"}, - ".jsonld": {"JSONLD"}, - ".jsp": {"Java Server Pages"}, - ".jss": {"JavaScript"}, - ".jsx": {"JavaScript"}, - ".kid": {"Genshi"}, - ".kit": {"Kit"}, - ".kml": {"XML"}, - ".krl": {"KRL"}, - ".ksh": {"Shell"}, - ".kt": {"Kotlin"}, - ".ktm": {"Kotlin"}, - ".kts": {"Kotlin"}, - ".lagda": {"Literate Agda"}, - ".las": {"Lasso"}, - ".lasso": {"Lasso"}, - ".lasso8": {"Lasso"}, - ".lasso9": {"Lasso"}, - ".latte": {"Latte"}, - ".launch": {"XML"}, - ".lbx": {"TeX"}, - ".ldml": {"Lasso"}, - ".less": {"Less"}, - ".lfe": {"LFE"}, - ".lgt": {"Logtalk"}, - ".lhs": {"Literate Haskell"}, - ".lid": {"Dylan"}, - ".lidr": {"Idris"}, - ".liquid": {"Liquid"}, - ".lisp": {"NewLisp", "Common Lisp"}, - ".litcoffee": {"Literate CoffeeScript"}, - ".ll": {"LLVM"}, - ".lmi": {"Python"}, - ".lock": {"JSON"}, - ".logtalk": {"Logtalk"}, - ".lol": {"LOLCODE"}, - ".lookml": {"LookML"}, - ".lpr": {"Pascal"}, - ".ls": {"LoomScript", "LiveScript"}, - ".lsl": {"LSL"}, - ".lsp": {"NewLisp", "Common Lisp"}, - ".ltx": {"TeX"}, - ".lua": {"Lua"}, - ".lvproj": {"LabVIEW"}, - ".ly": {"LilyPond"}, - ".m": {"Objective-C", "Mercury", "M", "Mathematica", "Matlab"}, - ".ma": {"Mathematica"}, - ".mak": {"Makefile"}, - ".mako": {"Mako"}, - ".man": {"Groff"}, - ".mao": {"Mako"}, - ".markdown": {"Markdown"}, - ".mask": {"Mask"}, - ".mata": {"Stata"}, - ".matah": {"Stata"}, - ".mathematica": {"Mathematica"}, - ".matlab": {"Matlab"}, - ".mawk": {"Awk"}, - ".maxhelp": {"Max"}, - ".maxpat": {"Max"}, - ".maxproj": {"Max"}, - ".md": {"Markdown"}, - ".mediawiki": {"MediaWiki"}, - ".minid": {"MiniD"}, - ".mir": {"Mirah"}, - ".mirah": {"Mirah"}, - ".mk": {"Makefile"}, - ".mkd": {"Markdown"}, - ".mkdn": {"Markdown"}, - ".mkdown": {"Markdown"}, - ".mkii": {"TeX"}, - ".mkiv": {"TeX"}, - ".mkvi": {"TeX"}, - ".ml": {"OCaml"}, - ".ML": {"Standard ML"}, - ".ml4": {"OCaml"}, - ".mli": {"OCaml"}, - ".mll": {"OCaml"}, - ".mly": {"OCaml"}, - ".mm": {"Objective-C++", "XML"}, - ".mo": {"Modelica"}, - ".monkey": {"Monkey"}, - ".moo": {"Mercury", "Moocode"}, - ".moon": {"MoonScript"}, - ".mspec": {"Ruby"}, - ".mss": {"CartoCSS"}, - ".mtml": {"MTML"}, - ".mu": {"mupad"}, - ".mumps": {"M"}, - ".mustache": {"HTML+Django"}, - ".mxml": {"XML"}, - ".mxt": {"Max"}, - ".myt": {"Myghty"}, - ".n": {"Nemerle"}, - ".nawk": {"Awk"}, - ".nb": {"Mathematica"}, - ".nbp": {"Mathematica"}, - ".nc": {"nesC"}, - ".nginxconf": {"Nginx"}, - ".ni": {"Inform 7"}, - ".nim": {"Nimrod"}, - ".nimrod": {"Nimrod"}, - ".ninja": {"Ninja"}, - ".nit": {"Nit"}, - ".nix": {"Nix"}, - ".njs": {"JavaScript"}, - ".nl": {"NewLisp"}, - ".nlogo": {"NetLogo"}, - ".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"}, - ".objdump": {"ObjDump"}, - ".omgrofl": {"Omgrofl"}, - ".ooc": {"ooc"}, - ".opa": {"Opa"}, - ".opal": {"Opal"}, - ".opencl": {"OpenCL"}, - ".org": {"Org"}, - ".osm": {"XML"}, - ".owl": {"Web Ontology Language"}, - ".ox": {"Ox"}, - ".oxh": {"Ox"}, - ".oxo": {"Ox"}, - ".oxygene": {"Oxygene"}, - ".oz": {"Oz"}, - ".p": {"OpenEdge ABL"}, - ".p6": {"Perl6"}, - ".p6l": {"Perl6"}, - ".p6m": {"Perl6"}, - ".pac": {"JavaScript"}, - ".pan": {"Pan"}, - ".parrot": {"Parrot"}, - ".pas": {"Pascal"}, - ".pasm": {"Parrot Assembly"}, - ".pat": {"Max"}, - ".patch": {"Diff"}, - ".pb": {"PureBasic"}, - ".pbi": {"PureBasic"}, - ".pd": {"Pure Data"}, - ".pd_lua": {"Lua"}, - ".pde": {"Processing"}, - ".perl": {"Perl"}, - ".ph": {"Perl"}, - ".php": {"PHP", "Hack"}, - ".php3": {"PHP"}, - ".php4": {"PHP"}, - ".php5": {"PHP"}, - ".phpt": {"PHP"}, - ".phtml": {"HTML+PHP"}, - ".pig": {"PigLatin"}, - ".pike": {"Pike"}, - ".pir": {"Parrot Internal Representation"}, - ".PL": {"Perl"}, - ".pl": {"Perl6", "Perl", "Prolog"}, - ".pl6": {"Perl6"}, - ".plist": {"XML"}, - ".plot": {"Gnuplot"}, - ".plt": {"Gnuplot"}, - ".pluginspec": {"XML", "Ruby"}, - ".plx": {"Perl"}, - ".pm": {"Perl6", "Perl"}, - ".pm6": {"Perl6"}, - ".pmod": {"Pike"}, - ".po": {"Gettext Catalog"}, - ".pod": {"Perl", "Pod"}, - ".podsl": {"Common Lisp"}, - ".podspec": {"Ruby"}, - ".pogo": {"PogoScript"}, - ".pot": {"Gettext Catalog"}, - ".pp": {"Pascal", "Puppet"}, - ".prc": {"SQL"}, - ".prefs": {"INI"}, - ".prg": {"xBase"}, - ".pri": {"QMake"}, - ".pro": {"QMake", "Prolog", "IDL"}, - ".prolog": {"Prolog"}, - ".properties": {"INI"}, - ".proto": {"Protocol Buffer"}, - ".ps": {"PostScript"}, - ".ps1": {"PowerShell"}, - ".ps1xml": {"XML"}, - ".psc": {"Papyrus"}, - ".psc1": {"XML"}, - ".psd1": {"PowerShell"}, - ".psgi": {"Perl"}, - ".psm1": {"PowerShell"}, - ".pt": {"XML"}, - ".pub": {"Public Key"}, - ".purs": {"PureScript"}, - ".pwn": {"PAWN"}, - ".pxd": {"Cython"}, - ".pxi": {"Cython"}, - ".py": {"Python"}, - ".pyde": {"Python"}, - ".pyp": {"Python"}, - ".pyt": {"Python"}, - ".pytb": {"Python traceback"}, - ".pyw": {"Python"}, - ".pyx": {"Cython"}, - ".qml": {"QML"}, - ".R": {"R"}, - ".r": {"Rebol", "R"}, - ".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"}, - ".Rd": {"R"}, - ".rdf": {"XML"}, - ".rdoc": {"RDoc"}, - ".reb": {"Rebol"}, - ".rebol": {"Rebol"}, - ".red": {"Red"}, - ".reds": {"Red"}, - ".reek": {"YAML"}, - ".rest": {"reStructuredText"}, - ".rg": {"Rouge"}, - ".rhtml": {"RHTML"}, - ".rkt": {"Racket"}, - ".rktd": {"Racket"}, - ".rktl": {"Racket"}, - ".rl": {"Ragel in Ruby Host"}, - ".Rmd": {"RMarkdown"}, - ".rmd": {"RMarkdown"}, - ".robot": {"RobotFramework"}, - ".ron": {"Markdown"}, - ".rq": {"SPARQL"}, - ".rs": {"Rust"}, - ".rss": {"XML"}, - ".rst": {"reStructuredText"}, - ".rsx": {"R"}, - ".ru": {"Ruby"}, - ".rviz": {"YAML"}, - ".S": {"GAS"}, - ".s": {"GAS"}, - ".sage": {"Sage"}, - ".sagews": {"Sage"}, - ".sas": {"SAS"}, - ".sass": {"Sass"}, - ".sats": {"ATS"}, - ".sbt": {"Scala"}, - ".sc": {"SuperCollider", "Scala"}, ".scad": {"OpenSCAD"}, - ".scala": {"Scala"}, - ".scaml": {"Scaml"}, - ".scd": {"SuperCollider"}, - ".sce": {"Scilab"}, - ".sch": {"Eagle"}, - ".sci": {"Scilab"}, - ".scm": {"Scheme"}, - ".scpt": {"AppleScript"}, - ".scrbl": {"Racket"}, - ".scss": {"SCSS"}, - ".scxml": {"XML"}, - ".self": {"Self"}, - ".sh": {"Shell"}, - ".sh-session": {"ShellSession"}, - ".shader": {"GLSL"}, - ".shen": {"Shen"}, - ".sig": {"Standard ML"}, - ".sj": {"Objective-J"}, - ".sjs": {"JavaScript"}, - ".sl": {"Slash"}, - ".sld": {"Scheme"}, - ".slim": {"Slim"}, - ".sls": {"Scheme", "SaltStack"}, - ".sml": {"Standard ML"}, - ".sp": {"SourcePawn"}, - ".sparql": {"SPARQL"}, - ".spin": {"Propeller Spin"}, - ".sps": {"Scheme"}, - ".sqf": {"SQF"}, - ".sql": {"SQL"}, - ".srdf": {"XML"}, - ".ss": {"Scheme"}, - ".ssjs": {"JavaScript"}, - ".st": {"HTML", "Smalltalk"}, - ".sthlp": {"Stata"}, - ".ston": {"STON"}, - ".stTheme": {"XML"}, - ".sty": {"TeX"}, - ".styl": {"Stylus"}, - ".sublime-build": {"JavaScript"}, - ".sublime-commands": {"JavaScript"}, - ".sublime-completions": {"JavaScript"}, - ".sublime-keymap": {"JavaScript"}, - ".sublime-macro": {"JavaScript"}, - ".sublime-menu": {"JavaScript"}, - ".sublime-mousemap": {"JavaScript"}, - ".sublime-project": {"JavaScript"}, - ".sublime-settings": {"JavaScript"}, - ".sublime-snippet": {"XML"}, - ".sublime-theme": {"JavaScript"}, - ".sublime-workspace": {"JavaScript"}, - ".sublime_metrics": {"JavaScript"}, - ".sublime_session": {"JavaScript"}, - ".sv": {"SystemVerilog"}, - ".svg": {"XML"}, - ".svh": {"SystemVerilog"}, - ".swift": {"Swift"}, - ".t": {"Perl6", "Turing", "Perl"}, - ".tab": {"SQL"}, - ".tac": {"Python"}, - ".targets": {"XML"}, - ".tcc": {"C++"}, - ".tcl": {"Tcl"}, - ".tcsh": {"Tcsh"}, - ".tea": {"Tea"}, - ".tex": {"TeX"}, - ".textile": {"Textile"}, - ".thor": {"Ruby"}, - ".thrift": {"Thrift"}, - ".thy": {"Isabelle"}, - ".tm": {"Tcl"}, - ".tmCommand": {"XML"}, - ".tml": {"XML"}, - ".tmLanguage": {"XML"}, - ".tmPreferences": {"XML"}, - ".tmSnippet": {"XML"}, - ".tmTheme": {"XML"}, - ".tmux": {"Shell"}, - ".toc": {"TeX"}, - ".toml": {"TOML"}, - ".tpl": {"Smarty"}, - ".tpp": {"C++"}, - ".ts": {"XML", "TypeScript"}, - ".tst": {"Scilab", "GAP"}, - ".ttl": {"Turtle"}, - ".tu": {"Turing"}, - ".twig": {"Twig"}, - ".txl": {"TXL"}, - ".txt": {"Text"}, - ".uc": {"UnrealScript"}, - ".udf": {"SQL"}, - ".ui": {"XML"}, - ".upc": {"Unified Parallel C"}, - ".urdf": {"XML"}, - ".v": {"Verilog", "Coq"}, - ".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"}, - ".vhs": {"VHDL"}, - ".vht": {"VHDL"}, - ".vhw": {"VHDL"}, - ".vim": {"VimL"}, - ".viw": {"SQL"}, - ".volt": {"Volt"}, - ".vrx": {"GLSL"}, - ".vshader": {"GLSL"}, - ".vxml": {"XML"}, - ".w": {"C"}, - ".watchr": {"Ruby"}, - ".webidl": {"WebIDL"}, - ".weechatlog": {"IRC log"}, - ".wisp": {"wisp"}, - ".wlua": {"Lua"}, - ".wsdl": {"XML"}, - ".wsf": {"XML"}, - ".wsgi": {"Python"}, - ".wxi": {"XML"}, - ".wxl": {"XML"}, - ".wxs": {"XML"}, - ".x": {"Logos"}, - ".x3d": {"XML"}, - ".xacro": {"XML"}, - ".xaml": {"XML"}, - ".xc": {"XC"}, - ".xht": {"HTML"}, - ".xhtml": {"HTML"}, - ".xi": {"Logos"}, - ".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"}, - ".xpy": {"Python"}, - ".xq": {"XQuery"}, - ".xql": {"XQuery"}, - ".xqm": {"XQuery"}, - ".xquery": {"XQuery"}, - ".xqy": {"XQuery"}, - ".xs": {"XS"}, - ".xsd": {"XML"}, - ".xsjs": {"JavaScript"}, - ".xsjslib": {"JavaScript"}, + ".brd": {"Eagle", "KiCad"}, + ".glsl": {"GLSL"}, + ".no": {"Text"}, + ".gd": {"GAP", "GDScript"}, + ".nl": {"NewLisp", "NL"}, + ".rdf": {"XML"}, ".xsl": {"XSLT"}, - ".xslt": {"XSLT"}, - ".xtend": {"Xtend"}, - ".xul": {"XML"}, - ".y": {"Bison"}, - ".yaml": {"YAML"}, - ".yml": {"YAML"}, - ".zcml": {"XML"}, - ".zep": {"Zephir"}, - ".zimpl": {"Zimpl"}, - ".zmpl": {"Zimpl"}, - ".zpl": {"Zimpl"}, - ".zsh": {"Shell"}, + "._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"}, + ".abap": {"ABAP"}, + ".cfc": {"ColdFusion CFC"}, + ".ipp": {"C++"}, + ".vbhtml": {"Visual Basic"}, + ".cfg": {"INI"}, + ".sas": {"SAS"}, + ".ftl": {"FreeMarker"}, + ".java": {"Java"}, + ".fth": {"Forth"}, + ".cfm": {"ColdFusion"}, + ".as": {"ActionScript"}, } func init() { diff --git a/content.go b/content.go index 7ad7c05..46a96c7 100644 --- a/content.go +++ b/content.go @@ -18,11 +18,21 @@ func GetLanguageByContent(filename string, content []byte) (lang string, safe bo type languageMatcher func([]byte) (string, bool) var matchers = map[string]languageMatcher{ - ".cl": clExtLanguage, - ".cls": clsExtLanguage, - ".m": mExtLanguage, - ".h": hExtLanguage, - ".pl": plExtLanguage, + ".cl": clExtLanguage, + ".inc": incExtLanguage, + ".cls": clsExtLanguage, + ".m": mExtLanguage, + ".ms": msExtLanguage, + ".h": hExtLanguage, + ".l": lExtLanguage, + ".n": nExtLanguage, + ".lisp": lispExtLanguage, + ".lsp": lispExtLanguage, + ".pm": pmExtLanguage, + ".t": pmExtLanguage, + ".pl": plExtLanguage, + ".pro": proExtLanguage, + ".toc": tocExtLanguage, } var ( @@ -37,6 +47,14 @@ var ( ) ) +func incExtLanguage(input []byte) (string, bool) { + if substring.BytesRegexp(`^<\?(?:php)?`).Match(input) { + return "PHP", true + } + + return OtherLanguage, true +} + func hExtLanguage(input []byte) (string, bool) { if objectiveCMatcher.Match(input) { return "Objective-C", true @@ -47,6 +65,48 @@ func hExtLanguage(input []byte) (string, bool) { return "C", true } +func msExtLanguage(input []byte) (string, bool) { + if substring.BytesRegexp(`[.'][a-z][a-z](\s|$)`).Match(input) { + return "Groff", true + } + + return "MAXScript", true +} + +func nExtLanguage(input []byte) (string, bool) { + if substring.BytesRegexp(`^[.']`).Match(input) { + return "Groff", true + } else if substring.BytesRegexp(`(module|namespace|using)`).Match(input) { + return "Nemerle", true + } + + return OtherLanguage, false +} + +func lExtLanguage(input []byte) (string, bool) { + if substring.BytesRegexp(`\(def(un|macro)\s`).Match(input) { + return "Common Lisp", true + } else if substring.BytesRegexp(`(%[%{}]xs|<.*>)`).Match(input) { + return "Lex", true + } else if substring.BytesRegexp(`\.[a-z][a-z](\s|$)`).Match(input) { + return "Groff", true + } else if substring.BytesRegexp(`(de|class|rel|code|data|must)`).Match(input) { + return "PicoLisp", true + } + + return OtherLanguage, false +} + +func lispExtLanguage(input []byte) (string, bool) { + if commonLispMatcher.Match(input) { + return "Common Lisp", true + } else if substring.BytesRegexp(`\s*\(define `).Match(input) { + return "NewLisp", true + } + + return OtherLanguage, false +} + var ( commonLispMatcher = substring.BytesRegexp("(?i)(defpackage|defun|in-package)") coolMatcher = substring.BytesRegexp("(?i)class") @@ -101,10 +161,10 @@ func clsExtLanguage(input []byte) (string, bool) { } var ( - mathematicaMatcher = substring.BytesHas(`(*`) - matlabMatcher = substring.BytesRegexp(`\b(function\s*[\[a-zA-Z]+|classdef|figure|end|elseif)\b`) + mathematicaMatcher = substring.BytesHas(`\s*\(\*`) + matlabMatcher = substring.BytesRegexp(`\b(function\s*[\[a-zA-Z]+|pcolor|classdef|figure|end|elseif)\b`) objectiveCMatcher = substring.BytesRegexp( - `@(class|end|implementation|interface|property|protocol|selector|synchronised)`) + `@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">]`) ) func mExtLanguage(input []byte) (string, bool) { @@ -121,7 +181,8 @@ func mExtLanguage(input []byte) (string, bool) { var ( prologMatcher = substring.BytesRegexp(`^[^#]+:-`) - perl6Matcher = substring.BytesRegexp(`^(use v6|(my )?class|module)`) + perlMatcher = substring.BytesRegexp(`use strict|use\s+v?5\.`) + perl6Matcher = substring.BytesRegexp(`(use v6|(my )?class|module)`) ) func plExtLanguage(input []byte) (string, bool) { @@ -133,3 +194,31 @@ func plExtLanguage(input []byte) (string, bool) { return "Perl", false } + +func pmExtLanguage(input []byte) (string, bool) { + if perlMatcher.Match(input) { + return "Perl", true + } else if perl6Matcher.Match(input) { + return "Perl6", true + } + + return "Perl", false +} + +func proExtLanguage(input []byte) (string, bool) { + if prologMatcher.Match(input) { + return "Prolog", true + } + + return OtherLanguage, false +} + +func tocExtLanguage(input []byte) (string, bool) { + if substring.BytesRegexp("## |@no-lib-strip@").Match(input) { + return "World of Warcraft Addon Data", true + } else if substring.BytesRegexp("(contentsline|defcounter|beamer|boolfalse)").Match(input) { + return "TeX", true + } + + return OtherLanguage, false +} diff --git a/content_test.go b/content_test.go index bba1ae7..65bc02b 100644 --- a/content_test.go +++ b/content_test.go @@ -9,8 +9,25 @@ import ( . "gopkg.in/check.v1" ) -func (s *TSuite) TestGetLanguageByContent(c *C) { +func (s *TSuite) TestGetLanguageByContentH(c *C) { + s.testGetLanguageByContent(c, "Objective-C") + s.testGetLanguageByContent(c, "C++") s.testGetLanguageByContent(c, "C") + s.testGetLanguageByContent(c, "Common Lisp") + s.testGetLanguageByContent(c, "Cool") + s.testGetLanguageByContent(c, "OpenCL") + s.testGetLanguageByContent(c, "Groff") + s.testGetLanguageByContent(c, "PicoLisp") + s.testGetLanguageByContent(c, "PicoLisp") + s.testGetLanguageByContent(c, "NewLisp") + s.testGetLanguageByContent(c, "Lex") + s.testGetLanguageByContent(c, "TeX") + s.testGetLanguageByContent(c, "Visual Basic") + s.testGetLanguageByContent(c, "Matlab") + s.testGetLanguageByContent(c, "Mathematica") + s.testGetLanguageByContent(c, "Prolog") + s.testGetLanguageByContent(c, "Perl") + s.testGetLanguageByContent(c, "Perl6") } func (s *TSuite) testGetLanguageByContent(c *C, expected string) { @@ -26,6 +43,10 @@ func (s *TSuite) testGetLanguageByContent(c *C, expected string) { content, _ := ioutil.ReadFile(file) obtained, _ := GetLanguageByContent(path.Base(file), content) - c.Assert(obtained, Equals, expected, Commentf(file)) + if obtained == OtherLanguage { + continue + } + + c.Check(obtained, Equals, expected, Commentf(file)) } } diff --git a/extension.go b/extension.go index 68aa33e..ac56c0b 100644 --- a/extension.go +++ b/extension.go @@ -2,11 +2,14 @@ package slinguist import ( "path/filepath" + "strings" ) func GetLanguageByExtension(filename string) (lang string, safe bool) { + ext := strings.ToLower(filepath.Ext(filename)) + lang = OtherLanguage - langs, ok := LanguagesByExtension[filepath.Ext(filename)] + langs, ok := LanguagesByExtension[ext] if !ok { return }