| @@ -43,6 +43,7 @@ require ( | |||||
| github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect | github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect | ||||
| github.com/gliderlabs/ssh v0.2.2 | github.com/gliderlabs/ssh v0.2.2 | ||||
| github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a // indirect | github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a // indirect | ||||
| github.com/go-enry/go-enry/v2 v2.3.0 | |||||
| github.com/go-git/go-billy/v5 v5.0.0 | github.com/go-git/go-billy/v5 v5.0.0 | ||||
| github.com/go-git/go-git/v5 v5.0.0 | github.com/go-git/go-git/v5 v5.0.0 | ||||
| github.com/go-openapi/jsonreference v0.19.3 // indirect | github.com/go-openapi/jsonreference v0.19.3 // indirect | ||||
| @@ -93,7 +94,6 @@ require ( | |||||
| github.com/sergi/go-diff v1.1.0 | github.com/sergi/go-diff v1.1.0 | ||||
| github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect | github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect | ||||
| github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd | github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd | ||||
| github.com/src-d/enry/v2 v2.1.0 | |||||
| github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 // indirect | github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 // indirect | ||||
| github.com/stretchr/testify v1.4.0 | github.com/stretchr/testify v1.4.0 | ||||
| github.com/tecbot/gorocksdb v0.0.0-20181010114359-8752a9433481 // indirect | github.com/tecbot/gorocksdb v0.0.0-20181010114359-8752a9433481 // indirect | ||||
| @@ -183,6 +183,10 @@ github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a h1:FQqo | |||||
| github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= | github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= | ||||
| github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= | github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= | ||||
| github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= | github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= | ||||
| github.com/go-enry/go-enry/v2 v2.3.0 h1:o8KwgY6uSplysrIpj+Y42J/xGPp90ogVpxE2Z3s8Unk= | |||||
| github.com/go-enry/go-enry/v2 v2.3.0/go.mod h1:+xFJwbqWi15bvqFHb2ELUWVRKFQtwB61+sDrkvvxxGI= | |||||
| github.com/go-enry/go-oniguruma v1.2.0 h1:oBO9XC1IDT9+AoWW5oFsa/7gFeOPacEqDbyXZKWXuDs= | |||||
| github.com/go-enry/go-oniguruma v1.2.0/go.mod h1:bWDhYP+S6xZQgiRL7wlTScFYBe023B6ilRZbCAD5Hf4= | |||||
| github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= | github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= | ||||
| github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= | github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= | ||||
| github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM= | github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM= | ||||
| @@ -560,10 +564,6 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn | |||||
| github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= | github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= | ||||
| github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= | github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= | ||||
| github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= | github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= | ||||
| github.com/src-d/enry/v2 v2.1.0 h1:z1L8t+B8bh3mmjPkJrgOTnVRpFGmTPJsplHX9wAn6BI= | |||||
| github.com/src-d/enry/v2 v2.1.0/go.mod h1:qQeCMRwzMF3ckeGr+h0tJLdxXnq+NVZsIDMELj0t028= | |||||
| github.com/src-d/go-oniguruma v1.1.0 h1:EG+Nm5n2JqWUaCjtM0NtutPxU7ZN5Tp50GWrrV8bTww= | |||||
| github.com/src-d/go-oniguruma v1.1.0/go.mod h1:chVbff8kcVtmrhxtZ3yBVLLquXbzCS6DrxQaAK/CeqM= | |||||
| github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 h1:JNEGSiWg6D3lcBCMCBqN3ELniXujt+0QNHLhNnO0w3s= | github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 h1:JNEGSiWg6D3lcBCMCBqN3ELniXujt+0QNHLhNnO0w3s= | ||||
| github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2/go.mod h1:mjqs7N0Q6m5HpR7QfXVBZXZWSqTjQLeTujjA/xUp2uw= | github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2/go.mod h1:mjqs7N0Q6m5HpR7QfXVBZXZWSqTjQLeTujjA/xUp2uw= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| @@ -829,6 +829,8 @@ gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= | |||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= | gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= | ||||
| gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= | |||||
| gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | |||||
| honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| @@ -10,7 +10,7 @@ import ( | |||||
| "code.gitea.io/gitea/modules/timeutil" | "code.gitea.io/gitea/modules/timeutil" | ||||
| "github.com/src-d/enry/v2" | |||||
| "github.com/go-enry/go-enry/v2" | |||||
| ) | ) | ||||
| // LanguageStat describes language statistics of a repository | // LanguageStat describes language statistics of a repository | ||||
| @@ -7,7 +7,7 @@ package analyze | |||||
| import ( | import ( | ||||
| "path/filepath" | "path/filepath" | ||||
| "github.com/src-d/enry/v2" | |||||
| "github.com/go-enry/go-enry/v2" | |||||
| ) | ) | ||||
| // GetCodeLanguageWithCallback detects code language based on file name and content using callback | // GetCodeLanguageWithCallback detects code language based on file name and content using callback | ||||
| @@ -12,10 +12,10 @@ import ( | |||||
| "code.gitea.io/gitea/modules/analyze" | "code.gitea.io/gitea/modules/analyze" | ||||
| "github.com/go-enry/go-enry/v2" | |||||
| "github.com/go-git/go-git/v5" | "github.com/go-git/go-git/v5" | ||||
| "github.com/go-git/go-git/v5/plumbing" | "github.com/go-git/go-git/v5/plumbing" | ||||
| "github.com/go-git/go-git/v5/plumbing/object" | "github.com/go-git/go-git/v5/plumbing/object" | ||||
| "github.com/src-d/enry/v2" | |||||
| ) | ) | ||||
| const fileSizeLimit int64 = 16 * 1024 * 1024 | const fileSizeLimit int64 = 16 * 1024 * 1024 | ||||
| @@ -30,7 +30,7 @@ import ( | |||||
| "github.com/blevesearch/bleve/mapping" | "github.com/blevesearch/bleve/mapping" | ||||
| "github.com/blevesearch/bleve/search/query" | "github.com/blevesearch/bleve/search/query" | ||||
| "github.com/ethantkoenig/rupture" | "github.com/ethantkoenig/rupture" | ||||
| "github.com/src-d/enry/v2" | |||||
| "github.com/go-enry/go-enry/v2" | |||||
| ) | ) | ||||
| const unicodeNormalizeName = "unicodeNormalize" | const unicodeNormalizeName = "unicodeNormalize" | ||||
| @@ -1,4 +1,4 @@ | |||||
| .linguist | |||||
| .linguist* | |||||
| benchmarks/output | benchmarks/output | ||||
| .ci | .ci | ||||
| Makefile.main | Makefile.main | ||||
| @@ -9,3 +9,4 @@ build/ | |||||
| vendor/ | vendor/ | ||||
| java/lib/ | java/lib/ | ||||
| .vscode/ | .vscode/ | ||||
| .venv | |||||
| @@ -1,8 +1,9 @@ | |||||
| dist: trusty | dist: trusty | ||||
| language: go | language: go | ||||
| go: | go: | ||||
| - '1.12.x' | |||||
| - '1.11.x' | |||||
| - '1.14.x' | |||||
| - '1.13.x' | |||||
| env: | env: | ||||
| global: | global: | ||||
| - GO_VERSION_FOR_JVM='1.11.x' | - GO_VERSION_FOR_JVM='1.11.x' | ||||
| @@ -12,8 +13,6 @@ env: | |||||
| matrix: | matrix: | ||||
| - ONIGURUMA=0 | - ONIGURUMA=0 | ||||
| - ONIGURUMA=1 | - ONIGURUMA=1 | ||||
| matrix: | |||||
| fast_finish: true | |||||
| stages: | stages: | ||||
| - name: test | - name: test | ||||
| @@ -22,7 +21,6 @@ stages: | |||||
| - name: publish | - name: publish | ||||
| if: tag IS present | if: tag IS present | ||||
| stage: test | |||||
| install: | install: | ||||
| - > | - > | ||||
| if [[ "${ONIGURUMA}" -gt 0 ]]; then | if [[ "${ONIGURUMA}" -gt 0 ]]; then | ||||
| @@ -36,7 +34,7 @@ install: | |||||
| sudo dpkg -i "libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb" | sudo dpkg -i "libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb" | ||||
| fi; | fi; | ||||
| script: | script: | ||||
| - make test-coverage | |||||
| - go test ./... | |||||
| after_success: | after_success: | ||||
| - bash <(curl -s https://codecov.io/bash) | - bash <(curl -s https://codecov.io/bash) | ||||
| @@ -98,7 +96,7 @@ jobs: | |||||
| - sudo apt-get install -y --no-install-recommends clang g++ gcc gcc-multilib libc6-dev libc6-dev-i386 mingw-w64 patch xz-utils | - sudo apt-get install -y --no-install-recommends clang g++ gcc gcc-multilib libc6-dev libc6-dev-i386 mingw-w64 patch xz-utils | ||||
| - cd ${HOME} | - cd ${HOME} | ||||
| - curl -sfSL ${OSXCROSS_URL} | tar -C ${HOME} -xzf - | - curl -sfSL ${OSXCROSS_URL} | tar -C ${HOME} -xzf - | ||||
| - cd $GOPATH/src/github.com/src-d/enry | |||||
| - cd $GOPATH/src/github.com/bzz/enry | |||||
| script: make darwin-shared | script: make darwin-shared | ||||
| deploy: | deploy: | ||||
| provider: releases | provider: releases | ||||
| @@ -1,3 +1,4 @@ | |||||
| Apache License | Apache License | ||||
| Version 2.0, January 2004 | Version 2.0, January 2004 | ||||
| http://www.apache.org/licenses/ | http://www.apache.org/licenses/ | ||||
| @@ -178,7 +179,7 @@ | |||||
| APPENDIX: How to apply the Apache License to your work. | APPENDIX: How to apply the Apache License to your work. | ||||
| To apply the Apache License to your work, attach the following | To apply the Apache License to your work, attach the following | ||||
| boilerplate notice, with the fields enclosed by brackets "{}" | |||||
| boilerplate notice, with the fields enclosed by brackets "[]" | |||||
| replaced with your own identifying information. (Don't include | replaced with your own identifying information. (Don't include | ||||
| the brackets!) The text should be enclosed in the appropriate | the brackets!) The text should be enclosed in the appropriate | ||||
| comment syntax for the file format. We also recommend that a | comment syntax for the file format. We also recommend that a | ||||
| @@ -186,7 +187,7 @@ | |||||
| same "printed page" as the copyright notice for easier | same "printed page" as the copyright notice for easier | ||||
| identification within third-party archives. | identification within third-party archives. | ||||
| Copyright 2017 Sourced Technologies, S.L. | |||||
| Copyright [yyyy] [name of copyright owner] | |||||
| Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. | ||||
| @@ -198,4 +199,4 @@ | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | See the License for the specific language governing permissions and | ||||
| limitations under the License. | |||||
| limitations under the License. | |||||
| @@ -1,26 +1,3 @@ | |||||
| # Package configuration | |||||
| PROJECT = enry | |||||
| COMMANDS = cmd/enry | |||||
| # Including ci Makefile | |||||
| CI_REPOSITORY ?= https://github.com/src-d/ci.git | |||||
| CI_BRANCH ?= v1 | |||||
| CI_PATH ?= .ci | |||||
| MAKEFILE := $(CI_PATH)/Makefile.main | |||||
| $(MAKEFILE): | |||||
| git clone --quiet --depth 1 -b $(CI_BRANCH) $(CI_REPOSITORY) $(CI_PATH); | |||||
| -include $(MAKEFILE) | |||||
| # Docsrv: configure the languages whose api-doc can be auto generated | |||||
| LANGUAGES = go | |||||
| # Docs: do not edit this | |||||
| DOCS_REPOSITORY := https://github.com/src-d/docs | |||||
| SHARED_PATH ?= $(shell pwd)/.docsrv-resources | |||||
| DOCS_PATH ?= $(SHARED_PATH)/.docs | |||||
| $(DOCS_PATH)/Makefile.inc: | |||||
| git clone --quiet --depth 1 $(DOCS_REPOSITORY) $(DOCS_PATH); | |||||
| -include $(DOCS_PATH)/Makefile.inc | |||||
| LINGUIST_PATH = .linguist | LINGUIST_PATH = .linguist | ||||
| # shared objects | # shared objects | ||||
| @@ -29,6 +6,7 @@ LINUX_DIR=$(RESOURCES_DIR)/linux-x86-64 | |||||
| LINUX_SHARED_LIB=$(LINUX_DIR)/libenry.so | LINUX_SHARED_LIB=$(LINUX_DIR)/libenry.so | ||||
| DARWIN_DIR=$(RESOURCES_DIR)/darwin | DARWIN_DIR=$(RESOURCES_DIR)/darwin | ||||
| DARWIN_SHARED_LIB=$(DARWIN_DIR)/libenry.dylib | DARWIN_SHARED_LIB=$(DARWIN_DIR)/libenry.dylib | ||||
| STATIC_LIB=$(RESOURCES_DIR)/libenry.a | |||||
| HEADER_FILE=libenry.h | HEADER_FILE=libenry.h | ||||
| NATIVE_LIB=./shared/enry.go | NATIVE_LIB=./shared/enry.go | ||||
| @@ -79,4 +57,10 @@ $(LINUX_SHARED_LIB): | |||||
| CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -buildmode=c-shared -o $(LINUX_SHARED_LIB) $(NATIVE_LIB) && \ | CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -buildmode=c-shared -o $(LINUX_SHARED_LIB) $(NATIVE_LIB) && \ | ||||
| mv $(LINUX_DIR)/$(HEADER_FILE) $(RESOURCES_DIR)/$(HEADER_FILE) | mv $(LINUX_DIR)/$(HEADER_FILE) $(RESOURCES_DIR)/$(HEADER_FILE) | ||||
| static: $(STATIC_LIB) | |||||
| $(STATIC_LIB): | |||||
| CGO_ENABLED=1 go build -buildmode=c-archive -o $(STATIC_LIB) $(NATIVE_LIB) | |||||
| .PHONY: benchmarks benchmarks-samples benchmarks-slow | .PHONY: benchmarks benchmarks-samples benchmarks-slow | ||||
| @@ -0,0 +1,303 @@ | |||||
| # go-enry [](https://pkg.go.dev/github.com/go-enry/go-enry/v2) [](https://github.com/go-enry/go-enry/actions?query=workflow%3ATest+branch%3Amaster) [](https://codecov.io/gh/go-enry/go-enry) | |||||
| Programming language detector and toolbox to ignore binary or vendored files. *enry*, started as a port to _Go_ of the original [Linguist](https://github.com/github/linguist) _Ruby_ library, that has an improved *2x performance*. | |||||
| * [CLI](#cli) | |||||
| * [Library](#library) | |||||
| * [Use cases](#use-cases) | |||||
| * [By filename](#by-filename) | |||||
| * [By text](#by-text) | |||||
| * [By file](#by-file) | |||||
| * [Filtering](#filtering-vendoring-binaries-etc) | |||||
| * [Coloring](#language-colors-and-groups) | |||||
| * [Languages](#languages) | |||||
| * [Go](#go) | |||||
| * [Java bindings](#java-bindings) | |||||
| * [Python bindings](#python-bindings) | |||||
| * [Divergences from linguist](#divergences-from-linguist) | |||||
| * [Benchmarks](#benchmarks) | |||||
| * [Why Enry?](#why-enry) | |||||
| * [Development](#development) | |||||
| * [Sync with github/linguist upstream](#sync-with-githublinguist-upstream) | |||||
| * [Misc](#misc) | |||||
| * [License](#license) | |||||
| # CLI | |||||
| The CLI binary is hosted in a separate repository [go-enry/enry](https://github.com/go-enry/enry). | |||||
| # Library | |||||
| *enry* is also a Go library for guessing a programming language that exposes API through FFI to multiple programming environments. | |||||
| ## Use cases | |||||
| *enry* guesses a programming language using a sequence of matching *strategies* that are | |||||
| applied progressively to narrow down the possible options. Each *strategy* varies on the type | |||||
| of input data that it needs to make a decision: file name, extension, the first line of the file, the full content of the file, etc. | |||||
| Depending on available input data, enry API can be roughly divided into the next categories or use cases. | |||||
| ### By filename | |||||
| Next functions require only a name of the file to make a guess: | |||||
| - `GetLanguageByExtension` uses only file extension (wich may be ambiguous) | |||||
| - `GetLanguageByFilename` useful for cases like `.gitignore`, `.bashrc`, etc | |||||
| - all [filtering helpers](#filtering) | |||||
| Please note that such guesses are expected not to be very accurate. | |||||
| ### By text | |||||
| To make a guess only based on the content of the file or a text snippet, use | |||||
| - `GetLanguageByShebang` reads only the first line of text to identify the [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)). | |||||
| - `GetLanguageByModeline` for cases when Vim/Emacs modeline e.g. `/* vim: set ft=cpp: */` may be present at a head or a tail of the text. | |||||
| - `GetLanguageByClassifier` uses a Bayesian classifier trained on all the `./samples/` from Linguist. | |||||
| It usually is a last-resort strategy that is used to disambiguate the guess of the previous strategies, and thus it requires a list of "candidate" guesses. One can provide a list of all known languages - keys from the `data.LanguagesLogProbabilities` as possible candidates if more intelligent hypotheses are not available, at the price of possibly suboptimal accuracy. | |||||
| ### By file | |||||
| The most accurate guess would be one when both, the file name and the content are available: | |||||
| - `GetLanguagesByContent` only uses file extension and a set of regexp-based content heuristics. | |||||
| - `GetLanguages` uses the full set of matching strategies and is expected to be most accurate. | |||||
| ### Filtering: vendoring, binaries, etc | |||||
| *enry* expose a set of file-level helpers `Is*` to simplify filtering out the files that are less interesting for the purpose of source code analysis: | |||||
| - `IsBinary` | |||||
| - `IsVendor` | |||||
| - `IsConfiguration` | |||||
| - `IsDocumentation` | |||||
| - `IsDotFile` | |||||
| - `IsImage` | |||||
| ### Language colors and groups | |||||
| *enry* exposes function to get language color to use for example in presenting statistics in graphs: | |||||
| - `GetColor` | |||||
| - `GetLanguageGroup` can be used to group similar languages together e.g. for `Less` this function will return `CSS` | |||||
| ## Languages | |||||
| ### Go | |||||
| In a [Go module](https://github.com/golang/go/wiki/Modules), | |||||
| import `enry` to the module by running: | |||||
| ```sh | |||||
| go get github.com/go-enry/go-enry/v2 | |||||
| ``` | |||||
| The rest of the examples will assume you have either done this or fetched the | |||||
| library into your `GOPATH`. | |||||
| ```go | |||||
| // The examples here and below assume you have imported the library. | |||||
| import "github.com/go-enry/go-enry/v2" | |||||
| lang, safe := enry.GetLanguageByExtension("foo.go") | |||||
| fmt.Println(lang, safe) | |||||
| // result: Go true | |||||
| lang, safe := enry.GetLanguageByContent("foo.m", []byte("<matlab-code>")) | |||||
| fmt.Println(lang, safe) | |||||
| // result: Matlab true | |||||
| lang, safe := enry.GetLanguageByContent("bar.m", []byte("<objective-c-code>")) | |||||
| fmt.Println(lang, safe) | |||||
| // result: Objective-C true | |||||
| // all strategies together | |||||
| lang := enry.GetLanguage("foo.cpp", []byte("<cpp-code>")) | |||||
| // result: C++ true | |||||
| ``` | |||||
| Note that the returned boolean value `safe` is `true` if there is only one possible language detected. | |||||
| A plural version of the same API allows getting a list of all possible languages for a given file. | |||||
| ```go | |||||
| langs := enry.GetLanguages("foo.h", []byte("<cpp-code>")) | |||||
| // result: []string{"C", "C++", "Objective-C} | |||||
| langs := enry.GetLanguagesByExtension("foo.asc", []byte("<content>"), nil) | |||||
| // result: []string{"AGS Script", "AsciiDoc", "Public Key"} | |||||
| langs := enry.GetLanguagesByFilename("Gemfile", []byte("<content>"), []string{}) | |||||
| // result: []string{"Ruby"} | |||||
| ``` | |||||
| ### Java bindings | |||||
| Generated Java bindings using a C shared library and JNI are available under [`java`](https://github.com/go-enry/go-enry/blob/master/java). | |||||
| A library is published on Maven as [tech.sourced:enry-java](https://mvnrepository.com/artifact/tech.sourced/enry-java) for macOS and linux platforms. Windows support is planned under [src-d/enry#150](https://github.com/src-d/enry/issues/150). | |||||
| ### Python bindings | |||||
| Generated Python bindings using a C shared library and cffi are WIP under [src-d/enry#154](https://github.com/src-d/enry/issues/154). | |||||
| A library is going to be published on pypi as [enry](https://pypi.org/project/enry/) for | |||||
| macOS and linux platforms. Windows support is planned under [src-d/enry#150](https://github.com/src-d/enry/issues/150). | |||||
| Divergences from Linguist | |||||
| ------------ | |||||
| The `enry` library is based on the data from `github/linguist` version **v7.9.0**. | |||||
| Parsing [linguist/samples](https://github.com/github/linguist/tree/master/samples) the following `enry` results are different from the Linguist: | |||||
| * [Heuristics for ".es" extension](https://github.com/github/linguist/blob/e761f9b013e5b61161481fcb898b59721ee40e3d/lib/linguist/heuristics.yml#L103) in JavaScript could not be parsed, due to unsupported backreference in RE2 regexp engine. | |||||
| * [Heuristics for ".rno" extension](https://github.com/github/linguist/blob/3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d/lib/linguist/heuristics.yml#L365) in RUNOFF could not be parsed, due to unsupported lookahead in RE2 regexp engine. | |||||
| * [Heuristics for ".inc" extension](https://github.com/github/linguist/blob/f0e2d0d7f1ce600b2a5acccaef6b149c87d8b99c/lib/linguist/heuristics.yml#L222) in NASL could not be parsed, due to unsupported possessive quantifier in RE2 regexp engine. | |||||
| * As of [Linguist v5.3.2](https://github.com/github/linguist/releases/tag/v5.3.2) it is using [flex-based scanner in C for tokenization](https://github.com/github/linguist/pull/3846). Enry still uses [extract_token](https://github.com/github/linguist/pull/3846/files#diff-d5179df0b71620e3fac4535cd1368d15L60) regex-based algorithm. See [#193](https://github.com/src-d/enry/issues/193). | |||||
| * Bayesian classifier can't distinguish "SQL" from "PLpgSQL. See [#194](https://github.com/src-d/enry/issues/194). | |||||
| * Detection of [generated files](https://github.com/github/linguist/blob/bf95666fc15e49d556f2def4d0a85338423c25f3/lib/linguist/generated.rb#L53) is not supported yet. | |||||
| (Thus they are not excluded from CLI output). See [#213](https://github.com/src-d/enry/issues/213). | |||||
| * XML detection strategy is not implemented. See [#192](https://github.com/src-d/enry/issues/192). | |||||
| * Overriding languages and types though `.gitattributes` is not yet supported. See [#18](https://github.com/src-d/enry/issues/18). | |||||
| * `enry` CLI output does NOT exclude `.gitignore`ed files and git submodules, as Linguist does | |||||
| In all the cases above that have an issue number - we plan to update enry to match Linguist behavior. | |||||
| Benchmarks | |||||
| ------------ | |||||
| Enry's language detection has been compared with Linguist's on [*linguist/samples*](https://github.com/github/linguist/tree/master/samples). | |||||
| We got these results: | |||||
|  | |||||
| The histogram shows the _number of files_ (y-axis) per _time interval bucket_ (x-axis). | |||||
| Most of the files were detected faster by enry. | |||||
| There are several cases where enry is slower than Linguist due to | |||||
| Go regexp engine being slower than Ruby's on, wich is based on [oniguruma](https://github.com/kkos/oniguruma) library, written in C. | |||||
| See [instructions](#misc) for running enry with oniguruma. | |||||
| Why Enry? | |||||
| ------------ | |||||
| In the movie [My Fair Lady](https://en.wikipedia.org/wiki/My_Fair_Lady), [Professor Henry Higgins](http://www.imdb.com/character/ch0011719/) is a linguist who at the very beginning of the movie enjoys guessing the origin of people based on their accent. | |||||
| "Enry Iggins" is how [Eliza Doolittle](http://www.imdb.com/character/ch0011720/), [pronounces](https://www.youtube.com/watch?v=pwNKyTktDIE) the name of the Professor. | |||||
| ## Development | |||||
| To run the tests use: | |||||
| go test ./... | |||||
| Setting `ENRY_TEST_REPO` to the path to existing checkout of Linguist will avoid cloning it and sepeed tests up. | |||||
| Setting `ENRY_DEBUG=1` will provide insight in the Bayesian classifier building done by `make code-generate`. | |||||
| ### Sync with github/linguist upstream | |||||
| *enry* re-uses parts of the original [github/linguist](https://github.com/github/linguist) to generate internal data structures. | |||||
| In order to update to the latest release of linguist do: | |||||
| ```bash | |||||
| $ git clone https://github.com/github/linguist.git .linguist | |||||
| $ cd .linguist; git checkout <release-tag>; cd .. | |||||
| # put the new release's commit sha in the generator_test.go (to re-generate .gold test fixtures) | |||||
| # https://github.com/go-enry/go-enry/blob/13d3d66d37a87f23a013246a1b0678c9ee3d524b/internal/code-generator/generator/generator_test.go#L18 | |||||
| $ make code-generate | |||||
| ``` | |||||
| To stay in sync, enry needs to be updated when a new release of the linguist includes changes to any of the following files: | |||||
| * [languages.yml](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml) | |||||
| * [heuristics.yml](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.yml) | |||||
| * [vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) | |||||
| * [documentation.yml](https://github.com/github/linguist/blob/master/lib/linguist/documentation.yml) | |||||
| There is no automation for detecting the changes in the linguist project, so this process above has to be done manually from time to time. | |||||
| When submitting a pull request syncing up to a new release, please make sure it only contains the changes in | |||||
| the generated files (in [data](https://github.com/go-enry/go-enry/blob/master/data) subdirectory). | |||||
| Separating all the necessary "manual" code changes to a different PR that includes some background description and an update to the documentation on ["divergences from linguist"](#divergences-from-linguist) is very much appreciated as it simplifies the maintenance (review/release notes/etc). | |||||
| ## Misc | |||||
| <details> | |||||
| <summary>Running a benchmark & faster regexp engine</summary> | |||||
| ### Benchmark | |||||
| All benchmark scripts are in [*benchmarks*](https://github.com/go-enry/go-enry/blob/master/benchmarks) directory. | |||||
| #### Dependencies | |||||
| As benchmarks depend on Ruby and Github-Linguist gem make sure you have: | |||||
| - Ruby (e.g using [`rbenv`](https://github.com/rbenv/rbenv)), [`bundler`](https://bundler.io/) installed | |||||
| - Docker | |||||
| - [native dependencies](https://github.com/github/linguist/#dependencies) installed | |||||
| - Build the gem `cd .linguist && bundle install && rake build_gem && cd -` | |||||
| - Install it `gem install --no-rdoc --no-ri --local .linguist/github-linguist-*.gem` | |||||
| #### Quick benchmark | |||||
| To run quicker benchmarks | |||||
| make benchmarks | |||||
| to get average times for the primary detection function and strategies for the whole samples set. If you want to see measures per sample file use: | |||||
| make benchmarks-samples | |||||
| #### Full benchmark | |||||
| If you want to reproduce the same benchmarks as reported above: | |||||
| - Make sure all [dependencies](#benchmark-dependencies) are installed | |||||
| - Install [gnuplot](http://gnuplot.info) (in order to plot the histogram) | |||||
| - Run `ENRY_TEST_REPO="$PWD/.linguist" benchmarks/run.sh` (takes ~15h) | |||||
| It will run the benchmarks for enry and Linguist, parse the output, create csv files and plot the histogram. | |||||
| ### Faster regexp engine (optional) | |||||
| [Oniguruma](https://github.com/kkos/oniguruma) is CRuby's regular expression engine. | |||||
| It is very fast and performs better than the one built into Go runtime. *enry* supports swapping | |||||
| between those two engines thanks to [rubex](https://github.com/moovweb/rubex) project. | |||||
| The typical overall speedup from using Oniguruma is 1.5-2x. However, it requires CGo and the external shared library. | |||||
| On macOS with [Homebrew](https://brew.sh/), it is: | |||||
| ``` | |||||
| brew install oniguruma | |||||
| ``` | |||||
| On Ubuntu, it is | |||||
| ``` | |||||
| sudo apt install libonig-dev | |||||
| ``` | |||||
| To build enry with Oniguruma regexps use the `oniguruma` build tag | |||||
| ``` | |||||
| go get -v -t --tags oniguruma ./... | |||||
| ``` | |||||
| and then rebuild the project. | |||||
| </details> | |||||
| License | |||||
| ------------ | |||||
| Apache License, Version 2.0. See [LICENSE](LICENSE) | |||||
| @@ -4,16 +4,16 @@ import ( | |||||
| "math" | "math" | ||||
| "sort" | "sort" | ||||
| "github.com/src-d/enry/v2/internal/tokenizer" | |||||
| "github.com/go-enry/go-enry/v2/internal/tokenizer" | |||||
| ) | ) | ||||
| // Classifier is the interface in charge to detect the possible languages of the given content based on a set of | |||||
| // classifier is the interface in charge to detect the possible languages of the given content based on a set of | |||||
| // candidates. Candidates is a map which can be used to assign weights to languages dynamically. | // candidates. Candidates is a map which can be used to assign weights to languages dynamically. | ||||
| type Classifier interface { | |||||
| Classify(content []byte, candidates map[string]float64) (languages []string) | |||||
| type classifier interface { | |||||
| classify(content []byte, candidates map[string]float64) (languages []string) | |||||
| } | } | ||||
| type classifier struct { | |||||
| type naiveBayes struct { | |||||
| languagesLogProbabilities map[string]float64 | languagesLogProbabilities map[string]float64 | ||||
| tokensLogProbabilities map[string]map[string]float64 | tokensLogProbabilities map[string]map[string]float64 | ||||
| tokensTotal float64 | tokensTotal float64 | ||||
| @@ -24,8 +24,8 @@ type scoredLanguage struct { | |||||
| score float64 | score float64 | ||||
| } | } | ||||
| // Classify returns a sorted slice of possible languages sorted by decreasing language's probability | |||||
| func (c *classifier) Classify(content []byte, candidates map[string]float64) []string { | |||||
| // classify returns a sorted slice of possible languages sorted by decreasing language's probability | |||||
| func (c *naiveBayes) classify(content []byte, candidates map[string]float64) []string { | |||||
| var languages map[string]float64 | var languages map[string]float64 | ||||
| if len(candidates) == 0 { | if len(candidates) == 0 { | ||||
| @@ -73,7 +73,7 @@ func sortLanguagesByScore(scoredLangs []*scoredLanguage) []string { | |||||
| return sortedLanguages | return sortedLanguages | ||||
| } | } | ||||
| func (c *classifier) knownLangs() map[string]float64 { | |||||
| func (c *naiveBayes) knownLangs() map[string]float64 { | |||||
| langs := make(map[string]float64, len(c.languagesLogProbabilities)) | langs := make(map[string]float64, len(c.languagesLogProbabilities)) | ||||
| for lang := range c.languagesLogProbabilities { | for lang := range c.languagesLogProbabilities { | ||||
| langs[lang]++ | langs[lang]++ | ||||
| @@ -82,7 +82,7 @@ func (c *classifier) knownLangs() map[string]float64 { | |||||
| return langs | return langs | ||||
| } | } | ||||
| func (c *classifier) tokensLogProbability(tokens []string, language string) float64 { | |||||
| func (c *naiveBayes) tokensLogProbability(tokens []string, language string) float64 { | |||||
| var sum float64 | var sum float64 | ||||
| for _, token := range tokens { | for _, token := range tokens { | ||||
| sum += c.tokenProbability(token, language) | sum += c.tokenProbability(token, language) | ||||
| @@ -91,7 +91,7 @@ func (c *classifier) tokensLogProbability(tokens []string, language string) floa | |||||
| return sum | return sum | ||||
| } | } | ||||
| func (c *classifier) tokenProbability(token, language string) float64 { | |||||
| func (c *naiveBayes) tokenProbability(token, language string) float64 { | |||||
| tokenProb, ok := c.tokensLogProbabilities[language][token] | tokenProb, ok := c.tokensLogProbabilities[language][token] | ||||
| if !ok { | if !ok { | ||||
| tokenProb = math.Log(1.000000 / c.tokensTotal) | tokenProb = math.Log(1.000000 / c.tokensTotal) | ||||
| @@ -6,8 +6,8 @@ import ( | |||||
| "path/filepath" | "path/filepath" | ||||
| "strings" | "strings" | ||||
| "github.com/src-d/enry/v2/data" | |||||
| "github.com/src-d/enry/v2/regex" | |||||
| "github.com/go-enry/go-enry/v2/data" | |||||
| "github.com/go-enry/go-enry/v2/regex" | |||||
| ) | ) | ||||
| // OtherLanguage is used as a zero value when a function can not return a specific language. | // OtherLanguage is used as a zero value when a function can not return a specific language. | ||||
| @@ -26,8 +26,8 @@ var DefaultStrategies = []Strategy{ | |||||
| GetLanguagesByClassifier, | GetLanguagesByClassifier, | ||||
| } | } | ||||
| // DefaultClassifier is a Naive Bayes classifier trained on Linguist samples. | |||||
| var DefaultClassifier Classifier = &classifier{ | |||||
| // defaultClassifier is a Naive Bayes classifier trained on Linguist samples. | |||||
| var defaultClassifier classifier = &naiveBayes{ | |||||
| languagesLogProbabilities: data.LanguagesLogProbabilities, | languagesLogProbabilities: data.LanguagesLogProbabilities, | ||||
| tokensLogProbabilities: data.TokensLogProbabilities, | tokensLogProbabilities: data.TokensLogProbabilities, | ||||
| tokensTotal: data.TokensTotal, | tokensTotal: data.TokensTotal, | ||||
| @@ -92,7 +92,7 @@ func GetLanguageByContent(filename string, content []byte) (language string, saf | |||||
| } | } | ||||
| // GetLanguageByClassifier returns the most probably language detected for the given content. It uses | // GetLanguageByClassifier returns the most probably language detected for the given content. It uses | ||||
| // DefaultClassifier, if no candidates are provided it returns OtherLanguage. | |||||
| // defaultClassifier, if no candidates are provided it returns OtherLanguage. | |||||
| func GetLanguageByClassifier(content []byte, candidates []string) (language string, safe bool) { | func GetLanguageByClassifier(content []byte, candidates []string) (language string, safe bool) { | ||||
| return getLanguageByStrategy(GetLanguagesByClassifier, "", content, candidates) | return getLanguageByStrategy(GetLanguagesByClassifier, "", content, candidates) | ||||
| } | } | ||||
| @@ -108,10 +108,10 @@ func getFirstLanguageAndSafe(languages []string) (language string, safe bool) { | |||||
| return | return | ||||
| } | } | ||||
| // GetLanguageBySpecificClassifier returns the most probably language for the given content using | |||||
| // getLanguageBySpecificClassifier returns the most probably language for the given content using | |||||
| // classifier to detect language. | // classifier to detect language. | ||||
| func GetLanguageBySpecificClassifier(content []byte, candidates []string, classifier Classifier) (language string, safe bool) { | |||||
| languages := GetLanguagesBySpecificClassifier(content, candidates, classifier) | |||||
| func getLanguageBySpecificClassifier(content []byte, candidates []string, classifier classifier) (language string, safe bool) { | |||||
| languages := getLanguagesBySpecificClassifier(content, candidates, classifier) | |||||
| return getFirstLanguageAndSafe(languages) | return getFirstLanguageAndSafe(languages) | ||||
| } | } | ||||
| @@ -413,27 +413,28 @@ func GetLanguagesByContent(filename string, content []byte, _ []string) []string | |||||
| return heuristic.Match(content) | return heuristic.Match(content) | ||||
| } | } | ||||
| // GetLanguagesByClassifier uses DefaultClassifier as a Classifier and returns a sorted slice of possible languages ordered by | |||||
| // decreasing language's probability. If there are not candidates it returns nil. It complies with the signature to be a Strategy type. | |||||
| // GetLanguagesByClassifier returns a sorted slice of possible languages ordered by | |||||
| // decreasing language's probability. If there are not candidates it returns nil. | |||||
| // It is a Strategy that uses a pre-trained defaultClassifier. | |||||
| func GetLanguagesByClassifier(filename string, content []byte, candidates []string) (languages []string) { | func GetLanguagesByClassifier(filename string, content []byte, candidates []string) (languages []string) { | ||||
| if len(candidates) == 0 { | if len(candidates) == 0 { | ||||
| return nil | return nil | ||||
| } | } | ||||
| return GetLanguagesBySpecificClassifier(content, candidates, DefaultClassifier) | |||||
| return getLanguagesBySpecificClassifier(content, candidates, defaultClassifier) | |||||
| } | } | ||||
| // GetLanguagesBySpecificClassifier returns a slice of possible languages. It takes in a Classifier to be used. | |||||
| func GetLanguagesBySpecificClassifier(content []byte, candidates []string, classifier Classifier) (languages []string) { | |||||
| // getLanguagesBySpecificClassifier returns a slice of possible languages. It takes in a Classifier to be used. | |||||
| func getLanguagesBySpecificClassifier(content []byte, candidates []string, classifier classifier) (languages []string) { | |||||
| mapCandidates := make(map[string]float64) | mapCandidates := make(map[string]float64) | ||||
| for _, candidate := range candidates { | for _, candidate := range candidates { | ||||
| mapCandidates[candidate]++ | mapCandidates[candidate]++ | ||||
| } | } | ||||
| return classifier.Classify(content, mapCandidates) | |||||
| return classifier.classify(content, mapCandidates) | |||||
| } | } | ||||
| // GetLanguageExtensions returns the different extensions being used by the language. | |||||
| // GetLanguageExtensions returns all extensions associated with the given language. | |||||
| func GetLanguageExtensions(language string) []string { | func GetLanguageExtensions(language string) []string { | ||||
| return data.ExtensionsByLanguage[language] | return data.ExtensionsByLanguage[language] | ||||
| } | } | ||||
| @@ -470,3 +471,12 @@ func GetLanguageByAlias(alias string) (lang string, ok bool) { | |||||
| return | return | ||||
| } | } | ||||
| // GetLanguageGroup returns language group or empty string if language does not have group. | |||||
| func GetLanguageGroup(language string) string { | |||||
| if group, ok := data.LanguagesGroup[language]; ok { | |||||
| return group | |||||
| } | |||||
| return "" | |||||
| } | |||||
| @@ -0,0 +1,842 @@ | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | |||||
| import "strings" | |||||
| // LanguageByAliasMap keeps alias for different languages and use the name of the languages as an alias too. | |||||
| // All the keys (alias or not) are written in lower case and the whitespaces has been replaced by underscores. | |||||
| var LanguageByAliasMap = map[string]string{ | |||||
| "1c_enterprise": "1C Enterprise", | |||||
| "4d": "4D", | |||||
| "abap": "ABAP", | |||||
| "abl": "OpenEdge ABL", | |||||
| "abnf": "ABNF", | |||||
| "abuild": "Alpine Abuild", | |||||
| "acfm": "Adobe Font Metrics", | |||||
| "aconf": "ApacheConf", | |||||
| "actionscript": "ActionScript", | |||||
| "actionscript3": "ActionScript", | |||||
| "actionscript_3": "ActionScript", | |||||
| "ada": "Ada", | |||||
| "ada2005": "Ada", | |||||
| "ada95": "Ada", | |||||
| "adobe_composite_font_metrics": "Adobe Font Metrics", | |||||
| "adobe_font_metrics": "Adobe Font Metrics", | |||||
| "adobe_multiple_font_metrics": "Adobe Font Metrics", | |||||
| "advpl": "xBase", | |||||
| "afdko": "OpenType Feature File", | |||||
| "agda": "Agda", | |||||
| "ags": "AGS Script", | |||||
| "ags_script": "AGS Script", | |||||
| "ahk": "AutoHotkey", | |||||
| "alloy": "Alloy", | |||||
| "alpine_abuild": "Alpine Abuild", | |||||
| "altium": "Altium Designer", | |||||
| "altium_designer": "Altium Designer", | |||||
| "amfm": "Adobe Font Metrics", | |||||
| "ampl": "AMPL", | |||||
| "amusewiki": "Muse", | |||||
| "angelscript": "AngelScript", | |||||
| "ant_build_system": "Ant Build System", | |||||
| "antlr": "ANTLR", | |||||
| "apache": "ApacheConf", | |||||
| "apacheconf": "ApacheConf", | |||||
| "apex": "Apex", | |||||
| "api_blueprint": "API Blueprint", | |||||
| "apkbuild": "Alpine Abuild", | |||||
| "apl": "APL", | |||||
| "apollo_guidance_computer": "Apollo Guidance Computer", | |||||
| "applescript": "AppleScript", | |||||
| "arc": "Arc", | |||||
| "arexx": "REXX", | |||||
| "as3": "ActionScript", | |||||
| "asciidoc": "AsciiDoc", | |||||
| "asm": "Assembly", | |||||
| "asn.1": "ASN.1", | |||||
| "asp": "ASP", | |||||
| "aspectj": "AspectJ", | |||||
| "aspx": "ASP", | |||||
| "aspx-vb": "ASP", | |||||
| "assembly": "Assembly", | |||||
| "asymptote": "Asymptote", | |||||
| "ats": "ATS", | |||||
| "ats2": "ATS", | |||||
| "au3": "AutoIt", | |||||
| "augeas": "Augeas", | |||||
| "autoconf": "M4Sugar", | |||||
| "autohotkey": "AutoHotkey", | |||||
| "autoit": "AutoIt", | |||||
| "autoit3": "AutoIt", | |||||
| "autoitscript": "AutoIt", | |||||
| "awk": "Awk", | |||||
| "b3d": "BlitzBasic", | |||||
| "ballerina": "Ballerina", | |||||
| "bash": "Shell", | |||||
| "bash_session": "ShellSession", | |||||
| "bat": "Batchfile", | |||||
| "batch": "Batchfile", | |||||
| "batchfile": "Batchfile", | |||||
| "bazel": "Starlark", | |||||
| "befunge": "Befunge", | |||||
| "bibtex": "BibTeX", | |||||
| "bison": "Bison", | |||||
| "bitbake": "BitBake", | |||||
| "blade": "Blade", | |||||
| "blitz3d": "BlitzBasic", | |||||
| "blitzbasic": "BlitzBasic", | |||||
| "blitzmax": "BlitzMax", | |||||
| "blitzplus": "BlitzBasic", | |||||
| "bluespec": "Bluespec", | |||||
| "bmax": "BlitzMax", | |||||
| "boo": "Boo", | |||||
| "bplus": "BlitzBasic", | |||||
| "brainfuck": "Brainfuck", | |||||
| "brightscript": "Brightscript", | |||||
| "bro": "Zeek", | |||||
| "bsdmake": "Makefile", | |||||
| "byond": "DM", | |||||
| "bzl": "Starlark", | |||||
| "c": "C", | |||||
| "c#": "C#", | |||||
| "c++": "C++", | |||||
| "c++-objdump": "Cpp-ObjDump", | |||||
| "c-objdump": "C-ObjDump", | |||||
| "c2hs": "C2hs Haskell", | |||||
| "c2hs_haskell": "C2hs Haskell", | |||||
| "cabal": "Cabal Config", | |||||
| "cabal_config": "Cabal Config", | |||||
| "cap'n_proto": "Cap'n Proto", | |||||
| "carto": "CartoCSS", | |||||
| "cartocss": "CartoCSS", | |||||
| "ceylon": "Ceylon", | |||||
| "cfc": "ColdFusion CFC", | |||||
| "cfm": "ColdFusion", | |||||
| "cfml": "ColdFusion", | |||||
| "chapel": "Chapel", | |||||
| "charity": "Charity", | |||||
| "chpl": "Chapel", | |||||
| "chuck": "ChucK", | |||||
| "cirru": "Cirru", | |||||
| "clarion": "Clarion", | |||||
| "clean": "Clean", | |||||
| "click": "Click", | |||||
| "clipper": "xBase", | |||||
| "clips": "CLIPS", | |||||
| "clojure": "Clojure", | |||||
| "closure_templates": "Closure Templates", | |||||
| "cloud_firestore_security_rules": "Cloud Firestore Security Rules", | |||||
| "cmake": "CMake", | |||||
| "cobol": "COBOL", | |||||
| "coccinelle": "SmPL", | |||||
| "codeql": "CodeQL", | |||||
| "coffee": "CoffeeScript", | |||||
| "coffee-script": "CoffeeScript", | |||||
| "coffeescript": "CoffeeScript", | |||||
| "coldfusion": "ColdFusion", | |||||
| "coldfusion_cfc": "ColdFusion CFC", | |||||
| "coldfusion_html": "ColdFusion", | |||||
| "collada": "COLLADA", | |||||
| "common_lisp": "Common Lisp", | |||||
| "common_workflow_language": "Common Workflow Language", | |||||
| "component_pascal": "Component Pascal", | |||||
| "conll": "CoNLL-U", | |||||
| "conll-u": "CoNLL-U", | |||||
| "conll-x": "CoNLL-U", | |||||
| "console": "ShellSession", | |||||
| "cool": "Cool", | |||||
| "coq": "Coq", | |||||
| "cperl": "Perl", | |||||
| "cpp": "C++", | |||||
| "cpp-objdump": "Cpp-ObjDump", | |||||
| "creole": "Creole", | |||||
| "crystal": "Crystal", | |||||
| "csharp": "C#", | |||||
| "cson": "CSON", | |||||
| "csound": "Csound", | |||||
| "csound-csd": "Csound Document", | |||||
| "csound-orc": "Csound", | |||||
| "csound-sco": "Csound Score", | |||||
| "csound_document": "Csound Document", | |||||
| "csound_score": "Csound Score", | |||||
| "css": "CSS", | |||||
| "csv": "CSV", | |||||
| "cucumber": "Gherkin", | |||||
| "cuda": "Cuda", | |||||
| "curl_config": "cURL Config", | |||||
| "curlrc": "cURL Config", | |||||
| "cweb": "CWeb", | |||||
| "cwl": "Common Workflow Language", | |||||
| "cycript": "Cycript", | |||||
| "cython": "Cython", | |||||
| "d": "D", | |||||
| "d-objdump": "D-ObjDump", | |||||
| "darcs_patch": "Darcs Patch", | |||||
| "dart": "Dart", | |||||
| "dataweave": "DataWeave", | |||||
| "dcl": "DIGITAL Command Language", | |||||
| "delphi": "Component Pascal", | |||||
| "desktop": "desktop", | |||||
| "dhall": "Dhall", | |||||
| "diff": "Diff", | |||||
| "digital_command_language": "DIGITAL Command Language", | |||||
| "dircolors": "dircolors", | |||||
| "directx_3d_file": "DirectX 3D File", | |||||
| "django": "HTML+Django", | |||||
| "dm": "DM", | |||||
| "dns_zone": "DNS Zone", | |||||
| "dockerfile": "Dockerfile", | |||||
| "dogescript": "Dogescript", | |||||
| "dosbatch": "Batchfile", | |||||
| "dosini": "INI", | |||||
| "dpatch": "Darcs Patch", | |||||
| "dtrace": "DTrace", | |||||
| "dtrace-script": "DTrace", | |||||
| "dylan": "Dylan", | |||||
| "e": "E", | |||||
| "eagle": "Eagle", | |||||
| "easybuild": "Easybuild", | |||||
| "ebnf": "EBNF", | |||||
| "ec": "eC", | |||||
| "ecere_projects": "Ecere Projects", | |||||
| "ecl": "ECL", | |||||
| "eclipse": "ECLiPSe", | |||||
| "ecr": "HTML+ECR", | |||||
| "editor-config": "EditorConfig", | |||||
| "editorconfig": "EditorConfig", | |||||
| "edje_data_collection": "Edje Data Collection", | |||||
| "edn": "edn", | |||||
| "eeschema_schematic": "KiCad Schematic", | |||||
| "eex": "HTML+EEX", | |||||
| "eiffel": "Eiffel", | |||||
| "ejs": "EJS", | |||||
| "elisp": "Emacs Lisp", | |||||
| "elixir": "Elixir", | |||||
| "elm": "Elm", | |||||
| "emacs": "Emacs Lisp", | |||||
| "emacs_lisp": "Emacs Lisp", | |||||
| "emacs_muse": "Muse", | |||||
| "emberscript": "EmberScript", | |||||
| "eml": "EML", | |||||
| "eq": "EQ", | |||||
| "erb": "HTML+ERB", | |||||
| "erlang": "Erlang", | |||||
| "f#": "F#", | |||||
| "f*": "F*", | |||||
| "factor": "Factor", | |||||
| "fancy": "Fancy", | |||||
| "fantom": "Fantom", | |||||
| "faust": "Faust", | |||||
| "figfont": "FIGlet Font", | |||||
| "figlet_font": "FIGlet Font", | |||||
| "filebench_wml": "Filebench WML", | |||||
| "filterscript": "Filterscript", | |||||
| "fish": "fish", | |||||
| "flex": "Lex", | |||||
| "flux": "FLUX", | |||||
| "formatted": "Formatted", | |||||
| "forth": "Forth", | |||||
| "fortran": "Fortran", | |||||
| "foxpro": "xBase", | |||||
| "freemarker": "FreeMarker", | |||||
| "frege": "Frege", | |||||
| "fsharp": "F#", | |||||
| "fstar": "F*", | |||||
| "ftl": "FreeMarker", | |||||
| "fundamental": "Text", | |||||
| "g-code": "G-code", | |||||
| "game_maker_language": "Game Maker Language", | |||||
| "gaml": "GAML", | |||||
| "gams": "GAMS", | |||||
| "gap": "GAP", | |||||
| "gcc_machine_description": "GCC Machine Description", | |||||
| "gdb": "GDB", | |||||
| "gdscript": "GDScript", | |||||
| "genie": "Genie", | |||||
| "genshi": "Genshi", | |||||
| "gentoo_ebuild": "Gentoo Ebuild", | |||||
| "gentoo_eclass": "Gentoo Eclass", | |||||
| "gerber_image": "Gerber Image", | |||||
| "gettext_catalog": "Gettext Catalog", | |||||
| "gf": "Grammatical Framework", | |||||
| "gherkin": "Gherkin", | |||||
| "git-ignore": "Ignore List", | |||||
| "git_attributes": "Git Attributes", | |||||
| "git_config": "Git Config", | |||||
| "gitattributes": "Git Attributes", | |||||
| "gitconfig": "Git Config", | |||||
| "gitignore": "Ignore List", | |||||
| "gitmodules": "Git Config", | |||||
| "glsl": "GLSL", | |||||
| "glyph": "Glyph", | |||||
| "glyph_bitmap_distribution_format": "Glyph Bitmap Distribution Format", | |||||
| "gn": "GN", | |||||
| "gnuplot": "Gnuplot", | |||||
| "go": "Go", | |||||
| "golang": "Go", | |||||
| "golo": "Golo", | |||||
| "gosu": "Gosu", | |||||
| "grace": "Grace", | |||||
| "gradle": "Gradle", | |||||
| "grammatical_framework": "Grammatical Framework", | |||||
| "graph_modeling_language": "Graph Modeling Language", | |||||
| "graphql": "GraphQL", | |||||
| "graphviz_(dot)": "Graphviz (DOT)", | |||||
| "groff": "Roff", | |||||
| "groovy": "Groovy", | |||||
| "groovy_server_pages": "Groovy Server Pages", | |||||
| "gsp": "Groovy Server Pages", | |||||
| "hack": "Hack", | |||||
| "haml": "Haml", | |||||
| "handlebars": "Handlebars", | |||||
| "haproxy": "HAProxy", | |||||
| "harbour": "Harbour", | |||||
| "haskell": "Haskell", | |||||
| "haxe": "Haxe", | |||||
| "hbs": "Handlebars", | |||||
| "hcl": "HCL", | |||||
| "hiveql": "HiveQL", | |||||
| "hlsl": "HLSL", | |||||
| "holyc": "HolyC", | |||||
| "html": "HTML", | |||||
| "html+django": "HTML+Django", | |||||
| "html+django/jinja": "HTML+Django", | |||||
| "html+ecr": "HTML+ECR", | |||||
| "html+eex": "HTML+EEX", | |||||
| "html+erb": "HTML+ERB", | |||||
| "html+jinja": "HTML+Django", | |||||
| "html+php": "HTML+PHP", | |||||
| "html+razor": "HTML+Razor", | |||||
| "html+ruby": "RHTML", | |||||
| "htmlbars": "Handlebars", | |||||
| "htmldjango": "HTML+Django", | |||||
| "http": "HTTP", | |||||
| "hxml": "HXML", | |||||
| "hy": "Hy", | |||||
| "hylang": "Hy", | |||||
| "hyphy": "HyPhy", | |||||
| "i7": "Inform 7", | |||||
| "idl": "IDL", | |||||
| "idris": "Idris", | |||||
| "ignore": "Ignore List", | |||||
| "ignore_list": "Ignore List", | |||||
| "igor": "IGOR Pro", | |||||
| "igor_pro": "IGOR Pro", | |||||
| "igorpro": "IGOR Pro", | |||||
| "inc": "PHP", | |||||
| "inform7": "Inform 7", | |||||
| "inform_7": "Inform 7", | |||||
| "ini": "INI", | |||||
| "inno_setup": "Inno Setup", | |||||
| "inputrc": "Readline Config", | |||||
| "io": "Io", | |||||
| "ioke": "Ioke", | |||||
| "ipython_notebook": "Jupyter Notebook", | |||||
| "irc": "IRC log", | |||||
| "irc_log": "IRC log", | |||||
| "irc_logs": "IRC log", | |||||
| "isabelle": "Isabelle", | |||||
| "isabelle_root": "Isabelle ROOT", | |||||
| "j": "J", | |||||
| "jasmin": "Jasmin", | |||||
| "java": "Java", | |||||
| "java_properties": "Java Properties", | |||||
| "java_server_page": "Groovy Server Pages", | |||||
| "java_server_pages": "Java Server Pages", | |||||
| "javascript": "JavaScript", | |||||
| "javascript+erb": "JavaScript+ERB", | |||||
| "jflex": "JFlex", | |||||
| "jison": "Jison", | |||||
| "jison_lex": "Jison Lex", | |||||
| "jolie": "Jolie", | |||||
| "jruby": "Ruby", | |||||
| "js": "JavaScript", | |||||
| "json": "JSON", | |||||
| "json5": "JSON5", | |||||
| "json_with_comments": "JSON with Comments", | |||||
| "jsonc": "JSON with Comments", | |||||
| "jsoniq": "JSONiq", | |||||
| "jsonld": "JSONLD", | |||||
| "jsonnet": "Jsonnet", | |||||
| "jsp": "Java Server Pages", | |||||
| "jsx": "JSX", | |||||
| "julia": "Julia", | |||||
| "jupyter_notebook": "Jupyter Notebook", | |||||
| "kicad_layout": "KiCad Layout", | |||||
| "kicad_legacy_layout": "KiCad Legacy Layout", | |||||
| "kicad_schematic": "KiCad Schematic", | |||||
| "kit": "Kit", | |||||
| "kotlin": "Kotlin", | |||||
| "krl": "KRL", | |||||
| "labview": "LabVIEW", | |||||
| "lasso": "Lasso", | |||||
| "lassoscript": "Lasso", | |||||
| "latex": "TeX", | |||||
| "latte": "Latte", | |||||
| "lean": "Lean", | |||||
| "less": "Less", | |||||
| "lex": "Lex", | |||||
| "lfe": "LFE", | |||||
| "lhaskell": "Literate Haskell", | |||||
| "lhs": "Literate Haskell", | |||||
| "lilypond": "LilyPond", | |||||
| "limbo": "Limbo", | |||||
| "linker_script": "Linker Script", | |||||
| "linux_kernel_module": "Linux Kernel Module", | |||||
| "liquid": "Liquid", | |||||
| "lisp": "Common Lisp", | |||||
| "litcoffee": "Literate CoffeeScript", | |||||
| "literate_agda": "Literate Agda", | |||||
| "literate_coffeescript": "Literate CoffeeScript", | |||||
| "literate_haskell": "Literate Haskell", | |||||
| "live-script": "LiveScript", | |||||
| "livescript": "LiveScript", | |||||
| "llvm": "LLVM", | |||||
| "logos": "Logos", | |||||
| "logtalk": "Logtalk", | |||||
| "lolcode": "LOLCODE", | |||||
| "lookml": "LookML", | |||||
| "loomscript": "LoomScript", | |||||
| "ls": "LiveScript", | |||||
| "lsl": "LSL", | |||||
| "ltspice_symbol": "LTspice Symbol", | |||||
| "lua": "Lua", | |||||
| "m": "M", | |||||
| "m4": "M4", | |||||
| "m4sugar": "M4Sugar", | |||||
| "m68k": "Motorola 68K Assembly", | |||||
| "macruby": "Ruby", | |||||
| "make": "Makefile", | |||||
| "makefile": "Makefile", | |||||
| "mako": "Mako", | |||||
| "man": "Roff", | |||||
| "man-page": "Roff", | |||||
| "man_page": "Roff", | |||||
| "manpage": "Roff", | |||||
| "markdown": "Markdown", | |||||
| "marko": "Marko", | |||||
| "markojs": "Marko", | |||||
| "mask": "Mask", | |||||
| "mathematica": "Mathematica", | |||||
| "matlab": "MATLAB", | |||||
| "maven_pom": "Maven POM", | |||||
| "max": "Max", | |||||
| "max/msp": "Max", | |||||
| "maxmsp": "Max", | |||||
| "maxscript": "MAXScript", | |||||
| "mcfunction": "mcfunction", | |||||
| "mdoc": "Roff", | |||||
| "mediawiki": "MediaWiki", | |||||
| "mercury": "Mercury", | |||||
| "meson": "Meson", | |||||
| "metal": "Metal", | |||||
| "mf": "Makefile", | |||||
| "microsoft_developer_studio_project": "Microsoft Developer Studio Project", | |||||
| "minid": "MiniD", | |||||
| "mirah": "Mirah", | |||||
| "mirc_script": "mIRC Script", | |||||
| "mlir": "MLIR", | |||||
| "mma": "Mathematica", | |||||
| "modelica": "Modelica", | |||||
| "modula-2": "Modula-2", | |||||
| "modula-3": "Modula-3", | |||||
| "module_management_system": "Module Management System", | |||||
| "monkey": "Monkey", | |||||
| "moocode": "Moocode", | |||||
| "moonscript": "MoonScript", | |||||
| "motorola_68k_assembly": "Motorola 68K Assembly", | |||||
| "mql4": "MQL4", | |||||
| "mql5": "MQL5", | |||||
| "mtml": "MTML", | |||||
| "muf": "MUF", | |||||
| "mumps": "M", | |||||
| "mupad": "mupad", | |||||
| "muse": "Muse", | |||||
| "myghty": "Myghty", | |||||
| "nanorc": "nanorc", | |||||
| "nasl": "NASL", | |||||
| "nasm": "Assembly", | |||||
| "ncl": "NCL", | |||||
| "nearley": "Nearley", | |||||
| "nemerle": "Nemerle", | |||||
| "neosnippet": "Vim Snippet", | |||||
| "nesc": "nesC", | |||||
| "netlinx": "NetLinx", | |||||
| "netlinx+erb": "NetLinx+ERB", | |||||
| "netlogo": "NetLogo", | |||||
| "newlisp": "NewLisp", | |||||
| "nextflow": "Nextflow", | |||||
| "nginx": "Nginx", | |||||
| "nginx_configuration_file": "Nginx", | |||||
| "nim": "Nim", | |||||
| "ninja": "Ninja", | |||||
| "nit": "Nit", | |||||
| "nix": "Nix", | |||||
| "nixos": "Nix", | |||||
| "njk": "HTML+Django", | |||||
| "nl": "NL", | |||||
| "node": "JavaScript", | |||||
| "npm_config": "NPM Config", | |||||
| "npmrc": "NPM Config", | |||||
| "nroff": "Roff", | |||||
| "nsis": "NSIS", | |||||
| "nu": "Nu", | |||||
| "numpy": "NumPy", | |||||
| "nunjucks": "HTML+Django", | |||||
| "nush": "Nu", | |||||
| "nvim": "Vim script", | |||||
| "obj-c": "Objective-C", | |||||
| "obj-c++": "Objective-C++", | |||||
| "obj-j": "Objective-J", | |||||
| "objc": "Objective-C", | |||||
| "objc++": "Objective-C++", | |||||
| "objdump": "ObjDump", | |||||
| "object_data_instance_notation": "Object Data Instance Notation", | |||||
| "objective-c": "Objective-C", | |||||
| "objective-c++": "Objective-C++", | |||||
| "objective-j": "Objective-J", | |||||
| "objectivec": "Objective-C", | |||||
| "objectivec++": "Objective-C++", | |||||
| "objectivej": "Objective-J", | |||||
| "objectpascal": "Component Pascal", | |||||
| "objectscript": "ObjectScript", | |||||
| "objj": "Objective-J", | |||||
| "ocaml": "OCaml", | |||||
| "octave": "MATLAB", | |||||
| "odin": "Odin", | |||||
| "odin-lang": "Odin", | |||||
| "odinlang": "Odin", | |||||
| "omgrofl": "Omgrofl", | |||||
| "oncrpc": "RPC", | |||||
| "ooc": "ooc", | |||||
| "opa": "Opa", | |||||
| "opal": "Opal", | |||||
| "open_policy_agent": "Open Policy Agent", | |||||
| "opencl": "OpenCL", | |||||
| "openedge": "OpenEdge ABL", | |||||
| "openedge_abl": "OpenEdge ABL", | |||||
| "openqasm": "OpenQASM", | |||||
| "openrc": "OpenRC runscript", | |||||
| "openrc_runscript": "OpenRC runscript", | |||||
| "openscad": "OpenSCAD", | |||||
| "openstep_property_list": "OpenStep Property List", | |||||
| "opentype_feature_file": "OpenType Feature File", | |||||
| "org": "Org", | |||||
| "osascript": "AppleScript", | |||||
| "ox": "Ox", | |||||
| "oxygene": "Oxygene", | |||||
| "oz": "Oz", | |||||
| "p4": "P4", | |||||
| "pan": "Pan", | |||||
| "pandoc": "Markdown", | |||||
| "papyrus": "Papyrus", | |||||
| "parrot": "Parrot", | |||||
| "parrot_assembly": "Parrot Assembly", | |||||
| "parrot_internal_representation": "Parrot Internal Representation", | |||||
| "pascal": "Pascal", | |||||
| "pasm": "Parrot Assembly", | |||||
| "pawn": "Pawn", | |||||
| "pcbnew": "KiCad Layout", | |||||
| "pep8": "Pep8", | |||||
| "perl": "Perl", | |||||
| "perl-6": "Raku", | |||||
| "perl6": "Raku", | |||||
| "php": "PHP", | |||||
| "pic": "Pic", | |||||
| "pickle": "Pickle", | |||||
| "picolisp": "PicoLisp", | |||||
| "piglatin": "PigLatin", | |||||
| "pike": "Pike", | |||||
| "pir": "Parrot Internal Representation", | |||||
| "plantuml": "PlantUML", | |||||
| "plpgsql": "PLpgSQL", | |||||
| "plsql": "PLSQL", | |||||
| "pod": "Pod", | |||||
| "pod_6": "Pod 6", | |||||
| "pogoscript": "PogoScript", | |||||
| "pony": "Pony", | |||||
| "posh": "PowerShell", | |||||
| "postcss": "PostCSS", | |||||
| "postscr": "PostScript", | |||||
| "postscript": "PostScript", | |||||
| "pot": "Gettext Catalog", | |||||
| "pov-ray": "POV-Ray SDL", | |||||
| "pov-ray_sdl": "POV-Ray SDL", | |||||
| "povray": "POV-Ray SDL", | |||||
| "powerbuilder": "PowerBuilder", | |||||
| "powershell": "PowerShell", | |||||
| "prisma": "Prisma", | |||||
| "processing": "Processing", | |||||
| "progress": "OpenEdge ABL", | |||||
| "proguard": "Proguard", | |||||
| "prolog": "Prolog", | |||||
| "propeller_spin": "Propeller Spin", | |||||
| "protobuf": "Protocol Buffer", | |||||
| "protocol_buffer": "Protocol Buffer", | |||||
| "protocol_buffers": "Protocol Buffer", | |||||
| "public_key": "Public Key", | |||||
| "pug": "Pug", | |||||
| "puppet": "Puppet", | |||||
| "pure_data": "Pure Data", | |||||
| "purebasic": "PureBasic", | |||||
| "purescript": "PureScript", | |||||
| "pwsh": "PowerShell", | |||||
| "pycon": "Python console", | |||||
| "pyrex": "Cython", | |||||
| "python": "Python", | |||||
| "python3": "Python", | |||||
| "python_console": "Python console", | |||||
| "python_traceback": "Python traceback", | |||||
| "q": "q", | |||||
| "ql": "CodeQL", | |||||
| "qmake": "QMake", | |||||
| "qml": "QML", | |||||
| "quake": "Quake", | |||||
| "r": "R", | |||||
| "racket": "Racket", | |||||
| "ragel": "Ragel", | |||||
| "ragel-rb": "Ragel", | |||||
| "ragel-ruby": "Ragel", | |||||
| "rake": "Ruby", | |||||
| "raku": "Raku", | |||||
| "raml": "RAML", | |||||
| "rascal": "Rascal", | |||||
| "raw": "Raw token data", | |||||
| "raw_token_data": "Raw token data", | |||||
| "razor": "HTML+Razor", | |||||
| "rb": "Ruby", | |||||
| "rbx": "Ruby", | |||||
| "rdoc": "RDoc", | |||||
| "readline": "Readline Config", | |||||
| "readline_config": "Readline Config", | |||||
| "realbasic": "REALbasic", | |||||
| "reason": "Reason", | |||||
| "rebol": "Rebol", | |||||
| "red": "Red", | |||||
| "red/system": "Red", | |||||
| "redcode": "Redcode", | |||||
| "regex": "Regular Expression", | |||||
| "regexp": "Regular Expression", | |||||
| "regular_expression": "Regular Expression", | |||||
| "ren'py": "Ren'Py", | |||||
| "renderscript": "RenderScript", | |||||
| "renpy": "Ren'Py", | |||||
| "restructuredtext": "reStructuredText", | |||||
| "rexx": "REXX", | |||||
| "rhtml": "RHTML", | |||||
| "rich_text_format": "Rich Text Format", | |||||
| "ring": "Ring", | |||||
| "riot": "Riot", | |||||
| "rmarkdown": "RMarkdown", | |||||
| "robotframework": "RobotFramework", | |||||
| "roff": "Roff", | |||||
| "roff_manpage": "Roff Manpage", | |||||
| "rouge": "Rouge", | |||||
| "rpc": "RPC", | |||||
| "rpcgen": "RPC", | |||||
| "rpm_spec": "RPM Spec", | |||||
| "rs-274x": "Gerber Image", | |||||
| "rscript": "R", | |||||
| "rss": "XML", | |||||
| "rst": "reStructuredText", | |||||
| "ruby": "Ruby", | |||||
| "runoff": "RUNOFF", | |||||
| "rust": "Rust", | |||||
| "rusthon": "Python", | |||||
| "sage": "Sage", | |||||
| "salt": "SaltStack", | |||||
| "saltstack": "SaltStack", | |||||
| "saltstate": "SaltStack", | |||||
| "sas": "SAS", | |||||
| "sass": "Sass", | |||||
| "scala": "Scala", | |||||
| "scaml": "Scaml", | |||||
| "scheme": "Scheme", | |||||
| "scilab": "Scilab", | |||||
| "scss": "SCSS", | |||||
| "sed": "sed", | |||||
| "self": "Self", | |||||
| "sh": "Shell", | |||||
| "shaderlab": "ShaderLab", | |||||
| "shell": "Shell", | |||||
| "shell-script": "Shell", | |||||
| "shellsession": "ShellSession", | |||||
| "shen": "Shen", | |||||
| "slash": "Slash", | |||||
| "slice": "Slice", | |||||
| "slim": "Slim", | |||||
| "smali": "Smali", | |||||
| "smalltalk": "Smalltalk", | |||||
| "smarty": "Smarty", | |||||
| "sml": "Standard ML", | |||||
| "smpl": "SmPL", | |||||
| "smt": "SMT", | |||||
| "snipmate": "Vim Snippet", | |||||
| "snippet": "YASnippet", | |||||
| "solidity": "Solidity", | |||||
| "sourcemod": "SourcePawn", | |||||
| "sourcepawn": "SourcePawn", | |||||
| "soy": "Closure Templates", | |||||
| "sparql": "SPARQL", | |||||
| "specfile": "RPM Spec", | |||||
| "spline_font_database": "Spline Font Database", | |||||
| "splus": "R", | |||||
| "sqf": "SQF", | |||||
| "sql": "SQL", | |||||
| "sqlpl": "SQLPL", | |||||
| "squeak": "Smalltalk", | |||||
| "squirrel": "Squirrel", | |||||
| "srecode_template": "SRecode Template", | |||||
| "ssh_config": "SSH Config", | |||||
| "stan": "Stan", | |||||
| "standard_ml": "Standard ML", | |||||
| "starlark": "Starlark", | |||||
| "stata": "Stata", | |||||
| "ston": "STON", | |||||
| "stylus": "Stylus", | |||||
| "subrip_text": "SubRip Text", | |||||
| "sugarss": "SugarSS", | |||||
| "supercollider": "SuperCollider", | |||||
| "svelte": "Svelte", | |||||
| "svg": "SVG", | |||||
| "swift": "Swift", | |||||
| "swig": "SWIG", | |||||
| "systemverilog": "SystemVerilog", | |||||
| "tcl": "Tcl", | |||||
| "tcsh": "Tcsh", | |||||
| "tea": "Tea", | |||||
| "terra": "Terra", | |||||
| "terraform": "HCL", | |||||
| "tex": "TeX", | |||||
| "texinfo": "Texinfo", | |||||
| "text": "Text", | |||||
| "textile": "Textile", | |||||
| "thrift": "Thrift", | |||||
| "ti_program": "TI Program", | |||||
| "tl": "Type Language", | |||||
| "tla": "TLA", | |||||
| "toml": "TOML", | |||||
| "troff": "Roff", | |||||
| "ts": "TypeScript", | |||||
| "tsql": "TSQL", | |||||
| "tsx": "TSX", | |||||
| "turing": "Turing", | |||||
| "turtle": "Turtle", | |||||
| "twig": "Twig", | |||||
| "txl": "TXL", | |||||
| "type_language": "Type Language", | |||||
| "typescript": "TypeScript", | |||||
| "udiff": "Diff", | |||||
| "ultisnip": "Vim Snippet", | |||||
| "ultisnips": "Vim Snippet", | |||||
| "unified_parallel_c": "Unified Parallel C", | |||||
| "unity3d_asset": "Unity3D Asset", | |||||
| "unix_assembly": "Unix Assembly", | |||||
| "uno": "Uno", | |||||
| "unrealscript": "UnrealScript", | |||||
| "ur": "UrWeb", | |||||
| "ur/web": "UrWeb", | |||||
| "urweb": "UrWeb", | |||||
| "v": "V", | |||||
| "vala": "Vala", | |||||
| "vb.net": "Visual Basic .NET", | |||||
| "vb6": "VBA", | |||||
| "vb_.net": "Visual Basic .NET", | |||||
| "vba": "VBA", | |||||
| "vbnet": "Visual Basic .NET", | |||||
| "vbscript": "VBScript", | |||||
| "vcl": "VCL", | |||||
| "verilog": "Verilog", | |||||
| "vhdl": "VHDL", | |||||
| "vim": "Vim script", | |||||
| "vim_script": "Vim script", | |||||
| "vim_snippet": "Vim Snippet", | |||||
| "viml": "Vim script", | |||||
| "visual_basic": "Visual Basic .NET", | |||||
| "visual_basic_.net": "Visual Basic .NET", | |||||
| "visual_basic_6": "VBA", | |||||
| "visual_basic_for_applications": "VBA", | |||||
| "vlang": "V", | |||||
| "volt": "Volt", | |||||
| "vue": "Vue", | |||||
| "wasm": "WebAssembly", | |||||
| "wast": "WebAssembly", | |||||
| "wavefront_material": "Wavefront Material", | |||||
| "wavefront_object": "Wavefront Object", | |||||
| "wdl": "wdl", | |||||
| "web_ontology_language": "Web Ontology Language", | |||||
| "webassembly": "WebAssembly", | |||||
| "webidl": "WebIDL", | |||||
| "webvtt": "WebVTT", | |||||
| "wget_config": "Wget Config", | |||||
| "wgetrc": "Wget Config", | |||||
| "winbatch": "Batchfile", | |||||
| "windows_registry_entries": "Windows Registry Entries", | |||||
| "wisp": "wisp", | |||||
| "wollok": "Wollok", | |||||
| "world_of_warcraft_addon_data": "World of Warcraft Addon Data", | |||||
| "wsdl": "XML", | |||||
| "x10": "X10", | |||||
| "x_bitmap": "X BitMap", | |||||
| "x_font_directory_index": "X Font Directory Index", | |||||
| "x_pixmap": "X PixMap", | |||||
| "xbase": "xBase", | |||||
| "xbm": "X BitMap", | |||||
| "xc": "XC", | |||||
| "xcompose": "XCompose", | |||||
| "xdr": "RPC", | |||||
| "xhtml": "HTML", | |||||
| "xml": "XML", | |||||
| "xml+genshi": "Genshi", | |||||
| "xml+kid": "Genshi", | |||||
| "xml_property_list": "XML Property List", | |||||
| "xojo": "Xojo", | |||||
| "xpages": "XPages", | |||||
| "xpm": "X PixMap", | |||||
| "xproc": "XProc", | |||||
| "xquery": "XQuery", | |||||
| "xs": "XS", | |||||
| "xsd": "XML", | |||||
| "xsl": "XSLT", | |||||
| "xslt": "XSLT", | |||||
| "xten": "X10", | |||||
| "xtend": "Xtend", | |||||
| "yacc": "Yacc", | |||||
| "yaml": "YAML", | |||||
| "yang": "YANG", | |||||
| "yara": "YARA", | |||||
| "yas": "YASnippet", | |||||
| "yasnippet": "YASnippet", | |||||
| "yml": "YAML", | |||||
| "zap": "ZAP", | |||||
| "zeek": "Zeek", | |||||
| "zenscript": "ZenScript", | |||||
| "zephir": "Zephir", | |||||
| "zig": "Zig", | |||||
| "zil": "ZIL", | |||||
| "zimpl": "Zimpl", | |||||
| "zsh": "Shell", | |||||
| } | |||||
| // LanguageByAlias looks up the language name by it's alias or name. | |||||
| // It mirrors the logic of github linguist and is needed e.g for heuristcs.yml | |||||
| // that mixes names and aliases in a language field (see XPM example). | |||||
| func LanguageByAlias(langOrAlias string) (lang string, ok bool) { | |||||
| k := convertToAliasKey(langOrAlias) | |||||
| lang, ok = LanguageByAliasMap[k] | |||||
| return | |||||
| } | |||||
| // convertToAliasKey converts language name to a key in LanguageByAliasMap. | |||||
| // Following | |||||
| // - internal.code-generator.generator.convertToAliasKey() | |||||
| // - GetLanguageByAlias() | |||||
| // conventions. | |||||
| // It is here to avoid dependency on "generate" and "enry" packages. | |||||
| func convertToAliasKey(langName string) string { | |||||
| ak := strings.SplitN(langName, `,`, 2)[0] | |||||
| ak = strings.Replace(ak, ` `, `_`, -1) | |||||
| ak = strings.ToLower(ak) | |||||
| return ak | |||||
| } | |||||
| @@ -1,5 +1,5 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| @@ -71,11 +71,13 @@ var LanguagesColor = map[string]string{ | |||||
| "Factor": "#636746", | "Factor": "#636746", | ||||
| "Fancy": "#7b9db4", | "Fancy": "#7b9db4", | ||||
| "Fantom": "#14253c", | "Fantom": "#14253c", | ||||
| "Faust": "#c37240", | |||||
| "Forth": "#341708", | "Forth": "#341708", | ||||
| "Fortran": "#4d41b1", | "Fortran": "#4d41b1", | ||||
| "FreeMarker": "#0050b2", | "FreeMarker": "#0050b2", | ||||
| "Frege": "#00cafe", | "Frege": "#00cafe", | ||||
| "G-code": "#D08CF2", | "G-code": "#D08CF2", | ||||
| "GAML": "#FFC766", | |||||
| "GDScript": "#355570", | "GDScript": "#355570", | ||||
| "Game Maker Language": "#71b417", | "Game Maker Language": "#71b417", | ||||
| "Genie": "#fb855d", | "Genie": "#fb855d", | ||||
| @@ -96,6 +98,7 @@ var LanguagesColor = map[string]string{ | |||||
| "HolyC": "#ffefaf", | "HolyC": "#ffefaf", | ||||
| "Hy": "#7790B2", | "Hy": "#7790B2", | ||||
| "IDL": "#a3522f", | "IDL": "#a3522f", | ||||
| "IGOR Pro": "#0000cc", | |||||
| "Idris": "#b30000", | "Idris": "#b30000", | ||||
| "Io": "#a9188d", | "Io": "#a9188d", | ||||
| "Ioke": "#078193", | "Ioke": "#078193", | ||||
| @@ -121,6 +124,7 @@ var LanguagesColor = map[string]string{ | |||||
| "Lua": "#000080", | "Lua": "#000080", | ||||
| "MATLAB": "#e16737", | "MATLAB": "#e16737", | ||||
| "MAXScript": "#00a6a6", | "MAXScript": "#00a6a6", | ||||
| "MLIR": "#5EC8DB", | |||||
| "MQL4": "#62A8D6", | "MQL4": "#62A8D6", | ||||
| "MQL5": "#4A76B8", | "MQL5": "#4A76B8", | ||||
| "MTML": "#b7e1f4", | "MTML": "#b7e1f4", | ||||
| @@ -149,8 +153,10 @@ var LanguagesColor = map[string]string{ | |||||
| "Objective-C": "#438eff", | "Objective-C": "#438eff", | ||||
| "Objective-C++": "#6866fb", | "Objective-C++": "#6866fb", | ||||
| "Objective-J": "#ff0c5a", | "Objective-J": "#ff0c5a", | ||||
| "Odin": "#60AFFE", | |||||
| "Omgrofl": "#cabbff", | "Omgrofl": "#cabbff", | ||||
| "Opal": "#f7ede0", | "Opal": "#f7ede0", | ||||
| "OpenQASM": "#AA70FF", | |||||
| "Oxygene": "#cdd0e3", | "Oxygene": "#cdd0e3", | ||||
| "Oz": "#fab738", | "Oz": "#fab738", | ||||
| "P4": "#7055b5", | "P4": "#7055b5", | ||||
| @@ -163,7 +169,6 @@ var LanguagesColor = map[string]string{ | |||||
| "Pawn": "#dbb284", | "Pawn": "#dbb284", | ||||
| "Pep8": "#C76F5B", | "Pep8": "#C76F5B", | ||||
| "Perl": "#0298c3", | "Perl": "#0298c3", | ||||
| "Perl 6": "#0000fb", | |||||
| "PigLatin": "#fcd7de", | "PigLatin": "#fcd7de", | ||||
| "Pike": "#005390", | "Pike": "#005390", | ||||
| "PogoScript": "#d80074", | "PogoScript": "#d80074", | ||||
| @@ -184,11 +189,14 @@ var LanguagesColor = map[string]string{ | |||||
| "RUNOFF": "#665a4e", | "RUNOFF": "#665a4e", | ||||
| "Racket": "#3c5caa", | "Racket": "#3c5caa", | ||||
| "Ragel": "#9d5200", | "Ragel": "#9d5200", | ||||
| "Raku": "#0000fb", | |||||
| "Rascal": "#fffaa0", | "Rascal": "#fffaa0", | ||||
| "Reason": "#ff5847", | |||||
| "Rebol": "#358a5b", | "Rebol": "#358a5b", | ||||
| "Red": "#f50000", | "Red": "#f50000", | ||||
| "Ren'Py": "#ff7f7f", | "Ren'Py": "#ff7f7f", | ||||
| "Ring": "#2D54CB", | "Ring": "#2D54CB", | ||||
| "Riot": "#A71E49", | |||||
| "Roff": "#ecdebe", | "Roff": "#ecdebe", | ||||
| "Rouge": "#cc0088", | "Rouge": "#cc0088", | ||||
| "Ruby": "#701516", | "Ruby": "#701516", | ||||
| @@ -204,12 +212,14 @@ var LanguagesColor = map[string]string{ | |||||
| "Shen": "#120F14", | "Shen": "#120F14", | ||||
| "Slash": "#007eff", | "Slash": "#007eff", | ||||
| "Slice": "#003fa2", | "Slice": "#003fa2", | ||||
| "SmPL": "#c94949", | |||||
| "Smalltalk": "#596706", | "Smalltalk": "#596706", | ||||
| "Solidity": "#AA6746", | "Solidity": "#AA6746", | ||||
| "SourcePawn": "#5c7611", | "SourcePawn": "#5c7611", | ||||
| "Squirrel": "#800000", | "Squirrel": "#800000", | ||||
| "Stan": "#b2011d", | "Stan": "#b2011d", | ||||
| "Standard ML": "#dc566d", | "Standard ML": "#dc566d", | ||||
| "Starlark": "#76d275", | |||||
| "SuperCollider": "#46390b", | "SuperCollider": "#46390b", | ||||
| "Swift": "#ffac45", | "Swift": "#ffac45", | ||||
| "SystemVerilog": "#DAE1C2", | "SystemVerilog": "#DAE1C2", | ||||
| @@ -220,12 +230,15 @@ var LanguagesColor = map[string]string{ | |||||
| "Turing": "#cf142b", | "Turing": "#cf142b", | ||||
| "TypeScript": "#2b7489", | "TypeScript": "#2b7489", | ||||
| "UnrealScript": "#a54c4d", | "UnrealScript": "#a54c4d", | ||||
| "V": "#5d87bd", | |||||
| "VBA": "#867db1", | |||||
| "VBScript": "#15dcdc", | |||||
| "VCL": "#148AA8", | "VCL": "#148AA8", | ||||
| "VHDL": "#adb2cb", | "VHDL": "#adb2cb", | ||||
| "Vala": "#fbe5cd", | "Vala": "#fbe5cd", | ||||
| "Verilog": "#b2b7f8", | "Verilog": "#b2b7f8", | ||||
| "Vim script": "#199f4b", | "Vim script": "#199f4b", | ||||
| "Visual Basic": "#945db7", | |||||
| "Visual Basic .NET": "#945db7", | |||||
| "Volt": "#1F1F1F", | "Volt": "#1F1F1F", | ||||
| "Vue": "#2c3e50", | "Vue": "#2c3e50", | ||||
| "WebAssembly": "#04133b", | "WebAssembly": "#04133b", | ||||
| @@ -243,6 +256,7 @@ var LanguagesColor = map[string]string{ | |||||
| "Zephir": "#118f9e", | "Zephir": "#118f9e", | ||||
| "Zig": "#ec915c", | "Zig": "#ec915c", | ||||
| "eC": "#913960", | "eC": "#913960", | ||||
| "mIRC Script": "#926059", | |||||
| "mcfunction": "#E22837", | "mcfunction": "#E22837", | ||||
| "nesC": "#94B0C7", | "nesC": "#94B0C7", | ||||
| "ooc": "#b0b77e", | "ooc": "#b0b77e", | ||||
| @@ -0,0 +1,7 @@ | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | |||||
| // linguist's commit from which files were generated. | |||||
| var LinguistCommit = "40992ba7f86889f80dfed3ba95e11e1082200bad" | |||||
| @@ -1,12 +1,12 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| import ( | import ( | ||||
| "regexp" | "regexp" | ||||
| "github.com/src-d/enry/v2/data/rule" | |||||
| "github.com/go-enry/go-enry/v2/data/rule" | |||||
| ) | ) | ||||
| var ContentHeuristics = map[string]*Heuristics{ | var ContentHeuristics = map[string]*Heuristics{ | ||||
| @@ -591,6 +591,12 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])`), | regexp.MustCompile(`(?m)^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])`), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".asm": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Motorola 68K Assembly"), | |||||
| regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), | |||||
| ), | |||||
| }, | |||||
| ".asy": &Heuristics{ | ".asy": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("LTspice Symbol"), | rule.MatchingLanguages("LTspice Symbol"), | ||||
| @@ -673,6 +679,16 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)([\/\\].*:\s+.*\s\\$|: \\$|^[ %]:|^[\w\s\/\\.]+\w+\.\w+\s*:\s+[\w\s\/\\.]+\w+\.\w+)`), | regexp.MustCompile(`(?m)([\/\\].*:\s+.*\s\\$|: \\$|^[ %]:|^[\w\s\/\\.]+\w+\.\w+\s*:\s+[\w\s\/\\.]+\w+\.\w+)`), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".dsp": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Microsoft Developer Studio Project"), | |||||
| regexp.MustCompile(`(?m)# Microsoft Developer Studio Generated Build File`), | |||||
| ), | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Faust"), | |||||
| regexp.MustCompile(`(?m)\bprocess\s*[(=]|\b(library|import)\s*\(\s*"|\bdeclare\s+(name|version|author|copyright|license)\s+"`), | |||||
| ), | |||||
| }, | |||||
| ".ecl": &Heuristics{ | ".ecl": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("ECLiPSe"), | rule.MatchingLanguages("ECLiPSe"), | ||||
| @@ -772,6 +788,10 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| ), | ), | ||||
| }, | }, | ||||
| ".gs": &Heuristics{ | ".gs": &Heuristics{ | ||||
| rule.Or( | |||||
| rule.MatchingLanguages("GLSL"), | |||||
| regexp.MustCompile(`(?m)^#version\s+[0-9]+\b`), | |||||
| ), | |||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Gosu"), | rule.MatchingLanguages("Gosu"), | ||||
| regexp.MustCompile(`(?m)^uses java\.`), | regexp.MustCompile(`(?m)^uses java\.`), | ||||
| @@ -793,6 +813,16 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)<\?hh`), | regexp.MustCompile(`(?m)<\?hh`), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".i": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Motorola 68K Assembly"), | |||||
| regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), | |||||
| ), | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("SWIG"), | |||||
| regexp.MustCompile(`(?m)^[ \t]*%[a-z_]+\b|^%[{}]$`), | |||||
| ), | |||||
| }, | |||||
| ".ice": &Heuristics{ | ".ice": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("JSON"), | rule.MatchingLanguages("JSON"), | ||||
| @@ -803,6 +833,10 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| ), | ), | ||||
| }, | }, | ||||
| ".inc": &Heuristics{ | ".inc": &Heuristics{ | ||||
| rule.Or( | |||||
| rule.MatchingLanguages("Motorola 68K Assembly"), | |||||
| regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), | |||||
| ), | |||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("PHP"), | rule.MatchingLanguages("PHP"), | ||||
| regexp.MustCompile(`(?m)^<\?(?:php)?`), | regexp.MustCompile(`(?m)^<\?(?:php)?`), | ||||
| @@ -931,6 +965,12 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| rule.MatchingLanguages("Roff"), | rule.MatchingLanguages("Roff"), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".mask": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Unity3d Asset"), | |||||
| regexp.MustCompile(`(?m)tag:unity3d.com`), | |||||
| ), | |||||
| }, | |||||
| ".md": &Heuristics{ | ".md": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Markdown"), | rule.MatchingLanguages("Markdown"), | ||||
| @@ -1047,6 +1087,25 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| rule.MatchingLanguages("NewLisp"), | rule.MatchingLanguages("NewLisp"), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".odin": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Object Data Instance Notation"), | |||||
| regexp.MustCompile(`(?m)(?:^|<)\s*[A-Za-z0-9_]+\s*=\s*<`), | |||||
| ), | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Odin"), | |||||
| regexp.MustCompile(`(?m)package\s+\w+|\b(?:im|ex)port\s*"[\w:./]+"|\w+\s*::\s*(?:proc|struct)\s*\(|^\s*//\s`), | |||||
| ), | |||||
| }, | |||||
| ".p": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Gnuplot"), | |||||
| regexp.MustCompile(`(?m)^s?plot\b|^set\s+(term|terminal|out|output|[xy]tics|[xy]label|[xy]range|style)\b`), | |||||
| ), | |||||
| rule.Always( | |||||
| rule.MatchingLanguages("OpenEdge ABL"), | |||||
| ), | |||||
| }, | |||||
| ".php": &Heuristics{ | ".php": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Hack"), | rule.MatchingLanguages("Hack"), | ||||
| @@ -1067,17 +1126,26 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | ||||
| ), | ), | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Perl 6"), | |||||
| rule.MatchingLanguages("Raku"), | |||||
| regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".plist": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("XML Property List"), | |||||
| regexp.MustCompile(`(?m)<!DOCTYPE\s+plist`), | |||||
| ), | |||||
| rule.Always( | |||||
| rule.MatchingLanguages("OpenStep Property List"), | |||||
| ), | |||||
| }, | |||||
| ".pm": &Heuristics{ | ".pm": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Perl"), | rule.MatchingLanguages("Perl"), | ||||
| regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | ||||
| ), | ), | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Perl 6"), | |||||
| rule.MatchingLanguages("Raku"), | |||||
| regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | ||||
| ), | ), | ||||
| rule.Or( | rule.Or( | ||||
| @@ -1105,6 +1173,10 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| ), | ), | ||||
| }, | }, | ||||
| ".pro": &Heuristics{ | ".pro": &Heuristics{ | ||||
| rule.Or( | |||||
| rule.MatchingLanguages("Proguard"), | |||||
| regexp.MustCompile(`(?m)^-(include\b.*\.pro$|keep\b|keepclassmembers\b|keepattributes\b)`), | |||||
| ), | |||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Prolog"), | rule.MatchingLanguages("Prolog"), | ||||
| regexp.MustCompile(`(?m)^[^\[#]+:-`), | regexp.MustCompile(`(?m)^[^\[#]+:-`), | ||||
| @@ -1216,6 +1288,12 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)#include|#pragma\s+(rs|version)|__attribute__`), | regexp.MustCompile(`(?m)#include|#pragma\s+(rs|version)|__attribute__`), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".s": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Motorola 68K Assembly"), | |||||
| regexp.MustCompile(`(?m)(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b|(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+|(?im)^\s*move\.[bwl]\s+.*\b[ad]\d|(?im)^\s*movem\.[bwl]\b|(?im)^\s*move[mp](?:\.[wl])?\b|(?im)^\s*btst\b|(?im)^\s*dbra\b`), | |||||
| ), | |||||
| }, | |||||
| ".sc": &Heuristics{ | ".sc": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("SuperCollider"), | rule.MatchingLanguages("SuperCollider"), | ||||
| @@ -1267,7 +1345,7 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | ||||
| ), | ), | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Perl 6"), | |||||
| rule.MatchingLanguages("Raku"), | |||||
| regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | ||||
| ), | ), | ||||
| rule.Or( | rule.Or( | ||||
| @@ -1313,13 +1391,27 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| regexp.MustCompile(`(?m)(?i:^\s*<\?xml\s+version)`), | regexp.MustCompile(`(?m)(?i:^\s*<\?xml\s+version)`), | ||||
| ), | ), | ||||
| }, | }, | ||||
| ".v": &Heuristics{ | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Coq"), | |||||
| regexp.MustCompile(`(?m)\(\*.*?\*\)|(?:^|\s)(?:Proof|Qed)\.(?:$|\s)|(?:^|\s)Require[ \t]+Import\s`), | |||||
| ), | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("Verilog"), | |||||
| regexp.MustCompile(`(?m)^[ \t]*module\s+[^\s()]+\s+\#?\(|^[ \t]*`+"`"+`(?:ifdef|timescale)\s|^[ \t]*always[ \t]+@`), | |||||
| ), | |||||
| rule.Or( | |||||
| rule.MatchingLanguages("V"), | |||||
| regexp.MustCompile(`(?m)\$(?:if|else)[ \t]|^[ \t]*fn\s+[^\s()]+\(.*?\).*?\{|^[ \t]*for\s*\{`), | |||||
| ), | |||||
| }, | |||||
| ".vba": &Heuristics{ | ".vba": &Heuristics{ | ||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("Vim script"), | rule.MatchingLanguages("Vim script"), | ||||
| regexp.MustCompile(`(?m)^UseVimball`), | regexp.MustCompile(`(?m)^UseVimball`), | ||||
| ), | ), | ||||
| rule.Always( | rule.Always( | ||||
| rule.MatchingLanguages("Visual Basic"), | |||||
| rule.MatchingLanguages("VBA"), | |||||
| ), | ), | ||||
| }, | }, | ||||
| ".w": &Heuristics{ | ".w": &Heuristics{ | ||||
| @@ -1333,6 +1425,10 @@ var ContentHeuristics = map[string]*Heuristics{ | |||||
| ), | ), | ||||
| }, | }, | ||||
| ".x": &Heuristics{ | ".x": &Heuristics{ | ||||
| rule.Or( | |||||
| rule.MatchingLanguages("DirectX 3D File"), | |||||
| regexp.MustCompile(`(?m)^xof 030(2|3)(?:txt|bin|tzip|bzip)\b`), | |||||
| ), | |||||
| rule.Or( | rule.Or( | ||||
| rule.MatchingLanguages("RPC"), | rule.MatchingLanguages("RPC"), | ||||
| regexp.MustCompile(`(?m)\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\(`), | regexp.MustCompile(`(?m)\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\(`), | ||||
| @@ -1,5 +1,5 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| @@ -1,5 +1,5 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| @@ -23,7 +23,10 @@ var LanguagesByFilename = map[string][]string{ | |||||
| ".coffeelintignore": {"Ignore List"}, | ".coffeelintignore": {"Ignore List"}, | ||||
| ".cproject": {"XML"}, | ".cproject": {"XML"}, | ||||
| ".cshrc": {"Shell"}, | ".cshrc": {"Shell"}, | ||||
| ".curlrc": {"cURL Config"}, | |||||
| ".cvsignore": {"Ignore List"}, | ".cvsignore": {"Ignore List"}, | ||||
| ".dir_colors": {"dircolors"}, | |||||
| ".dircolors": {"dircolors"}, | |||||
| ".dockerignore": {"Ignore List"}, | ".dockerignore": {"Ignore List"}, | ||||
| ".editorconfig": {"EditorConfig"}, | ".editorconfig": {"EditorConfig"}, | ||||
| ".emacs": {"Emacs Lisp"}, | ".emacs": {"Emacs Lisp"}, | ||||
| @@ -43,14 +46,17 @@ var LanguagesByFilename = map[string][]string{ | |||||
| ".gvimrc": {"Vim script"}, | ".gvimrc": {"Vim script"}, | ||||
| ".htaccess": {"ApacheConf"}, | ".htaccess": {"ApacheConf"}, | ||||
| ".htmlhintrc": {"JSON"}, | ".htmlhintrc": {"JSON"}, | ||||
| ".inputrc": {"Readline Config"}, | |||||
| ".irbrc": {"Ruby"}, | ".irbrc": {"Ruby"}, | ||||
| ".jscsrc": {"JSON with Comments"}, | ".jscsrc": {"JSON with Comments"}, | ||||
| ".jshintrc": {"JSON with Comments"}, | ".jshintrc": {"JSON with Comments"}, | ||||
| ".jslintrc": {"JSON with Comments"}, | ".jslintrc": {"JSON with Comments"}, | ||||
| ".login": {"Shell"}, | ".login": {"Shell"}, | ||||
| ".luacheckrc": {"Lua"}, | |||||
| ".nanorc": {"nanorc"}, | ".nanorc": {"nanorc"}, | ||||
| ".nodemonignore": {"Ignore List"}, | ".nodemonignore": {"Ignore List"}, | ||||
| ".npmignore": {"Ignore List"}, | ".npmignore": {"Ignore List"}, | ||||
| ".npmrc": {"NPM Config"}, | |||||
| ".nvimrc": {"Vim script"}, | ".nvimrc": {"Vim script"}, | ||||
| ".php": {"PHP"}, | ".php": {"PHP"}, | ||||
| ".php_cs": {"PHP"}, | ".php_cs": {"PHP"}, | ||||
| @@ -67,6 +73,7 @@ var LanguagesByFilename = map[string][]string{ | |||||
| ".viper": {"Emacs Lisp"}, | ".viper": {"Emacs Lisp"}, | ||||
| ".vscodeignore": {"Ignore List"}, | ".vscodeignore": {"Ignore List"}, | ||||
| ".watchmanconfig": {"JSON"}, | ".watchmanconfig": {"JSON"}, | ||||
| ".wgetrc": {"Wget Config"}, | |||||
| ".zlogin": {"Shell"}, | ".zlogin": {"Shell"}, | ||||
| ".zlogout": {"Shell"}, | ".zlogout": {"Shell"}, | ||||
| ".zprofile": {"Shell"}, | ".zprofile": {"Shell"}, | ||||
| @@ -77,9 +84,9 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "App.config": {"XML"}, | "App.config": {"XML"}, | ||||
| "Appraisals": {"Ruby"}, | "Appraisals": {"Ruby"}, | ||||
| "BSDmakefile": {"Makefile"}, | "BSDmakefile": {"Makefile"}, | ||||
| "BUCK": {"Python"}, | |||||
| "BUILD": {"Python"}, | |||||
| "BUILD.bazel": {"Python"}, | |||||
| "BUCK": {"Starlark"}, | |||||
| "BUILD": {"Starlark"}, | |||||
| "BUILD.bazel": {"Starlark"}, | |||||
| "Berksfile": {"Ruby"}, | "Berksfile": {"Ruby"}, | ||||
| "Brewfile": {"Ruby"}, | "Brewfile": {"Ruby"}, | ||||
| "Buildfile": {"Ruby"}, | "Buildfile": {"Ruby"}, | ||||
| @@ -91,6 +98,8 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "Capfile": {"Ruby"}, | "Capfile": {"Ruby"}, | ||||
| "Cargo.lock": {"TOML"}, | "Cargo.lock": {"TOML"}, | ||||
| "Cask": {"Emacs Lisp"}, | "Cask": {"Emacs Lisp"}, | ||||
| "DEPS": {"Python"}, | |||||
| "DIR_COLORS": {"dircolors"}, | |||||
| "Dangerfile": {"Ruby"}, | "Dangerfile": {"Ruby"}, | ||||
| "Deliverfile": {"Ruby"}, | "Deliverfile": {"Ruby"}, | ||||
| "Dockerfile": {"Dockerfile"}, | "Dockerfile": {"Dockerfile"}, | ||||
| @@ -144,11 +153,14 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "Snapfile": {"Ruby"}, | "Snapfile": {"Ruby"}, | ||||
| "Thorfile": {"Ruby"}, | "Thorfile": {"Ruby"}, | ||||
| "Vagrantfile": {"Ruby"}, | "Vagrantfile": {"Ruby"}, | ||||
| "WORKSPACE": {"Python"}, | |||||
| "WORKSPACE": {"Starlark"}, | |||||
| "Web.Debug.config": {"XML"}, | "Web.Debug.config": {"XML"}, | ||||
| "Web.Release.config": {"XML"}, | "Web.Release.config": {"XML"}, | ||||
| "Web.config": {"XML"}, | "Web.config": {"XML"}, | ||||
| "XCompose": {"XCompose"}, | "XCompose": {"XCompose"}, | ||||
| "_curlrc": {"cURL Config"}, | |||||
| "_dir_colors": {"dircolors"}, | |||||
| "_dircolors": {"dircolors"}, | |||||
| "_emacs": {"Emacs Lisp"}, | "_emacs": {"Emacs Lisp"}, | ||||
| "_vimrc": {"Vim script"}, | "_vimrc": {"Vim script"}, | ||||
| "abbrev_defs": {"Emacs Lisp"}, | "abbrev_defs": {"Emacs Lisp"}, | ||||
| @@ -173,7 +185,9 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "delete.me": {"Text"}, | "delete.me": {"Text"}, | ||||
| "descrip.mmk": {"Module Management System"}, | "descrip.mmk": {"Module Management System"}, | ||||
| "descrip.mms": {"Module Management System"}, | "descrip.mms": {"Module Management System"}, | ||||
| "dir_colors": {"dircolors"}, | |||||
| "encodings.dir": {"X Font Directory Index"}, | "encodings.dir": {"X Font Directory Index"}, | ||||
| "eqnrc": {"Roff"}, | |||||
| "expr-dist": {"R"}, | "expr-dist": {"R"}, | ||||
| "firestore.rules": {"Cloud Firestore Security Rules"}, | "firestore.rules": {"Cloud Firestore Security Rules"}, | ||||
| "fonts.alias": {"X Font Directory Index"}, | "fonts.alias": {"X Font Directory Index"}, | ||||
| @@ -189,6 +203,7 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "gvimrc": {"Vim script"}, | "gvimrc": {"Vim script"}, | ||||
| "haproxy.cfg": {"HAProxy"}, | "haproxy.cfg": {"HAProxy"}, | ||||
| "httpd.conf": {"ApacheConf"}, | "httpd.conf": {"ApacheConf"}, | ||||
| "inputrc": {"Readline Config"}, | |||||
| "jsconfig.json": {"JSON with Comments"}, | "jsconfig.json": {"JSON with Comments"}, | ||||
| "keep.me": {"Text"}, | "keep.me": {"Text"}, | ||||
| "language-configuration.json": {"JSON with Comments"}, | "language-configuration.json": {"JSON with Comments"}, | ||||
| @@ -212,6 +227,9 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "nim.cfg": {"Nim"}, | "nim.cfg": {"Nim"}, | ||||
| "nvimrc": {"Vim script"}, | "nvimrc": {"Vim script"}, | ||||
| "owh": {"Tcl"}, | "owh": {"Tcl"}, | ||||
| "package.mask": {"Text"}, | |||||
| "package.use.mask": {"Text"}, | |||||
| "package.use.stable.mask": {"Text"}, | |||||
| "packages.config": {"XML"}, | "packages.config": {"XML"}, | ||||
| "pom.xml": {"Maven POM"}, | "pom.xml": {"Maven POM"}, | ||||
| "profile": {"Shell"}, | "profile": {"Shell"}, | ||||
| @@ -229,10 +247,15 @@ var LanguagesByFilename = map[string][]string{ | |||||
| "sshd_config": {"SSH Config"}, | "sshd_config": {"SSH Config"}, | ||||
| "starfield": {"Tcl"}, | "starfield": {"Tcl"}, | ||||
| "test.me": {"Text"}, | "test.me": {"Text"}, | ||||
| "troffrc": {"Roff"}, | |||||
| "troffrc-end": {"Roff"}, | |||||
| "tsconfig.json": {"JSON with Comments"}, | "tsconfig.json": {"JSON with Comments"}, | ||||
| "use.mask": {"Text"}, | |||||
| "use.stable.mask": {"Text"}, | |||||
| "vimrc": {"Vim script"}, | "vimrc": {"Vim script"}, | ||||
| "wscript": {"Python"}, | "wscript": {"Python"}, | ||||
| "xcompose": {"XCompose"}, | "xcompose": {"XCompose"}, | ||||
| "yarn.lock": {"YAML"}, | |||||
| "zlogin": {"Shell"}, | "zlogin": {"Shell"}, | ||||
| "zlogout": {"Shell"}, | "zlogout": {"Shell"}, | ||||
| "zprofile": {"Shell"}, | "zprofile": {"Shell"}, | ||||
| @@ -0,0 +1,89 @@ | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | |||||
| var LanguagesGroup = map[string]string{ | |||||
| "Alpine Abuild": "Shell", | |||||
| "Apollo Guidance Computer": "Assembly", | |||||
| "BibTeX": "TeX", | |||||
| "Bison": "Yacc", | |||||
| "Blade": "HTML", | |||||
| "C2hs Haskell": "Haskell", | |||||
| "Closure Templates": "HTML", | |||||
| "ColdFusion CFC": "ColdFusion", | |||||
| "Cython": "Python", | |||||
| "ECLiPSe": "prolog", | |||||
| "EJS": "HTML", | |||||
| "Easybuild": "Python", | |||||
| "Ecere Projects": "JavaScript", | |||||
| "EditorConfig": "INI", | |||||
| "Filterscript": "RenderScript", | |||||
| "Gentoo Ebuild": "Shell", | |||||
| "Gentoo Eclass": "Shell", | |||||
| "Git Attributes": "INI", | |||||
| "Git Config": "INI", | |||||
| "Groovy Server Pages": "Groovy", | |||||
| "HTML+Django": "HTML", | |||||
| "HTML+ECR": "HTML", | |||||
| "HTML+EEX": "HTML", | |||||
| "HTML+ERB": "HTML", | |||||
| "HTML+PHP": "HTML", | |||||
| "HTML+Razor": "HTML", | |||||
| "Haml": "HTML", | |||||
| "Handlebars": "HTML", | |||||
| "Ignore List": "INI", | |||||
| "Isabelle ROOT": "Isabelle", | |||||
| "JFlex": "Lex", | |||||
| "JSON with Comments": "JSON", | |||||
| "JSX": "JavaScript", | |||||
| "Java Server Pages": "Java", | |||||
| "JavaScript+ERB": "JavaScript", | |||||
| "Jison": "Yacc", | |||||
| "Jison Lex": "Lex", | |||||
| "Latte": "HTML", | |||||
| "Less": "CSS", | |||||
| "Literate Agda": "Agda", | |||||
| "Literate CoffeeScript": "CoffeeScript", | |||||
| "Literate Haskell": "Haskell", | |||||
| "M4Sugar": "M4", | |||||
| "MUF": "Forth", | |||||
| "Marko": "HTML", | |||||
| "Motorola 68K Assembly": "Assembly", | |||||
| "NPM Config": "INI", | |||||
| "NumPy": "Python", | |||||
| "OpenCL": "C", | |||||
| "OpenRC runscript": "Shell", | |||||
| "Parrot Assembly": "Parrot", | |||||
| "Parrot Internal Representation": "Parrot", | |||||
| "Pic": "Roff", | |||||
| "PostCSS": "CSS", | |||||
| "Pug": "HTML", | |||||
| "Python console": "Python", | |||||
| "Python traceback": "Python", | |||||
| "RHTML": "HTML", | |||||
| "Readline Config": "INI", | |||||
| "Roff Manpage": "Roff", | |||||
| "SCSS": "CSS", | |||||
| "SSH Config": "INI", | |||||
| "STON": "Smalltalk", | |||||
| "Sage": "Python", | |||||
| "Sass": "CSS", | |||||
| "Scaml": "HTML", | |||||
| "Slim": "HTML", | |||||
| "Stylus": "CSS", | |||||
| "SugarSS": "CSS", | |||||
| "Svelte": "HTML", | |||||
| "TSX": "TypeScript", | |||||
| "Tcsh": "Shell", | |||||
| "Twig": "HTML", | |||||
| "Unified Parallel C": "C", | |||||
| "Unix Assembly": "Assembly", | |||||
| "Wget Config": "INI", | |||||
| "X BitMap": "C", | |||||
| "X PixMap": "C", | |||||
| "XML Property List": "XML", | |||||
| "cURL Config": "INI", | |||||
| "fish": "Shell", | |||||
| "nanorc": "INI", | |||||
| } | |||||
| @@ -1,6 +1,6 @@ | |||||
| package data | package data | ||||
| import "github.com/src-d/enry/v2/data/rule" | |||||
| import "github.com/go-enry/go-enry/v2/data/rule" | |||||
| // Heuristics implements a rule-based content matching engine. | // Heuristics implements a rule-based content matching engine. | ||||
| @@ -1,5 +1,5 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| @@ -20,6 +20,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||||
| "coffee": {"CoffeeScript"}, | "coffee": {"CoffeeScript"}, | ||||
| "cperl": {"Perl"}, | "cperl": {"Perl"}, | ||||
| "crystal": {"Crystal"}, | "crystal": {"Crystal"}, | ||||
| "csh": {"Tcsh"}, | |||||
| "csi": {"Scheme"}, | "csi": {"Scheme"}, | ||||
| "cvc4": {"SMT"}, | "cvc4": {"SMT"}, | ||||
| "cwl-runner": {"Common Workflow Language"}, | "cwl-runner": {"Common Workflow Language"}, | ||||
| @@ -36,6 +37,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||||
| "gawk": {"Awk"}, | "gawk": {"Awk"}, | ||||
| "gerbv": {"Gerber Image"}, | "gerbv": {"Gerber Image"}, | ||||
| "gerbview": {"Gerber Image"}, | "gerbview": {"Gerber Image"}, | ||||
| "gjs": {"JavaScript"}, | |||||
| "gn": {"GN"}, | "gn": {"GN"}, | ||||
| "gnuplot": {"Gnuplot"}, | "gnuplot": {"Gnuplot"}, | ||||
| "gosh": {"Scheme"}, | "gosh": {"Scheme"}, | ||||
| @@ -57,6 +59,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||||
| "lua": {"Lua", "Terra"}, | "lua": {"Lua", "Terra"}, | ||||
| "macruby": {"Ruby"}, | "macruby": {"Ruby"}, | ||||
| "make": {"Makefile"}, | "make": {"Makefile"}, | ||||
| "makeinfo": {"Texinfo"}, | |||||
| "mathsat5": {"SMT"}, | "mathsat5": {"SMT"}, | ||||
| "mawk": {"Awk"}, | "mawk": {"Awk"}, | ||||
| "minised": {"sed"}, | "minised": {"sed"}, | ||||
| @@ -77,7 +80,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||||
| "parrot": {"Parrot Assembly", "Parrot Internal Representation"}, | "parrot": {"Parrot Assembly", "Parrot Internal Representation"}, | ||||
| "pdksh": {"Shell"}, | "pdksh": {"Shell"}, | ||||
| "perl": {"Perl", "Pod"}, | "perl": {"Perl", "Pod"}, | ||||
| "perl6": {"Perl 6", "Pod 6"}, | |||||
| "perl6": {"Pod 6", "Raku"}, | |||||
| "php": {"PHP"}, | "php": {"PHP"}, | ||||
| "picolisp": {"PicoLisp"}, | "picolisp": {"PicoLisp"}, | ||||
| "pike": {"Pike"}, | "pike": {"Pike"}, | ||||
| @@ -86,10 +89,13 @@ var LanguagesByInterpreter = map[string][]string{ | |||||
| "python": {"Python"}, | "python": {"Python"}, | ||||
| "python2": {"Python"}, | "python2": {"Python"}, | ||||
| "python3": {"Python"}, | "python3": {"Python"}, | ||||
| "qjs": {"JavaScript"}, | |||||
| "qmake": {"QMake"}, | "qmake": {"QMake"}, | ||||
| "r6rs": {"Scheme"}, | "r6rs": {"Scheme"}, | ||||
| "racket": {"Racket"}, | "racket": {"Racket"}, | ||||
| "rake": {"Ruby"}, | "rake": {"Ruby"}, | ||||
| "raku": {"Raku"}, | |||||
| "rakudo": {"Raku"}, | |||||
| "rbx": {"Ruby"}, | "rbx": {"Ruby"}, | ||||
| "rc": {"Shell"}, | "rc": {"Shell"}, | ||||
| "regina": {"REXX"}, | "regina": {"REXX"}, | ||||
| @@ -112,6 +118,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||||
| "swipl": {"Prolog"}, | "swipl": {"Prolog"}, | ||||
| "tcc": {"C"}, | "tcc": {"C"}, | ||||
| "tclsh": {"Tcl"}, | "tclsh": {"Tcl"}, | ||||
| "tcsh": {"Tcsh"}, | |||||
| "ts-node": {"TypeScript"}, | "ts-node": {"TypeScript"}, | ||||
| "v8": {"JavaScript"}, | "v8": {"JavaScript"}, | ||||
| "v8-shell": {"JavaScript"}, | "v8-shell": {"JavaScript"}, | ||||
| @@ -1,5 +1,5 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| @@ -13,6 +13,7 @@ var LanguagesMime = map[string]string{ | |||||
| "Ant Build System": "application/xml", | "Ant Build System": "application/xml", | ||||
| "Apex": "text/x-java", | "Apex": "text/x-java", | ||||
| "Asymptote": "text/x-kotlin", | "Asymptote": "text/x-kotlin", | ||||
| "BibTeX": "text/x-stex", | |||||
| "Brainfuck": "text/x-brainfuck", | "Brainfuck": "text/x-brainfuck", | ||||
| "C": "text/x-csrc", | "C": "text/x-csrc", | ||||
| "C#": "text/x-csharp", | "C#": "text/x-csharp", | ||||
| @@ -50,7 +51,7 @@ var LanguagesMime = map[string]string{ | |||||
| "Easybuild": "text/x-python", | "Easybuild": "text/x-python", | ||||
| "Ecere Projects": "application/json", | "Ecere Projects": "application/json", | ||||
| "EditorConfig": "text/x-properties", | "EditorConfig": "text/x-properties", | ||||
| "Edje Data Collection": "application/json", | |||||
| "Edje Data Collection": "text/x-c++src", | |||||
| "Eiffel": "text/x-eiffel", | "Eiffel": "text/x-eiffel", | ||||
| "Elm": "text/x-elm", | "Elm": "text/x-elm", | ||||
| "Emacs Lisp": "text/x-common-lisp", | "Emacs Lisp": "text/x-common-lisp", | ||||
| @@ -146,7 +147,6 @@ var LanguagesMime = map[string]string{ | |||||
| "PLpgSQL": "text/x-sql", | "PLpgSQL": "text/x-sql", | ||||
| "Pascal": "text/x-pascal", | "Pascal": "text/x-pascal", | ||||
| "Perl": "text/x-perl", | "Perl": "text/x-perl", | ||||
| "Perl 6": "text/x-perl", | |||||
| "Pic": "text/troff", | "Pic": "text/troff", | ||||
| "Pod": "text/x-perl", | "Pod": "text/x-perl", | ||||
| "PowerShell": "application/x-powershell", | "PowerShell": "application/x-powershell", | ||||
| @@ -161,6 +161,7 @@ var LanguagesMime = map[string]string{ | |||||
| "RHTML": "application/x-erb", | "RHTML": "application/x-erb", | ||||
| "RMarkdown": "text/x-gfm", | "RMarkdown": "text/x-gfm", | ||||
| "RPM Spec": "text/x-rpm-spec", | "RPM Spec": "text/x-rpm-spec", | ||||
| "Raku": "text/x-perl", | |||||
| "Reason": "text/x-rustsrc", | "Reason": "text/x-rustsrc", | ||||
| "Roff": "text/troff", | "Roff": "text/troff", | ||||
| "Roff Manpage": "text/troff", | "Roff Manpage": "text/troff", | ||||
| @@ -174,6 +175,7 @@ var LanguagesMime = map[string]string{ | |||||
| "SQLPL": "text/x-sql", | "SQLPL": "text/x-sql", | ||||
| "SRecode Template": "text/x-common-lisp", | "SRecode Template": "text/x-common-lisp", | ||||
| "SVG": "text/xml", | "SVG": "text/xml", | ||||
| "SWIG": "text/x-c++src", | |||||
| "Sage": "text/x-python", | "Sage": "text/x-python", | ||||
| "SaltStack": "text/x-yaml", | "SaltStack": "text/x-yaml", | ||||
| "Sass": "text/x-sass", | "Sass": "text/x-sass", | ||||
| @@ -186,6 +188,7 @@ var LanguagesMime = map[string]string{ | |||||
| "Smarty": "text/x-smarty", | "Smarty": "text/x-smarty", | ||||
| "Squirrel": "text/x-c++src", | "Squirrel": "text/x-c++src", | ||||
| "Standard ML": "text/x-ocaml", | "Standard ML": "text/x-ocaml", | ||||
| "Starlark": "text/x-python", | |||||
| "Svelte": "text/html", | "Svelte": "text/html", | ||||
| "Swift": "text/x-swift", | "Swift": "text/x-swift", | ||||
| "SystemVerilog": "text/x-systemverilog", | "SystemVerilog": "text/x-systemverilog", | ||||
| @@ -203,9 +206,12 @@ var LanguagesMime = map[string]string{ | |||||
| "Unity3D Asset": "text/x-yaml", | "Unity3D Asset": "text/x-yaml", | ||||
| "Uno": "text/x-csharp", | "Uno": "text/x-csharp", | ||||
| "UnrealScript": "text/x-java", | "UnrealScript": "text/x-java", | ||||
| "V": "text/x-go", | |||||
| "VBA": "text/x-vb", | |||||
| "VBScript": "text/vbscript", | |||||
| "VHDL": "text/x-vhdl", | "VHDL": "text/x-vhdl", | ||||
| "Verilog": "text/x-verilog", | "Verilog": "text/x-verilog", | ||||
| "Visual Basic": "text/x-vb", | |||||
| "Visual Basic .NET": "text/x-vb", | |||||
| "Volt": "text/x-d", | "Volt": "text/x-d", | ||||
| "WebAssembly": "text/x-common-lisp", | "WebAssembly": "text/x-common-lisp", | ||||
| "WebIDL": "text/x-webidl", | "WebIDL": "text/x-webidl", | ||||
| @@ -214,6 +220,7 @@ var LanguagesMime = map[string]string{ | |||||
| "X PixMap": "text/x-csrc", | "X PixMap": "text/x-csrc", | ||||
| "XC": "text/x-csrc", | "XC": "text/x-csrc", | ||||
| "XML": "text/xml", | "XML": "text/xml", | ||||
| "XML Property List": "text/xml", | |||||
| "XPages": "text/xml", | "XPages": "text/xml", | ||||
| "XProc": "text/xml", | "XProc": "text/xml", | ||||
| "XQuery": "application/xquery", | "XQuery": "application/xquery", | ||||
| @@ -0,0 +1,560 @@ | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | |||||
| var LanguagesType = map[string]int{ | |||||
| "1C Enterprise": 2, | |||||
| "4D": 2, | |||||
| "ABAP": 2, | |||||
| "ABNF": 1, | |||||
| "AGS Script": 2, | |||||
| "AMPL": 2, | |||||
| "ANTLR": 2, | |||||
| "API Blueprint": 3, | |||||
| "APL": 2, | |||||
| "ASN.1": 1, | |||||
| "ASP": 2, | |||||
| "ATS": 2, | |||||
| "ActionScript": 2, | |||||
| "Ada": 2, | |||||
| "Adobe Font Metrics": 1, | |||||
| "Agda": 2, | |||||
| "Alloy": 2, | |||||
| "Alpine Abuild": 2, | |||||
| "Altium Designer": 1, | |||||
| "AngelScript": 2, | |||||
| "Ant Build System": 1, | |||||
| "ApacheConf": 1, | |||||
| "Apex": 2, | |||||
| "Apollo Guidance Computer": 2, | |||||
| "AppleScript": 2, | |||||
| "Arc": 2, | |||||
| "AsciiDoc": 4, | |||||
| "AspectJ": 2, | |||||
| "Assembly": 2, | |||||
| "Asymptote": 2, | |||||
| "Augeas": 2, | |||||
| "AutoHotkey": 2, | |||||
| "AutoIt": 2, | |||||
| "Awk": 2, | |||||
| "Ballerina": 2, | |||||
| "Batchfile": 2, | |||||
| "Befunge": 2, | |||||
| "BibTeX": 3, | |||||
| "Bison": 2, | |||||
| "BitBake": 2, | |||||
| "Blade": 3, | |||||
| "BlitzBasic": 2, | |||||
| "BlitzMax": 2, | |||||
| "Bluespec": 2, | |||||
| "Boo": 2, | |||||
| "Brainfuck": 2, | |||||
| "Brightscript": 2, | |||||
| "C": 2, | |||||
| "C#": 2, | |||||
| "C++": 2, | |||||
| "C-ObjDump": 1, | |||||
| "C2hs Haskell": 2, | |||||
| "CLIPS": 2, | |||||
| "CMake": 2, | |||||
| "COBOL": 2, | |||||
| "COLLADA": 1, | |||||
| "CSON": 1, | |||||
| "CSS": 3, | |||||
| "CSV": 1, | |||||
| "CWeb": 2, | |||||
| "Cabal Config": 1, | |||||
| "Cap'n Proto": 2, | |||||
| "CartoCSS": 2, | |||||
| "Ceylon": 2, | |||||
| "Chapel": 2, | |||||
| "Charity": 2, | |||||
| "ChucK": 2, | |||||
| "Cirru": 2, | |||||
| "Clarion": 2, | |||||
| "Clean": 2, | |||||
| "Click": 2, | |||||
| "Clojure": 2, | |||||
| "Closure Templates": 3, | |||||
| "Cloud Firestore Security Rules": 1, | |||||
| "CoNLL-U": 1, | |||||
| "CodeQL": 2, | |||||
| "CoffeeScript": 2, | |||||
| "ColdFusion": 2, | |||||
| "ColdFusion CFC": 2, | |||||
| "Common Lisp": 2, | |||||
| "Common Workflow Language": 2, | |||||
| "Component Pascal": 2, | |||||
| "Cool": 2, | |||||
| "Coq": 2, | |||||
| "Cpp-ObjDump": 1, | |||||
| "Creole": 4, | |||||
| "Crystal": 2, | |||||
| "Csound": 2, | |||||
| "Csound Document": 2, | |||||
| "Csound Score": 2, | |||||
| "Cuda": 2, | |||||
| "Cycript": 2, | |||||
| "Cython": 2, | |||||
| "D": 2, | |||||
| "D-ObjDump": 1, | |||||
| "DIGITAL Command Language": 2, | |||||
| "DM": 2, | |||||
| "DNS Zone": 1, | |||||
| "DTrace": 2, | |||||
| "Darcs Patch": 1, | |||||
| "Dart": 2, | |||||
| "DataWeave": 2, | |||||
| "Dhall": 2, | |||||
| "Diff": 1, | |||||
| "DirectX 3D File": 1, | |||||
| "Dockerfile": 2, | |||||
| "Dogescript": 2, | |||||
| "Dylan": 2, | |||||
| "E": 2, | |||||
| "EBNF": 1, | |||||
| "ECL": 2, | |||||
| "ECLiPSe": 2, | |||||
| "EJS": 3, | |||||
| "EML": 1, | |||||
| "EQ": 2, | |||||
| "Eagle": 1, | |||||
| "Easybuild": 1, | |||||
| "Ecere Projects": 1, | |||||
| "EditorConfig": 1, | |||||
| "Edje Data Collection": 1, | |||||
| "Eiffel": 2, | |||||
| "Elixir": 2, | |||||
| "Elm": 2, | |||||
| "Emacs Lisp": 2, | |||||
| "EmberScript": 2, | |||||
| "Erlang": 2, | |||||
| "F#": 2, | |||||
| "F*": 2, | |||||
| "FIGlet Font": 1, | |||||
| "FLUX": 2, | |||||
| "Factor": 2, | |||||
| "Fancy": 2, | |||||
| "Fantom": 2, | |||||
| "Faust": 2, | |||||
| "Filebench WML": 2, | |||||
| "Filterscript": 2, | |||||
| "Formatted": 1, | |||||
| "Forth": 2, | |||||
| "Fortran": 2, | |||||
| "FreeMarker": 2, | |||||
| "Frege": 2, | |||||
| "G-code": 2, | |||||
| "GAML": 2, | |||||
| "GAMS": 2, | |||||
| "GAP": 2, | |||||
| "GCC Machine Description": 2, | |||||
| "GDB": 2, | |||||
| "GDScript": 2, | |||||
| "GLSL": 2, | |||||
| "GN": 1, | |||||
| "Game Maker Language": 2, | |||||
| "Genie": 2, | |||||
| "Genshi": 2, | |||||
| "Gentoo Ebuild": 2, | |||||
| "Gentoo Eclass": 2, | |||||
| "Gerber Image": 1, | |||||
| "Gettext Catalog": 4, | |||||
| "Gherkin": 2, | |||||
| "Git Attributes": 1, | |||||
| "Git Config": 1, | |||||
| "Glyph": 2, | |||||
| "Glyph Bitmap Distribution Format": 1, | |||||
| "Gnuplot": 2, | |||||
| "Go": 2, | |||||
| "Golo": 2, | |||||
| "Gosu": 2, | |||||
| "Grace": 2, | |||||
| "Gradle": 1, | |||||
| "Grammatical Framework": 2, | |||||
| "Graph Modeling Language": 1, | |||||
| "GraphQL": 1, | |||||
| "Graphviz (DOT)": 1, | |||||
| "Groovy": 2, | |||||
| "Groovy Server Pages": 2, | |||||
| "HAProxy": 1, | |||||
| "HCL": 2, | |||||
| "HLSL": 2, | |||||
| "HTML": 3, | |||||
| "HTML+Django": 3, | |||||
| "HTML+ECR": 3, | |||||
| "HTML+EEX": 3, | |||||
| "HTML+ERB": 3, | |||||
| "HTML+PHP": 3, | |||||
| "HTML+Razor": 3, | |||||
| "HTTP": 1, | |||||
| "HXML": 1, | |||||
| "Hack": 2, | |||||
| "Haml": 3, | |||||
| "Handlebars": 3, | |||||
| "Harbour": 2, | |||||
| "Haskell": 2, | |||||
| "Haxe": 2, | |||||
| "HiveQL": 2, | |||||
| "HolyC": 2, | |||||
| "Hy": 2, | |||||
| "HyPhy": 2, | |||||
| "IDL": 2, | |||||
| "IGOR Pro": 2, | |||||
| "INI": 1, | |||||
| "IRC log": 1, | |||||
| "Idris": 2, | |||||
| "Ignore List": 1, | |||||
| "Inform 7": 2, | |||||
| "Inno Setup": 2, | |||||
| "Io": 2, | |||||
| "Ioke": 2, | |||||
| "Isabelle": 2, | |||||
| "Isabelle ROOT": 2, | |||||
| "J": 2, | |||||
| "JFlex": 2, | |||||
| "JSON": 1, | |||||
| "JSON with Comments": 1, | |||||
| "JSON5": 1, | |||||
| "JSONLD": 1, | |||||
| "JSONiq": 2, | |||||
| "JSX": 2, | |||||
| "Jasmin": 2, | |||||
| "Java": 2, | |||||
| "Java Properties": 1, | |||||
| "Java Server Pages": 2, | |||||
| "JavaScript": 2, | |||||
| "JavaScript+ERB": 2, | |||||
| "Jison": 2, | |||||
| "Jison Lex": 2, | |||||
| "Jolie": 2, | |||||
| "Jsonnet": 2, | |||||
| "Julia": 2, | |||||
| "Jupyter Notebook": 3, | |||||
| "KRL": 2, | |||||
| "KiCad Layout": 1, | |||||
| "KiCad Legacy Layout": 1, | |||||
| "KiCad Schematic": 1, | |||||
| "Kit": 3, | |||||
| "Kotlin": 2, | |||||
| "LFE": 2, | |||||
| "LLVM": 2, | |||||
| "LOLCODE": 2, | |||||
| "LSL": 2, | |||||
| "LTspice Symbol": 1, | |||||
| "LabVIEW": 2, | |||||
| "Lasso": 2, | |||||
| "Latte": 3, | |||||
| "Lean": 2, | |||||
| "Less": 3, | |||||
| "Lex": 2, | |||||
| "LilyPond": 2, | |||||
| "Limbo": 2, | |||||
| "Linker Script": 1, | |||||
| "Linux Kernel Module": 1, | |||||
| "Liquid": 3, | |||||
| "Literate Agda": 2, | |||||
| "Literate CoffeeScript": 2, | |||||
| "Literate Haskell": 2, | |||||
| "LiveScript": 2, | |||||
| "Logos": 2, | |||||
| "Logtalk": 2, | |||||
| "LookML": 2, | |||||
| "LoomScript": 2, | |||||
| "Lua": 2, | |||||
| "M": 2, | |||||
| "M4": 2, | |||||
| "M4Sugar": 2, | |||||
| "MATLAB": 2, | |||||
| "MAXScript": 2, | |||||
| "MLIR": 2, | |||||
| "MQL4": 2, | |||||
| "MQL5": 2, | |||||
| "MTML": 3, | |||||
| "MUF": 2, | |||||
| "Makefile": 2, | |||||
| "Mako": 2, | |||||
| "Markdown": 4, | |||||
| "Marko": 3, | |||||
| "Mask": 3, | |||||
| "Mathematica": 2, | |||||
| "Maven POM": 1, | |||||
| "Max": 2, | |||||
| "MediaWiki": 4, | |||||
| "Mercury": 2, | |||||
| "Meson": 2, | |||||
| "Metal": 2, | |||||
| "Microsoft Developer Studio Project": 1, | |||||
| "MiniD": 2, | |||||
| "Mirah": 2, | |||||
| "Modelica": 2, | |||||
| "Modula-2": 2, | |||||
| "Modula-3": 2, | |||||
| "Module Management System": 2, | |||||
| "Monkey": 2, | |||||
| "Moocode": 2, | |||||
| "MoonScript": 2, | |||||
| "Motorola 68K Assembly": 2, | |||||
| "Muse": 4, | |||||
| "Myghty": 2, | |||||
| "NASL": 2, | |||||
| "NCL": 2, | |||||
| "NL": 1, | |||||
| "NPM Config": 1, | |||||
| "NSIS": 2, | |||||
| "Nearley": 2, | |||||
| "Nemerle": 2, | |||||
| "NetLinx": 2, | |||||
| "NetLinx+ERB": 2, | |||||
| "NetLogo": 2, | |||||
| "NewLisp": 2, | |||||
| "Nextflow": 2, | |||||
| "Nginx": 1, | |||||
| "Nim": 2, | |||||
| "Ninja": 1, | |||||
| "Nit": 2, | |||||
| "Nix": 2, | |||||
| "Nu": 2, | |||||
| "NumPy": 2, | |||||
| "OCaml": 2, | |||||
| "ObjDump": 1, | |||||
| "Object Data Instance Notation": 1, | |||||
| "ObjectScript": 2, | |||||
| "Objective-C": 2, | |||||
| "Objective-C++": 2, | |||||
| "Objective-J": 2, | |||||
| "Odin": 2, | |||||
| "Omgrofl": 2, | |||||
| "Opa": 2, | |||||
| "Opal": 2, | |||||
| "Open Policy Agent": 2, | |||||
| "OpenCL": 2, | |||||
| "OpenEdge ABL": 2, | |||||
| "OpenQASM": 2, | |||||
| "OpenRC runscript": 2, | |||||
| "OpenSCAD": 2, | |||||
| "OpenStep Property List": 1, | |||||
| "OpenType Feature File": 1, | |||||
| "Org": 4, | |||||
| "Ox": 2, | |||||
| "Oxygene": 2, | |||||
| "Oz": 2, | |||||
| "P4": 2, | |||||
| "PHP": 2, | |||||
| "PLSQL": 2, | |||||
| "PLpgSQL": 2, | |||||
| "POV-Ray SDL": 2, | |||||
| "Pan": 2, | |||||
| "Papyrus": 2, | |||||
| "Parrot": 2, | |||||
| "Parrot Assembly": 2, | |||||
| "Parrot Internal Representation": 2, | |||||
| "Pascal": 2, | |||||
| "Pawn": 2, | |||||
| "Pep8": 2, | |||||
| "Perl": 2, | |||||
| "Pic": 3, | |||||
| "Pickle": 1, | |||||
| "PicoLisp": 2, | |||||
| "PigLatin": 2, | |||||
| "Pike": 2, | |||||
| "PlantUML": 1, | |||||
| "Pod": 4, | |||||
| "Pod 6": 4, | |||||
| "PogoScript": 2, | |||||
| "Pony": 2, | |||||
| "PostCSS": 3, | |||||
| "PostScript": 3, | |||||
| "PowerBuilder": 2, | |||||
| "PowerShell": 2, | |||||
| "Prisma": 1, | |||||
| "Processing": 2, | |||||
| "Proguard": 1, | |||||
| "Prolog": 2, | |||||
| "Propeller Spin": 2, | |||||
| "Protocol Buffer": 1, | |||||
| "Public Key": 1, | |||||
| "Pug": 3, | |||||
| "Puppet": 2, | |||||
| "Pure Data": 1, | |||||
| "PureBasic": 2, | |||||
| "PureScript": 2, | |||||
| "Python": 2, | |||||
| "Python console": 2, | |||||
| "Python traceback": 1, | |||||
| "QML": 2, | |||||
| "QMake": 2, | |||||
| "Quake": 2, | |||||
| "R": 2, | |||||
| "RAML": 3, | |||||
| "RDoc": 4, | |||||
| "REALbasic": 2, | |||||
| "REXX": 2, | |||||
| "RHTML": 3, | |||||
| "RMarkdown": 4, | |||||
| "RPC": 2, | |||||
| "RPM Spec": 1, | |||||
| "RUNOFF": 3, | |||||
| "Racket": 2, | |||||
| "Ragel": 2, | |||||
| "Raku": 2, | |||||
| "Rascal": 2, | |||||
| "Raw token data": 1, | |||||
| "Readline Config": 1, | |||||
| "Reason": 2, | |||||
| "Rebol": 2, | |||||
| "Red": 2, | |||||
| "Redcode": 2, | |||||
| "Regular Expression": 1, | |||||
| "Ren'Py": 2, | |||||
| "RenderScript": 2, | |||||
| "Rich Text Format": 3, | |||||
| "Ring": 2, | |||||
| "Riot": 3, | |||||
| "RobotFramework": 2, | |||||
| "Roff": 3, | |||||
| "Roff Manpage": 3, | |||||
| "Rouge": 2, | |||||
| "Ruby": 2, | |||||
| "Rust": 2, | |||||
| "SAS": 2, | |||||
| "SCSS": 3, | |||||
| "SMT": 2, | |||||
| "SPARQL": 1, | |||||
| "SQF": 2, | |||||
| "SQL": 1, | |||||
| "SQLPL": 2, | |||||
| "SRecode Template": 3, | |||||
| "SSH Config": 1, | |||||
| "STON": 1, | |||||
| "SVG": 1, | |||||
| "SWIG": 2, | |||||
| "Sage": 2, | |||||
| "SaltStack": 2, | |||||
| "Sass": 3, | |||||
| "Scala": 2, | |||||
| "Scaml": 3, | |||||
| "Scheme": 2, | |||||
| "Scilab": 2, | |||||
| "Self": 2, | |||||
| "ShaderLab": 2, | |||||
| "Shell": 2, | |||||
| "ShellSession": 2, | |||||
| "Shen": 2, | |||||
| "Slash": 2, | |||||
| "Slice": 2, | |||||
| "Slim": 3, | |||||
| "SmPL": 2, | |||||
| "Smali": 2, | |||||
| "Smalltalk": 2, | |||||
| "Smarty": 2, | |||||
| "Solidity": 2, | |||||
| "SourcePawn": 2, | |||||
| "Spline Font Database": 1, | |||||
| "Squirrel": 2, | |||||
| "Stan": 2, | |||||
| "Standard ML": 2, | |||||
| "Starlark": 2, | |||||
| "Stata": 2, | |||||
| "Stylus": 3, | |||||
| "SubRip Text": 1, | |||||
| "SugarSS": 3, | |||||
| "SuperCollider": 2, | |||||
| "Svelte": 3, | |||||
| "Swift": 2, | |||||
| "SystemVerilog": 2, | |||||
| "TI Program": 2, | |||||
| "TLA": 2, | |||||
| "TOML": 1, | |||||
| "TSQL": 2, | |||||
| "TSX": 2, | |||||
| "TXL": 2, | |||||
| "Tcl": 2, | |||||
| "Tcsh": 2, | |||||
| "TeX": 3, | |||||
| "Tea": 3, | |||||
| "Terra": 2, | |||||
| "Texinfo": 4, | |||||
| "Text": 4, | |||||
| "Textile": 4, | |||||
| "Thrift": 2, | |||||
| "Turing": 2, | |||||
| "Turtle": 1, | |||||
| "Twig": 3, | |||||
| "Type Language": 1, | |||||
| "TypeScript": 2, | |||||
| "Unified Parallel C": 2, | |||||
| "Unity3D Asset": 1, | |||||
| "Unix Assembly": 2, | |||||
| "Uno": 2, | |||||
| "UnrealScript": 2, | |||||
| "UrWeb": 2, | |||||
| "V": 2, | |||||
| "VBA": 2, | |||||
| "VBScript": 2, | |||||
| "VCL": 2, | |||||
| "VHDL": 2, | |||||
| "Vala": 2, | |||||
| "Verilog": 2, | |||||
| "Vim Snippet": 3, | |||||
| "Vim script": 2, | |||||
| "Visual Basic .NET": 2, | |||||
| "Volt": 2, | |||||
| "Vue": 3, | |||||
| "Wavefront Material": 1, | |||||
| "Wavefront Object": 1, | |||||
| "Web Ontology Language": 1, | |||||
| "WebAssembly": 2, | |||||
| "WebIDL": 2, | |||||
| "WebVTT": 1, | |||||
| "Wget Config": 1, | |||||
| "Windows Registry Entries": 1, | |||||
| "Wollok": 2, | |||||
| "World of Warcraft Addon Data": 1, | |||||
| "X BitMap": 1, | |||||
| "X Font Directory Index": 1, | |||||
| "X PixMap": 1, | |||||
| "X10": 2, | |||||
| "XC": 2, | |||||
| "XCompose": 1, | |||||
| "XML": 1, | |||||
| "XML Property List": 1, | |||||
| "XPages": 1, | |||||
| "XProc": 2, | |||||
| "XQuery": 2, | |||||
| "XS": 2, | |||||
| "XSLT": 2, | |||||
| "Xojo": 2, | |||||
| "Xtend": 2, | |||||
| "YAML": 1, | |||||
| "YANG": 1, | |||||
| "YARA": 2, | |||||
| "YASnippet": 3, | |||||
| "Yacc": 2, | |||||
| "ZAP": 2, | |||||
| "ZIL": 2, | |||||
| "Zeek": 2, | |||||
| "ZenScript": 2, | |||||
| "Zephir": 2, | |||||
| "Zig": 2, | |||||
| "Zimpl": 2, | |||||
| "cURL Config": 1, | |||||
| "desktop": 1, | |||||
| "dircolors": 1, | |||||
| "eC": 2, | |||||
| "edn": 1, | |||||
| "fish": 2, | |||||
| "mIRC Script": 2, | |||||
| "mcfunction": 2, | |||||
| "mupad": 2, | |||||
| "nanorc": 1, | |||||
| "nesC": 2, | |||||
| "ooc": 2, | |||||
| "q": 2, | |||||
| "reStructuredText": 4, | |||||
| "sed": 2, | |||||
| "wdl": 2, | |||||
| "wisp": 2, | |||||
| "xBase": 2, | |||||
| } | |||||
| @@ -1,5 +1,5 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| // Code generated by github.com/go-enry/go-enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 40992ba7f86889f80dfed3ba95e11e1082200bad | |||||
| package data | package data | ||||
| @@ -19,8 +19,11 @@ var VendorMatchers = substring.Or( | |||||
| substring.Regexp(`(^|/)ltsugar.m4`), | substring.Regexp(`(^|/)ltsugar.m4`), | ||||
| substring.Regexp(`(^|/)ltversion.m4`), | substring.Regexp(`(^|/)ltversion.m4`), | ||||
| substring.Regexp(`(^|/)lt~obsolete.m4`), | substring.Regexp(`(^|/)lt~obsolete.m4`), | ||||
| substring.Regexp(`dotnet-install\.(ps1|sh)$`), | |||||
| substring.Regexp(`cpplint.py`), | substring.Regexp(`cpplint.py`), | ||||
| substring.Regexp(`node_modules/`), | substring.Regexp(`node_modules/`), | ||||
| substring.Regexp(`(^|/)\.yarn/releases/`), | |||||
| substring.Regexp(`(^|/)_esy$`), | |||||
| substring.Regexp(`bower_components/`), | substring.Regexp(`bower_components/`), | ||||
| substring.Regexp(`^rebar$`), | substring.Regexp(`^rebar$`), | ||||
| substring.Regexp(`erlang.mk`), | substring.Regexp(`erlang.mk`), | ||||
| @@ -11,6 +11,6 @@ | |||||
| Upstream Linguist YAML files are used to generate datastructures for data | Upstream Linguist YAML files are used to generate datastructures for data | ||||
| package. | package. | ||||
| */ | */ | ||||
| package enry // import "github.com/src-d/enry/v2" | |||||
| package enry // import "github.com/go-enry/go-enry/v2" | |||||
| //go:generate make code-generate | //go:generate make code-generate | ||||
| @@ -1,11 +1,11 @@ | |||||
| module github.com/src-d/enry/v2 | |||||
| module github.com/go-enry/go-enry/v2 | |||||
| go 1.12 | |||||
| go 1.14 | |||||
| require ( | require ( | ||||
| github.com/src-d/go-oniguruma v1.1.0 | |||||
| github.com/go-enry/go-oniguruma v1.2.0 | |||||
| github.com/stretchr/testify v1.3.0 | github.com/stretchr/testify v1.3.0 | ||||
| github.com/toqueteos/trie v1.0.0 // indirect | github.com/toqueteos/trie v1.0.0 // indirect | ||||
| gopkg.in/toqueteos/substring.v1 v1.0.2 | gopkg.in/toqueteos/substring.v1 v1.0.2 | ||||
| gopkg.in/yaml.v2 v2.2.2 | |||||
| gopkg.in/yaml.v2 v2.2.8 | |||||
| ) | ) | ||||
| @@ -1,9 +1,10 @@ | |||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/go-enry/go-oniguruma v1.2.0 h1:oBO9XC1IDT9+AoWW5oFsa/7gFeOPacEqDbyXZKWXuDs= | |||||
| github.com/go-enry/go-oniguruma v1.2.0/go.mod h1:bWDhYP+S6xZQgiRL7wlTScFYBe023B6ilRZbCAD5Hf4= | |||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/src-d/go-oniguruma v1.1.0 h1:EG+Nm5n2JqWUaCjtM0NtutPxU7ZN5Tp50GWrrV8bTww= | |||||
| github.com/src-d/go-oniguruma v1.1.0/go.mod h1:chVbff8kcVtmrhxtZ3yBVLLquXbzCS6DrxQaAK/CeqM= | |||||
| github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= | |||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= | github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= | ||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
| @@ -13,5 +14,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+ | |||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/toqueteos/substring.v1 v1.0.2 h1:urLqCeMm6x/eTuQa1oZerNw8N1KNOIp5hD5kGL7lFsE= | gopkg.in/toqueteos/substring.v1 v1.0.2 h1:urLqCeMm6x/eTuQa1oZerNw8N1KNOIp5hD5kGL7lFsE= | ||||
| gopkg.in/toqueteos/substring.v1 v1.0.2/go.mod h1:Eb2Z1UYehlVK8LYW2WBVR2rwbujsz3aX8XDrM1vbNew= | gopkg.in/toqueteos/substring.v1 v1.0.2/go.mod h1:Eb2Z1UYehlVK8LYW2WBVR2rwbujsz3aX8XDrM1vbNew= | ||||
| gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= | |||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | |||||
| gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= | |||||
| gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | |||||
| @@ -1,3 +1,5 @@ | |||||
| // +build flex | |||||
| package flex | package flex | ||||
| // #include <stdlib.h> | // #include <stdlib.h> | ||||
| @@ -5,7 +5,7 @@ package tokenizer | |||||
| import ( | import ( | ||||
| "bytes" | "bytes" | ||||
| "github.com/src-d/enry/v2/regex" | |||||
| "github.com/go-enry/go-enry/v2/regex" | |||||
| ) | ) | ||||
| // Tokenize returns lexical tokens from content. The tokens returned match what | // Tokenize returns lexical tokens from content. The tokens returned match what | ||||
| @@ -18,10 +18,6 @@ func Tokenize(content []byte) []string { | |||||
| content = content[:ByteLimit] | content = content[:ByteLimit] | ||||
| } | } | ||||
| // Copy the input so that changes wrought by the tokenization steps do not | |||||
| // modify the caller's copy of the input. See #196. | |||||
| content = append([]byte(nil), content...) | |||||
| tokens := make([][]byte, 0, 50) | tokens := make([][]byte, 0, 50) | ||||
| for _, extract := range extractTokens { | for _, extract := range extractTokens { | ||||
| var extractedTokens [][]byte | var extractedTokens [][]byte | ||||
| @@ -162,7 +158,7 @@ func extractAndReplaceSGML(content []byte) ([]byte, [][]byte) { | |||||
| continue | continue | ||||
| } | } | ||||
| token := append(match[1], '>') | |||||
| token := append(append([]byte(nil), match[1]...), '>') | |||||
| SGMLTokens = append(SGMLTokens, token) | SGMLTokens = append(SGMLTokens, token) | ||||
| attributes := getSGMLAttributes(match[0]) | attributes := getSGMLAttributes(match[0]) | ||||
| SGMLTokens = append(SGMLTokens, attributes...) | SGMLTokens = append(SGMLTokens, attributes...) | ||||
| @@ -2,7 +2,7 @@ | |||||
| package tokenizer | package tokenizer | ||||
| import "github.com/src-d/enry/v2/internal/tokenizer/flex" | |||||
| import "github.com/go-enry/go-enry/v2/internal/tokenizer/flex" | |||||
| // Tokenize returns lexical tokens from content. The tokens returned match what | // Tokenize returns lexical tokens from content. The tokens returned match what | ||||
| // the Linguist library returns. At most the first ByteLimit bytes of content are tokenized. | // the Linguist library returns. At most the first ByteLimit bytes of content are tokenized. | ||||
| @@ -3,7 +3,7 @@ | |||||
| package regex | package regex | ||||
| import ( | import ( | ||||
| rubex "github.com/src-d/go-oniguruma" | |||||
| rubex "github.com/go-enry/go-oniguruma" | |||||
| ) | ) | ||||
| type EnryRegexp = *rubex.Regexp | type EnryRegexp = *rubex.Regexp | ||||
| @@ -5,7 +5,7 @@ import ( | |||||
| "path/filepath" | "path/filepath" | ||||
| "strings" | "strings" | ||||
| "github.com/src-d/enry/v2/data" | |||||
| "github.com/go-enry/go-enry/v2/data" | |||||
| ) | ) | ||||
| const binSniffLen = 8000 | const binSniffLen = 8000 | ||||
| @@ -80,5 +80,9 @@ func GetColor(language string) string { | |||||
| return color | return color | ||||
| } | } | ||||
| if color, ok := data.LanguagesColor[GetLanguageGroup(language)]; ok { | |||||
| return color | |||||
| } | |||||
| return "#cccccc" | return "#cccccc" | ||||
| } | } | ||||
| @@ -1,5 +1,4 @@ | |||||
| ## go-oniguruma | |||||
| <a href="https://travis-ci.org/src-d/go-oniguruma"><img alt="Build Status" src="https://travis-ci.org/src-d/go-oniguruma.svg?branch=master" /></a> | |||||
| # go-oniguruma  | |||||
| This repository is a fork of [moovweb/rubex](https://github.com/moovweb/rubex/tree/go1) - a simple regular expression library (based on [oniguruma](https://github.com/kkos/oniguruma)) that supports Ruby's regex syntax. | This repository is a fork of [moovweb/rubex](https://github.com/moovweb/rubex/tree/go1) - a simple regular expression library (based on [oniguruma](https://github.com/kkos/oniguruma)) that supports Ruby's regex syntax. | ||||
| @@ -8,7 +7,9 @@ The _rubex_ was originally created by Zhigang Chen (zhigang.chen@moovweb.com or | |||||
| By the benchmark tests in regexp, the library is 40% to 10X faster than Regexp on all but one test. Unlike Go's regexp, this library supports named capture groups and also allow `"\\1"` and `"\\k<name>"` in replacement strings. | By the benchmark tests in regexp, the library is 40% to 10X faster than Regexp on all but one test. Unlike Go's regexp, this library supports named capture groups and also allow `"\\1"` and `"\\k<name>"` in replacement strings. | ||||
| The library calls the _oniguruma_ regex library for regex pattern searching. All replacement code is done in Go. | The library calls the _oniguruma_ regex library for regex pattern searching. All replacement code is done in Go. | ||||
| ### Install all (_oniguruma_ and _rubex_): | |||||
| Install | |||||
| ------- | |||||
| ```sh | ```sh | ||||
| # linux (debian/ubuntu/...) | # linux (debian/ubuntu/...) | ||||
| sudo apt-get install libonig-dev | sudo apt-get install libonig-dev | ||||
| @@ -16,5 +17,10 @@ sudo apt-get install libonig-dev | |||||
| # osx (homebrew) | # osx (homebrew) | ||||
| brew install oniguruma | brew install oniguruma | ||||
| go install -i . | |||||
| go get github.com/go-enry/go-oniguruma | |||||
| ``` | ``` | ||||
| License | |||||
| ------- | |||||
| Apache License Version 2.0, see [LICENSE](LICENSE) | |||||
| @@ -0,0 +1,3 @@ | |||||
| module github.com/go-enry/go-oniguruma | |||||
| go 1.14 | |||||
| @@ -1,61 +0,0 @@ | |||||
| # source{d} Contributing Guidelines | |||||
| source{d} projects accept contributions via GitHub pull requests. | |||||
| This document outlines some of the | |||||
| conventions on development workflow, commit message formatting, contact points, | |||||
| and other resources to make it easier to get your contribution accepted. | |||||
| ## Certificate of Origin | |||||
| By contributing to this project, you agree to the [Developer Certificate of | |||||
| Origin (DCO)](DCO). This document was created by the Linux Kernel community and is a | |||||
| simple statement that you, as a contributor, have the legal right to make the | |||||
| contribution. | |||||
| In order to show your agreement with the DCO you should include at the end of the commit message, | |||||
| the following line: `Signed-off-by: John Doe <john.doe@example.com>`, using your real name. | |||||
| This can be done easily using the [`-s`](https://github.com/git/git/blob/b2c150d3aa82f6583b9aadfecc5f8fa1c74aca09/Documentation/git-commit.txt#L154-L161) flag on the `git commit`. | |||||
| If you find yourself pushed a few commits without `Signed-off-by`, you can still add it afterwards. We wrote a manual which can help: [fix-DCO.md](https://github.com/src-d/guide/blob/master/developer-community/fix-DCO.md). | |||||
| ## Support Channels | |||||
| The official support channels, for both users and contributors, are: | |||||
| - GitHub issues: each repository has its own list of issues. | |||||
| - Slack: join the [source{d} Slack](https://join.slack.com/t/sourced-community/shared_invite/enQtMjc4Njk5MzEyNzM2LTFjNzY4NjEwZGEwMzRiNTM4MzRlMzQ4MmIzZjkwZmZlM2NjODUxZmJjNDI1OTcxNDAyMmZlNmFjODZlNTg0YWM) community. | |||||
| *Before opening a new issue or submitting a new pull request, it's helpful to | |||||
| search the project - it's likely that another user has already reported the | |||||
| issue you're facing, or it's a known issue that we're already aware of. | |||||
| ## How to Contribute | |||||
| Pull Requests (PRs) are the main and exclusive way to contribute code to source{d} projects. | |||||
| In order for a PR to be accepted it needs to pass this list of requirements: | |||||
| - The contribution must be correctly explained with natural language and providing a minimum working example that reproduces it. | |||||
| - All PRs must be written idiomaticly: | |||||
| - for Go: formatted according to [gofmt](https://golang.org/cmd/gofmt/), and without any warnings from [go lint](https://github.com/golang/lint) nor [go vet](https://golang.org/cmd/vet/) | |||||
| - for other languages, similar constraints apply. | |||||
| - They should in general include tests, and those shall pass. | |||||
| - If the PR is a bug fix, it has to include a new unit test that fails before the patch is merged. | |||||
| - If the PR is a new feature, it has to come with a suite of unit tests, that tests the new functionality. | |||||
| - In any case, all the PRs have to pass the personal evaluation of at least one of the [maintainers](MAINTAINERS) of the project. | |||||
| ### Format of the commit message | |||||
| Every commit message should describe what was changed, under which context and, if applicable, the GitHub issue it relates to: | |||||
| ``` | |||||
| plumbing: packp, Skip argument validations for unknown capabilities. Fixes #623 | |||||
| ``` | |||||
| The format can be described more formally as follows: | |||||
| ``` | |||||
| <package>: <subpackage>, <what changed>. [Fixes #<issue-number>] | |||||
| ``` | |||||
| @@ -1,25 +0,0 @@ | |||||
| Developer's Certificate of Origin 1.1 | |||||
| By making a contribution to this project, I certify that: | |||||
| (a) The contribution was created in whole or in part by me and I | |||||
| have the right to submit it under the open source license | |||||
| indicated in the file; or | |||||
| (b) The contribution is based upon previous work that, to the best | |||||
| of my knowledge, is covered under an appropriate open source | |||||
| license and I have the right under that license to submit that | |||||
| work with modifications, whether created in whole or in part | |||||
| by me, under the same open source license (unless I am | |||||
| permitted to submit under a different license), as indicated | |||||
| in the file; or | |||||
| (c) The contribution was provided directly to me by some other | |||||
| person who certified (a), (b) or (c) and I have not modified | |||||
| it. | |||||
| (d) I understand and agree that this project and the contribution | |||||
| are public and that a record of the contribution (including all | |||||
| personal information I submit with it, including my sign-off) is | |||||
| maintained indefinitely and may be redistributed consistent with | |||||
| this project or the open source license(s) involved. | |||||
| @@ -1 +0,0 @@ | |||||
| Alexander Bezzubov <alex@sourced.tech> (@bzz) | |||||
| @@ -1,328 +0,0 @@ | |||||
| # enry [](https://godoc.org/github.com/src-d/enry) [](https://travis-ci.com/src-d/enry) [](https://codecov.io/gh/src-d/enry) | |||||
| File programming language detector and toolbox to ignore binary or vendored files. *enry*, started as a port to _Go_ of the original [linguist](https://github.com/github/linguist) _Ruby_ library, that has an improved *2x performance*. | |||||
| * [Installation](#installation) | |||||
| * [Examples](#examples) | |||||
| * [CLI](#cli) | |||||
| * [Java bindings](#java-bindings) | |||||
| * [Python bindings](#python-bindings) | |||||
| * [Divergences from linguist](#divergences-from-linguist) | |||||
| * [Benchmarks](#benchmarks) | |||||
| * [Why Enry?](#why-enry) | |||||
| * [Development](#development) | |||||
| * [Sync with github/linguist upstream](#sync-with-githublinguist-upstream) | |||||
| * [Misc](#misc) | |||||
| * [Benchmark](#benchmark) | |||||
| * [Faster regexp engine (optional)](#faster-regexp-engine-optional) | |||||
| * [License](#license) | |||||
| Installation | |||||
| ------------ | |||||
| The recommended way to install enry is to either [download a release](https://github.com/src-d/enry/releases) or | |||||
| ``` | |||||
| go get github.com/src-d/enry/cmd/enry | |||||
| ``` | |||||
| This project is now part of [source{d} Engine](https://sourced.tech/engine), | |||||
| which provides the simplest way to get started with a single command. | |||||
| Visit [sourced.tech/engine](https://sourced.tech/engine) for more information. | |||||
| Examples | |||||
| ------------ | |||||
| ```go | |||||
| lang, safe := enry.GetLanguageByExtension("foo.go") | |||||
| fmt.Println(lang, safe) | |||||
| // result: Go true | |||||
| lang, safe := enry.GetLanguageByContent("foo.m", []byte("<matlab-code>")) | |||||
| fmt.Println(lang, safe) | |||||
| // result: Matlab true | |||||
| lang, safe := enry.GetLanguageByContent("bar.m", []byte("<objective-c-code>")) | |||||
| fmt.Println(lang, safe) | |||||
| // result: Objective-C true | |||||
| // all strategies together | |||||
| lang := enry.GetLanguage("foo.cpp", []byte("<cpp-code>")) | |||||
| // result: C++ true | |||||
| ``` | |||||
| Note that the returned boolean value `safe` is set either to `true`, if there is only one possible language detected, or to `false` otherwise. | |||||
| To get a list of possible languages for a given file, you can use the plural version of the detecting functions. | |||||
| ```go | |||||
| langs := enry.GetLanguages("foo.h", []byte("<cpp-code>")) | |||||
| // result: []string{"C", "C++", "Objective-C} | |||||
| langs := enry.GetLanguagesByExtension("foo.asc", []byte("<content>"), nil) | |||||
| // result: []string{"AGS Script", "AsciiDoc", "Public Key"} | |||||
| langs := enry.GetLanguagesByFilename("Gemfile", []byte("<content>"), []string{}) | |||||
| // result: []string{"Ruby"} | |||||
| ``` | |||||
| CLI | |||||
| ------------ | |||||
| You can use enry as a command, | |||||
| ```bash | |||||
| $ enry --help | |||||
| enry v2.0.0 build: 05-08-2019_20_40_35 commit: 6ccf0b6, based on linguist commit: e456098 | |||||
| enry, A simple (and faster) implementation of github/linguist | |||||
| usage: enry [-mode=(file|line|byte)] [-prog] <path> | |||||
| enry [-mode=(file|line|byte)] [-prog] [-json] [-breakdown] <path> | |||||
| enry [-mode=(file|line|byte)] [-prog] [-json] [-breakdown] | |||||
| enry [-version] | |||||
| ``` | |||||
| and on repository root, it'll return an output similar to *linguist*'s output, | |||||
| ```bash | |||||
| $ enry | |||||
| 97.71% Go | |||||
| 1.60% C | |||||
| 0.31% Shell | |||||
| 0.22% Java | |||||
| 0.07% Ruby | |||||
| 0.05% Makefile | |||||
| 0.04% Scala | |||||
| 0.01% Gnuplot | |||||
| ``` | |||||
| but not only the output; its flags are also the same as *linguist*'s ones, | |||||
| ```bash | |||||
| $ enry --breakdown | |||||
| 97.71% Go | |||||
| 1.60% C | |||||
| 0.31% Shell | |||||
| 0.22% Java | |||||
| 0.07% Ruby | |||||
| 0.05% Makefile | |||||
| 0.04% Scala | |||||
| 0.01% Gnuplot | |||||
| Scala | |||||
| java/build.sbt | |||||
| java/project/plugins.sbt | |||||
| Java | |||||
| java/src/main/java/tech/sourced/enry/Enry.java | |||||
| java/src/main/java/tech/sourced/enry/GoUtils.java | |||||
| java/src/main/java/tech/sourced/enry/Guess.java | |||||
| java/src/test/java/tech/sourced/enry/EnryTest.java | |||||
| Makefile | |||||
| Makefile | |||||
| java/Makefile | |||||
| Go | |||||
| benchmark_test.go | |||||
| ``` | |||||
| even the JSON flag, | |||||
| ```bash | |||||
| $ enry --json | jq . | |||||
| { | |||||
| "C": [ | |||||
| "internal/tokenizer/flex/lex.linguist_yy.c", | |||||
| "internal/tokenizer/flex/lex.linguist_yy.h", | |||||
| "internal/tokenizer/flex/linguist.h", | |||||
| "python/_c_enry.c", | |||||
| "python/enry.c" | |||||
| ], | |||||
| "Gnuplot": [ | |||||
| "benchmarks/plot-histogram.gp" | |||||
| ], | |||||
| "Go": [ | |||||
| "benchmark_test.go", | |||||
| ``` | |||||
| Note that enry's CLI **_doesn't need a git repository to work_**, which is intentionally different from the linguist. | |||||
| ## Java bindings | |||||
| Generated Java bindings using a C shared library and JNI are available under [`java`](https://github.com/src-d/enry/blob/master/java) and published on Maven at [tech.sourced:enry-java](https://mvnrepository.com/artifact/tech.sourced/enry-java) for macOS and linux. | |||||
| ## Python bindings | |||||
| Generated Python bindings using a C shared library and cffi are not available yet and are WIP under [src-d/enry#154](https://github.com/src-d/enry/issues/154). | |||||
| Divergences from linguist | |||||
| ------------ | |||||
| The `enry` library is based on the data from `github/linguist` version **v7.5.1**. | |||||
| As opposed to linguist, `enry` [CLI tool](#cli) does *not* require a full Git repository in the filesystem in order to report languages. | |||||
| Parsing [linguist/samples](https://github.com/github/linguist/tree/master/samples) the following `enry` results are different from linguist: | |||||
| * [Heuristics for ".es" extension](https://github.com/github/linguist/blob/e761f9b013e5b61161481fcb898b59721ee40e3d/lib/linguist/heuristics.yml#L103) in JavaScript could not be parsed, due to unsupported backreference in RE2 regexp engine. | |||||
| * [Heuristics for ".rno" extension](https://github.com/github/linguist/blob/3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d/lib/linguist/heuristics.yml#L365) in RUNOFF could not be parsed, due to unsupported lookahead in RE2 regexp engine. | |||||
| * As of [Linguist v5.3.2](https://github.com/github/linguist/releases/tag/v5.3.2) it is using [flex-based scanner in C for tokenization](https://github.com/github/linguist/pull/3846). Enry still uses [extract_token](https://github.com/github/linguist/pull/3846/files#diff-d5179df0b71620e3fac4535cd1368d15L60) regex-based algorithm. See [#193](https://github.com/src-d/enry/issues/193). | |||||
| * Bayesian classifier can't distinguish "SQL" from "PLpgSQL. See [#194](https://github.com/src-d/enry/issues/194). | |||||
| * Detection of [generated files](https://github.com/github/linguist/blob/bf95666fc15e49d556f2def4d0a85338423c25f3/lib/linguist/generated.rb#L53) is not supported yet. | |||||
| (Thus they are not excluded from CLI output). See [#213](https://github.com/src-d/enry/issues/213). | |||||
| * XML detection strategy is not implemented. See [#192](https://github.com/src-d/enry/issues/192). | |||||
| * Overriding languages and types though `.gitattributes` is not yet supported. See [#18](https://github.com/src-d/enry/issues/18). | |||||
| * `enry` CLI output does NOT exclude `.gitignore`ed files and git submodules, as linguist does | |||||
| In all the cases above that have an issue number - we plan to update enry to match Linguist behavior. | |||||
| Benchmarks | |||||
| ------------ | |||||
| Enry's language detection has been compared with Linguist's one. In order to do that, Linguist's project directory [*linguist/samples*](https://github.com/github/linguist/tree/master/samples) was used as a set of files to run benchmarks against. | |||||
| We got these results: | |||||
|  | |||||
| The histogram shows the number of files detected (y-axis) per time interval bucket (x-axis). As one can see, most of the files were detected faster by enry. | |||||
| We found few cases where enry turns slower than linguist due to | |||||
| Go regexp engine being slower than Ruby's, based on [oniguruma](https://github.com/kkos/oniguruma) library, written in C. | |||||
| See [instructions](#misc) for running enry with oniguruma. | |||||
| Why Enry? | |||||
| ------------ | |||||
| In the movie [My Fair Lady](https://en.wikipedia.org/wiki/My_Fair_Lady), [Professor Henry Higgins](http://www.imdb.com/character/ch0011719/?ref_=tt_cl_t2) is one of the main characters. Henry is a linguist and at the very beginning of the movie enjoys guessing the origin of people based on their accent. | |||||
| "Enry Iggins" is how [Eliza Doolittle](http://www.imdb.com/character/ch0011720/?ref_=tt_cl_t1), [pronounces](https://www.youtube.com/watch?v=pwNKyTktDIE) the name of the Professor during the first half of the movie. | |||||
| ## Development | |||||
| To build enry's CLI run: | |||||
| make build | |||||
| this will generate a binary in the project's root directory called `enry`. | |||||
| To run the tests: | |||||
| make test | |||||
| ### Sync with github/linguist upstream | |||||
| *enry* re-uses parts of the original [github/linguist](https://github.com/github/linguist) to generate internal data structures. | |||||
| In order to update to the latest release of linguist do: | |||||
| ```bash | |||||
| $ git clone https://github.com/github/linguist.git .linguist | |||||
| $ cd .linguist; git checkout <release-tag>; cd .. | |||||
| # put the new release's commit sha in the generator_test.go (to re-generate .gold test fixtures) | |||||
| # https://github.com/src-d/enry/blob/13d3d66d37a87f23a013246a1b0678c9ee3d524b/internal/code-generator/generator/generator_test.go#L18 | |||||
| $ make code-generate | |||||
| ``` | |||||
| To stay in sync, enry needs to be updated when a new release of the linguist includes changes to any of the following files: | |||||
| * [languages.yml](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml) | |||||
| * [heuristics.yml](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.yml) | |||||
| * [vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) | |||||
| * [documentation.yml](https://github.com/github/linguist/blob/master/lib/linguist/documentation.yml) | |||||
| There is no automation for detecting the changes in the linguist project, so this process above has to be done manually from time to time. | |||||
| When submitting a pull request syncing up to a new release, please make sure it only contains the changes in | |||||
| the generated files (in [data](https://github.com/src-d/enry/blob/master/data) subdirectory). | |||||
| Separating all the necessary "manual" code changes to a different PR that includes some background description and an update to the documentation on ["divergences from linguist"](##divergences-from-linguist) is very much appreciated as it simplifies the maintenance (review/release notes/etc). | |||||
| ## Misc | |||||
| <details> | |||||
| ### Benchmark | |||||
| All benchmark scripts are in [*benchmarks*](https://github.com/src-d/enry/blob/master/benchmarks) directory. | |||||
| #### Dependencies | |||||
| As benchmarks depend on Ruby and Github-Linguist gem make sure you have: | |||||
| - Ruby (e.g using [`rbenv`](https://github.com/rbenv/rbenv)), [`bundler`](https://bundler.io/) installed | |||||
| - Docker | |||||
| - [native dependencies](https://github.com/github/linguist/#dependencies) installed | |||||
| - Build the gem `cd .linguist && bundle install && rake build_gem && cd -` | |||||
| - Install it `gem install --no-rdoc --no-ri --local .linguist/github-linguist-*.gem` | |||||
| #### Quick benchmark | |||||
| To run quicker benchmarks you can either: | |||||
| make benchmarks | |||||
| to get average times for the main detection function and strategies for the whole samples set or: | |||||
| make benchmarks-samples | |||||
| if you want to see measures per sample file. | |||||
| #### Full benchmark | |||||
| If you want to reproduce the same benchmarks as reported above: | |||||
| - Make sure all [dependencies](#benchmark-dependencies) are installed | |||||
| - Install [gnuplot](http://gnuplot.info) (in order to plot the histogram) | |||||
| - Run `ENRY_TEST_REPO="$PWD/.linguist" benchmarks/run.sh` (takes ~15h) | |||||
| It will run the benchmarks for enry and linguist, parse the output, create csv files and plot the histogram. | |||||
| ### Faster regexp engine (optional) | |||||
| [Oniguruma](https://github.com/kkos/oniguruma) is CRuby's regular expression engine. | |||||
| It is very fast and performs better than the one built into Go runtime. *enry* supports swapping | |||||
| between those two engines thanks to [rubex](https://github.com/moovweb/rubex) project. | |||||
| The typical overall speedup from using Oniguruma is 1.5-2x. However, it requires CGo and the external shared library. | |||||
| On macOS with [Homebrew](https://brew.sh/), it is: | |||||
| ``` | |||||
| brew install oniguruma | |||||
| ``` | |||||
| On Ubuntu, it is | |||||
| ``` | |||||
| sudo apt install libonig-dev | |||||
| ``` | |||||
| To build enry with Oniguruma regexps use the `oniguruma` build tag | |||||
| ``` | |||||
| go get -v -t --tags oniguruma ./... | |||||
| ``` | |||||
| and then rebuild the project. | |||||
| </details> | |||||
| License | |||||
| ------------ | |||||
| Apache License, Version 2.0. See [LICENSE](LICENSE) | |||||
| @@ -1,783 +0,0 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| package data | |||||
| import "strings" | |||||
| // LanguageByAliasMap keeps alias for different languages and use the name of the languages as an alias too. | |||||
| // All the keys (alias or not) are written in lower case and the whitespaces has been replaced by underscores. | |||||
| var LanguageByAliasMap = map[string]string{ | |||||
| "1c_enterprise": "1C Enterprise", | |||||
| "abap": "ABAP", | |||||
| "abl": "OpenEdge ABL", | |||||
| "abnf": "ABNF", | |||||
| "abuild": "Alpine Abuild", | |||||
| "acfm": "Adobe Font Metrics", | |||||
| "aconf": "ApacheConf", | |||||
| "actionscript": "ActionScript", | |||||
| "actionscript3": "ActionScript", | |||||
| "actionscript_3": "ActionScript", | |||||
| "ada": "Ada", | |||||
| "ada2005": "Ada", | |||||
| "ada95": "Ada", | |||||
| "adobe_composite_font_metrics": "Adobe Font Metrics", | |||||
| "adobe_font_metrics": "Adobe Font Metrics", | |||||
| "adobe_multiple_font_metrics": "Adobe Font Metrics", | |||||
| "advpl": "xBase", | |||||
| "afdko": "OpenType Feature File", | |||||
| "agda": "Agda", | |||||
| "ags": "AGS Script", | |||||
| "ags_script": "AGS Script", | |||||
| "ahk": "AutoHotkey", | |||||
| "alloy": "Alloy", | |||||
| "alpine_abuild": "Alpine Abuild", | |||||
| "altium": "Altium Designer", | |||||
| "altium_designer": "Altium Designer", | |||||
| "amfm": "Adobe Font Metrics", | |||||
| "ampl": "AMPL", | |||||
| "angelscript": "AngelScript", | |||||
| "ant_build_system": "Ant Build System", | |||||
| "antlr": "ANTLR", | |||||
| "apache": "ApacheConf", | |||||
| "apacheconf": "ApacheConf", | |||||
| "apex": "Apex", | |||||
| "api_blueprint": "API Blueprint", | |||||
| "apkbuild": "Alpine Abuild", | |||||
| "apl": "APL", | |||||
| "apollo_guidance_computer": "Apollo Guidance Computer", | |||||
| "applescript": "AppleScript", | |||||
| "arc": "Arc", | |||||
| "arexx": "REXX", | |||||
| "as3": "ActionScript", | |||||
| "asciidoc": "AsciiDoc", | |||||
| "asm": "Assembly", | |||||
| "asn.1": "ASN.1", | |||||
| "asp": "ASP", | |||||
| "aspectj": "AspectJ", | |||||
| "aspx": "ASP", | |||||
| "aspx-vb": "ASP", | |||||
| "assembly": "Assembly", | |||||
| "asymptote": "Asymptote", | |||||
| "ats": "ATS", | |||||
| "ats2": "ATS", | |||||
| "au3": "AutoIt", | |||||
| "augeas": "Augeas", | |||||
| "autoconf": "M4Sugar", | |||||
| "autohotkey": "AutoHotkey", | |||||
| "autoit": "AutoIt", | |||||
| "autoit3": "AutoIt", | |||||
| "autoitscript": "AutoIt", | |||||
| "awk": "Awk", | |||||
| "b3d": "BlitzBasic", | |||||
| "ballerina": "Ballerina", | |||||
| "bash": "Shell", | |||||
| "bash_session": "ShellSession", | |||||
| "bat": "Batchfile", | |||||
| "batch": "Batchfile", | |||||
| "batchfile": "Batchfile", | |||||
| "befunge": "Befunge", | |||||
| "bison": "Bison", | |||||
| "bitbake": "BitBake", | |||||
| "blade": "Blade", | |||||
| "blitz3d": "BlitzBasic", | |||||
| "blitzbasic": "BlitzBasic", | |||||
| "blitzmax": "BlitzMax", | |||||
| "blitzplus": "BlitzBasic", | |||||
| "bluespec": "Bluespec", | |||||
| "bmax": "BlitzMax", | |||||
| "boo": "Boo", | |||||
| "bplus": "BlitzBasic", | |||||
| "brainfuck": "Brainfuck", | |||||
| "brightscript": "Brightscript", | |||||
| "bro": "Zeek", | |||||
| "bsdmake": "Makefile", | |||||
| "byond": "DM", | |||||
| "c": "C", | |||||
| "c#": "C#", | |||||
| "c++": "C++", | |||||
| "c++-objdump": "Cpp-ObjDump", | |||||
| "c-objdump": "C-ObjDump", | |||||
| "c2hs": "C2hs Haskell", | |||||
| "c2hs_haskell": "C2hs Haskell", | |||||
| "cabal": "Cabal Config", | |||||
| "cabal_config": "Cabal Config", | |||||
| "cap'n_proto": "Cap'n Proto", | |||||
| "carto": "CartoCSS", | |||||
| "cartocss": "CartoCSS", | |||||
| "ceylon": "Ceylon", | |||||
| "cfc": "ColdFusion CFC", | |||||
| "cfm": "ColdFusion", | |||||
| "cfml": "ColdFusion", | |||||
| "chapel": "Chapel", | |||||
| "charity": "Charity", | |||||
| "chpl": "Chapel", | |||||
| "chuck": "ChucK", | |||||
| "cirru": "Cirru", | |||||
| "clarion": "Clarion", | |||||
| "clean": "Clean", | |||||
| "click": "Click", | |||||
| "clipper": "xBase", | |||||
| "clips": "CLIPS", | |||||
| "clojure": "Clojure", | |||||
| "closure_templates": "Closure Templates", | |||||
| "cloud_firestore_security_rules": "Cloud Firestore Security Rules", | |||||
| "cmake": "CMake", | |||||
| "cobol": "COBOL", | |||||
| "coffee": "CoffeeScript", | |||||
| "coffee-script": "CoffeeScript", | |||||
| "coffeescript": "CoffeeScript", | |||||
| "coldfusion": "ColdFusion", | |||||
| "coldfusion_cfc": "ColdFusion CFC", | |||||
| "coldfusion_html": "ColdFusion", | |||||
| "collada": "COLLADA", | |||||
| "common_lisp": "Common Lisp", | |||||
| "common_workflow_language": "Common Workflow Language", | |||||
| "component_pascal": "Component Pascal", | |||||
| "conll": "CoNLL-U", | |||||
| "conll-u": "CoNLL-U", | |||||
| "conll-x": "CoNLL-U", | |||||
| "console": "ShellSession", | |||||
| "cool": "Cool", | |||||
| "coq": "Coq", | |||||
| "cperl": "Perl", | |||||
| "cpp": "C++", | |||||
| "cpp-objdump": "Cpp-ObjDump", | |||||
| "creole": "Creole", | |||||
| "crystal": "Crystal", | |||||
| "csharp": "C#", | |||||
| "cson": "CSON", | |||||
| "csound": "Csound", | |||||
| "csound-csd": "Csound Document", | |||||
| "csound-orc": "Csound", | |||||
| "csound-sco": "Csound Score", | |||||
| "csound_document": "Csound Document", | |||||
| "csound_score": "Csound Score", | |||||
| "css": "CSS", | |||||
| "csv": "CSV", | |||||
| "cucumber": "Gherkin", | |||||
| "cuda": "Cuda", | |||||
| "cweb": "CWeb", | |||||
| "cwl": "Common Workflow Language", | |||||
| "cycript": "Cycript", | |||||
| "cython": "Cython", | |||||
| "d": "D", | |||||
| "d-objdump": "D-ObjDump", | |||||
| "darcs_patch": "Darcs Patch", | |||||
| "dart": "Dart", | |||||
| "dataweave": "DataWeave", | |||||
| "dcl": "DIGITAL Command Language", | |||||
| "delphi": "Component Pascal", | |||||
| "desktop": "desktop", | |||||
| "dhall": "Dhall", | |||||
| "diff": "Diff", | |||||
| "digital_command_language": "DIGITAL Command Language", | |||||
| "django": "HTML+Django", | |||||
| "dm": "DM", | |||||
| "dns_zone": "DNS Zone", | |||||
| "dockerfile": "Dockerfile", | |||||
| "dogescript": "Dogescript", | |||||
| "dosbatch": "Batchfile", | |||||
| "dosini": "INI", | |||||
| "dpatch": "Darcs Patch", | |||||
| "dtrace": "DTrace", | |||||
| "dtrace-script": "DTrace", | |||||
| "dylan": "Dylan", | |||||
| "e": "E", | |||||
| "eagle": "Eagle", | |||||
| "easybuild": "Easybuild", | |||||
| "ebnf": "EBNF", | |||||
| "ec": "eC", | |||||
| "ecere_projects": "Ecere Projects", | |||||
| "ecl": "ECL", | |||||
| "eclipse": "ECLiPSe", | |||||
| "ecr": "HTML+ECR", | |||||
| "editor-config": "EditorConfig", | |||||
| "editorconfig": "EditorConfig", | |||||
| "edje_data_collection": "Edje Data Collection", | |||||
| "edn": "edn", | |||||
| "eeschema_schematic": "KiCad Schematic", | |||||
| "eex": "HTML+EEX", | |||||
| "eiffel": "Eiffel", | |||||
| "ejs": "EJS", | |||||
| "elisp": "Emacs Lisp", | |||||
| "elixir": "Elixir", | |||||
| "elm": "Elm", | |||||
| "emacs": "Emacs Lisp", | |||||
| "emacs_lisp": "Emacs Lisp", | |||||
| "emberscript": "EmberScript", | |||||
| "eml": "EML", | |||||
| "eq": "EQ", | |||||
| "erb": "HTML+ERB", | |||||
| "erlang": "Erlang", | |||||
| "f#": "F#", | |||||
| "f*": "F*", | |||||
| "factor": "Factor", | |||||
| "fancy": "Fancy", | |||||
| "fantom": "Fantom", | |||||
| "figfont": "FIGlet Font", | |||||
| "figlet_font": "FIGlet Font", | |||||
| "filebench_wml": "Filebench WML", | |||||
| "filterscript": "Filterscript", | |||||
| "fish": "fish", | |||||
| "flex": "Lex", | |||||
| "flux": "FLUX", | |||||
| "formatted": "Formatted", | |||||
| "forth": "Forth", | |||||
| "fortran": "Fortran", | |||||
| "foxpro": "xBase", | |||||
| "freemarker": "FreeMarker", | |||||
| "frege": "Frege", | |||||
| "fsharp": "F#", | |||||
| "fstar": "F*", | |||||
| "ftl": "FreeMarker", | |||||
| "fundamental": "Text", | |||||
| "g-code": "G-code", | |||||
| "game_maker_language": "Game Maker Language", | |||||
| "gams": "GAMS", | |||||
| "gap": "GAP", | |||||
| "gcc_machine_description": "GCC Machine Description", | |||||
| "gdb": "GDB", | |||||
| "gdscript": "GDScript", | |||||
| "genie": "Genie", | |||||
| "genshi": "Genshi", | |||||
| "gentoo_ebuild": "Gentoo Ebuild", | |||||
| "gentoo_eclass": "Gentoo Eclass", | |||||
| "gerber_image": "Gerber Image", | |||||
| "gettext_catalog": "Gettext Catalog", | |||||
| "gf": "Grammatical Framework", | |||||
| "gherkin": "Gherkin", | |||||
| "git-ignore": "Ignore List", | |||||
| "git_attributes": "Git Attributes", | |||||
| "git_config": "Git Config", | |||||
| "gitattributes": "Git Attributes", | |||||
| "gitconfig": "Git Config", | |||||
| "gitignore": "Ignore List", | |||||
| "gitmodules": "Git Config", | |||||
| "glsl": "GLSL", | |||||
| "glyph": "Glyph", | |||||
| "glyph_bitmap_distribution_format": "Glyph Bitmap Distribution Format", | |||||
| "gn": "GN", | |||||
| "gnuplot": "Gnuplot", | |||||
| "go": "Go", | |||||
| "golang": "Go", | |||||
| "golo": "Golo", | |||||
| "gosu": "Gosu", | |||||
| "grace": "Grace", | |||||
| "gradle": "Gradle", | |||||
| "grammatical_framework": "Grammatical Framework", | |||||
| "graph_modeling_language": "Graph Modeling Language", | |||||
| "graphql": "GraphQL", | |||||
| "graphviz_(dot)": "Graphviz (DOT)", | |||||
| "groff": "Roff", | |||||
| "groovy": "Groovy", | |||||
| "groovy_server_pages": "Groovy Server Pages", | |||||
| "gsp": "Groovy Server Pages", | |||||
| "hack": "Hack", | |||||
| "haml": "Haml", | |||||
| "handlebars": "Handlebars", | |||||
| "haproxy": "HAProxy", | |||||
| "harbour": "Harbour", | |||||
| "haskell": "Haskell", | |||||
| "haxe": "Haxe", | |||||
| "hbs": "Handlebars", | |||||
| "hcl": "HCL", | |||||
| "hiveql": "HiveQL", | |||||
| "hlsl": "HLSL", | |||||
| "holyc": "HolyC", | |||||
| "html": "HTML", | |||||
| "html+django": "HTML+Django", | |||||
| "html+django/jinja": "HTML+Django", | |||||
| "html+ecr": "HTML+ECR", | |||||
| "html+eex": "HTML+EEX", | |||||
| "html+erb": "HTML+ERB", | |||||
| "html+jinja": "HTML+Django", | |||||
| "html+php": "HTML+PHP", | |||||
| "html+razor": "HTML+Razor", | |||||
| "html+ruby": "RHTML", | |||||
| "htmlbars": "Handlebars", | |||||
| "htmldjango": "HTML+Django", | |||||
| "http": "HTTP", | |||||
| "hxml": "HXML", | |||||
| "hy": "Hy", | |||||
| "hylang": "Hy", | |||||
| "hyphy": "HyPhy", | |||||
| "i7": "Inform 7", | |||||
| "idl": "IDL", | |||||
| "idris": "Idris", | |||||
| "ignore": "Ignore List", | |||||
| "ignore_list": "Ignore List", | |||||
| "igor": "IGOR Pro", | |||||
| "igor_pro": "IGOR Pro", | |||||
| "igorpro": "IGOR Pro", | |||||
| "inc": "PHP", | |||||
| "inform7": "Inform 7", | |||||
| "inform_7": "Inform 7", | |||||
| "ini": "INI", | |||||
| "inno_setup": "Inno Setup", | |||||
| "io": "Io", | |||||
| "ioke": "Ioke", | |||||
| "ipython_notebook": "Jupyter Notebook", | |||||
| "irc": "IRC log", | |||||
| "irc_log": "IRC log", | |||||
| "irc_logs": "IRC log", | |||||
| "isabelle": "Isabelle", | |||||
| "isabelle_root": "Isabelle ROOT", | |||||
| "j": "J", | |||||
| "jasmin": "Jasmin", | |||||
| "java": "Java", | |||||
| "java_properties": "Java Properties", | |||||
| "java_server_page": "Groovy Server Pages", | |||||
| "java_server_pages": "Java Server Pages", | |||||
| "javascript": "JavaScript", | |||||
| "javascript+erb": "JavaScript+ERB", | |||||
| "jflex": "JFlex", | |||||
| "jison": "Jison", | |||||
| "jison_lex": "Jison Lex", | |||||
| "jolie": "Jolie", | |||||
| "jruby": "Ruby", | |||||
| "js": "JavaScript", | |||||
| "json": "JSON", | |||||
| "json5": "JSON5", | |||||
| "json_with_comments": "JSON with Comments", | |||||
| "jsonc": "JSON with Comments", | |||||
| "jsoniq": "JSONiq", | |||||
| "jsonld": "JSONLD", | |||||
| "jsonnet": "Jsonnet", | |||||
| "jsp": "Java Server Pages", | |||||
| "jsx": "JSX", | |||||
| "julia": "Julia", | |||||
| "jupyter_notebook": "Jupyter Notebook", | |||||
| "kicad_layout": "KiCad Layout", | |||||
| "kicad_legacy_layout": "KiCad Legacy Layout", | |||||
| "kicad_schematic": "KiCad Schematic", | |||||
| "kit": "Kit", | |||||
| "kotlin": "Kotlin", | |||||
| "krl": "KRL", | |||||
| "labview": "LabVIEW", | |||||
| "lasso": "Lasso", | |||||
| "lassoscript": "Lasso", | |||||
| "latex": "TeX", | |||||
| "latte": "Latte", | |||||
| "lean": "Lean", | |||||
| "less": "Less", | |||||
| "lex": "Lex", | |||||
| "lfe": "LFE", | |||||
| "lhaskell": "Literate Haskell", | |||||
| "lhs": "Literate Haskell", | |||||
| "lilypond": "LilyPond", | |||||
| "limbo": "Limbo", | |||||
| "linker_script": "Linker Script", | |||||
| "linux_kernel_module": "Linux Kernel Module", | |||||
| "liquid": "Liquid", | |||||
| "lisp": "Common Lisp", | |||||
| "litcoffee": "Literate CoffeeScript", | |||||
| "literate_agda": "Literate Agda", | |||||
| "literate_coffeescript": "Literate CoffeeScript", | |||||
| "literate_haskell": "Literate Haskell", | |||||
| "live-script": "LiveScript", | |||||
| "livescript": "LiveScript", | |||||
| "llvm": "LLVM", | |||||
| "logos": "Logos", | |||||
| "logtalk": "Logtalk", | |||||
| "lolcode": "LOLCODE", | |||||
| "lookml": "LookML", | |||||
| "loomscript": "LoomScript", | |||||
| "ls": "LiveScript", | |||||
| "lsl": "LSL", | |||||
| "ltspice_symbol": "LTspice Symbol", | |||||
| "lua": "Lua", | |||||
| "m": "M", | |||||
| "m4": "M4", | |||||
| "m4sugar": "M4Sugar", | |||||
| "macruby": "Ruby", | |||||
| "make": "Makefile", | |||||
| "makefile": "Makefile", | |||||
| "mako": "Mako", | |||||
| "man": "Roff", | |||||
| "man-page": "Roff", | |||||
| "man_page": "Roff", | |||||
| "manpage": "Roff", | |||||
| "markdown": "Markdown", | |||||
| "marko": "Marko", | |||||
| "markojs": "Marko", | |||||
| "mask": "Mask", | |||||
| "mathematica": "Mathematica", | |||||
| "matlab": "MATLAB", | |||||
| "maven_pom": "Maven POM", | |||||
| "max": "Max", | |||||
| "max/msp": "Max", | |||||
| "maxmsp": "Max", | |||||
| "maxscript": "MAXScript", | |||||
| "mcfunction": "mcfunction", | |||||
| "mdoc": "Roff", | |||||
| "mediawiki": "MediaWiki", | |||||
| "mercury": "Mercury", | |||||
| "meson": "Meson", | |||||
| "metal": "Metal", | |||||
| "mf": "Makefile", | |||||
| "minid": "MiniD", | |||||
| "mirah": "Mirah", | |||||
| "mma": "Mathematica", | |||||
| "modelica": "Modelica", | |||||
| "modula-2": "Modula-2", | |||||
| "modula-3": "Modula-3", | |||||
| "module_management_system": "Module Management System", | |||||
| "monkey": "Monkey", | |||||
| "moocode": "Moocode", | |||||
| "moonscript": "MoonScript", | |||||
| "motorola_68k_assembly": "Motorola 68K Assembly", | |||||
| "mql4": "MQL4", | |||||
| "mql5": "MQL5", | |||||
| "mtml": "MTML", | |||||
| "muf": "MUF", | |||||
| "mumps": "M", | |||||
| "mupad": "mupad", | |||||
| "myghty": "Myghty", | |||||
| "nanorc": "nanorc", | |||||
| "nasm": "Assembly", | |||||
| "ncl": "NCL", | |||||
| "nearley": "Nearley", | |||||
| "nemerle": "Nemerle", | |||||
| "nesc": "nesC", | |||||
| "netlinx": "NetLinx", | |||||
| "netlinx+erb": "NetLinx+ERB", | |||||
| "netlogo": "NetLogo", | |||||
| "newlisp": "NewLisp", | |||||
| "nextflow": "Nextflow", | |||||
| "nginx": "Nginx", | |||||
| "nginx_configuration_file": "Nginx", | |||||
| "nim": "Nim", | |||||
| "ninja": "Ninja", | |||||
| "nit": "Nit", | |||||
| "nix": "Nix", | |||||
| "nixos": "Nix", | |||||
| "njk": "HTML+Django", | |||||
| "nl": "NL", | |||||
| "node": "JavaScript", | |||||
| "nroff": "Roff", | |||||
| "nsis": "NSIS", | |||||
| "nu": "Nu", | |||||
| "numpy": "NumPy", | |||||
| "nunjucks": "HTML+Django", | |||||
| "nush": "Nu", | |||||
| "nvim": "Vim script", | |||||
| "obj-c": "Objective-C", | |||||
| "obj-c++": "Objective-C++", | |||||
| "obj-j": "Objective-J", | |||||
| "objc": "Objective-C", | |||||
| "objc++": "Objective-C++", | |||||
| "objdump": "ObjDump", | |||||
| "objective-c": "Objective-C", | |||||
| "objective-c++": "Objective-C++", | |||||
| "objective-j": "Objective-J", | |||||
| "objectivec": "Objective-C", | |||||
| "objectivec++": "Objective-C++", | |||||
| "objectivej": "Objective-J", | |||||
| "objectpascal": "Component Pascal", | |||||
| "objectscript": "ObjectScript", | |||||
| "objj": "Objective-J", | |||||
| "ocaml": "OCaml", | |||||
| "octave": "MATLAB", | |||||
| "omgrofl": "Omgrofl", | |||||
| "oncrpc": "RPC", | |||||
| "ooc": "ooc", | |||||
| "opa": "Opa", | |||||
| "opal": "Opal", | |||||
| "opencl": "OpenCL", | |||||
| "openedge": "OpenEdge ABL", | |||||
| "openedge_abl": "OpenEdge ABL", | |||||
| "openrc": "OpenRC runscript", | |||||
| "openrc_runscript": "OpenRC runscript", | |||||
| "openscad": "OpenSCAD", | |||||
| "opentype_feature_file": "OpenType Feature File", | |||||
| "org": "Org", | |||||
| "osascript": "AppleScript", | |||||
| "ox": "Ox", | |||||
| "oxygene": "Oxygene", | |||||
| "oz": "Oz", | |||||
| "p4": "P4", | |||||
| "pan": "Pan", | |||||
| "pandoc": "Markdown", | |||||
| "papyrus": "Papyrus", | |||||
| "parrot": "Parrot", | |||||
| "parrot_assembly": "Parrot Assembly", | |||||
| "parrot_internal_representation": "Parrot Internal Representation", | |||||
| "pascal": "Pascal", | |||||
| "pasm": "Parrot Assembly", | |||||
| "pawn": "Pawn", | |||||
| "pcbnew": "KiCad Layout", | |||||
| "pep8": "Pep8", | |||||
| "perl": "Perl", | |||||
| "perl6": "Perl 6", | |||||
| "perl_6": "Perl 6", | |||||
| "php": "PHP", | |||||
| "pic": "Pic", | |||||
| "pickle": "Pickle", | |||||
| "picolisp": "PicoLisp", | |||||
| "piglatin": "PigLatin", | |||||
| "pike": "Pike", | |||||
| "pir": "Parrot Internal Representation", | |||||
| "plpgsql": "PLpgSQL", | |||||
| "plsql": "PLSQL", | |||||
| "pod": "Pod", | |||||
| "pod_6": "Pod 6", | |||||
| "pogoscript": "PogoScript", | |||||
| "pony": "Pony", | |||||
| "posh": "PowerShell", | |||||
| "postcss": "PostCSS", | |||||
| "postscr": "PostScript", | |||||
| "postscript": "PostScript", | |||||
| "pot": "Gettext Catalog", | |||||
| "pov-ray": "POV-Ray SDL", | |||||
| "pov-ray_sdl": "POV-Ray SDL", | |||||
| "povray": "POV-Ray SDL", | |||||
| "powerbuilder": "PowerBuilder", | |||||
| "powershell": "PowerShell", | |||||
| "processing": "Processing", | |||||
| "progress": "OpenEdge ABL", | |||||
| "prolog": "Prolog", | |||||
| "propeller_spin": "Propeller Spin", | |||||
| "protobuf": "Protocol Buffer", | |||||
| "protocol_buffer": "Protocol Buffer", | |||||
| "protocol_buffers": "Protocol Buffer", | |||||
| "public_key": "Public Key", | |||||
| "pug": "Pug", | |||||
| "puppet": "Puppet", | |||||
| "pure_data": "Pure Data", | |||||
| "purebasic": "PureBasic", | |||||
| "purescript": "PureScript", | |||||
| "pwsh": "PowerShell", | |||||
| "pycon": "Python console", | |||||
| "pyrex": "Cython", | |||||
| "python": "Python", | |||||
| "python3": "Python", | |||||
| "python_console": "Python console", | |||||
| "python_traceback": "Python traceback", | |||||
| "q": "q", | |||||
| "qmake": "QMake", | |||||
| "qml": "QML", | |||||
| "quake": "Quake", | |||||
| "r": "R", | |||||
| "racket": "Racket", | |||||
| "ragel": "Ragel", | |||||
| "ragel-rb": "Ragel", | |||||
| "ragel-ruby": "Ragel", | |||||
| "rake": "Ruby", | |||||
| "raml": "RAML", | |||||
| "rascal": "Rascal", | |||||
| "raw": "Raw token data", | |||||
| "raw_token_data": "Raw token data", | |||||
| "razor": "HTML+Razor", | |||||
| "rb": "Ruby", | |||||
| "rbx": "Ruby", | |||||
| "rdoc": "RDoc", | |||||
| "realbasic": "REALbasic", | |||||
| "reason": "Reason", | |||||
| "rebol": "Rebol", | |||||
| "red": "Red", | |||||
| "red/system": "Red", | |||||
| "redcode": "Redcode", | |||||
| "regex": "Regular Expression", | |||||
| "regexp": "Regular Expression", | |||||
| "regular_expression": "Regular Expression", | |||||
| "ren'py": "Ren'Py", | |||||
| "renderscript": "RenderScript", | |||||
| "renpy": "Ren'Py", | |||||
| "restructuredtext": "reStructuredText", | |||||
| "rexx": "REXX", | |||||
| "rhtml": "RHTML", | |||||
| "rich_text_format": "Rich Text Format", | |||||
| "ring": "Ring", | |||||
| "rmarkdown": "RMarkdown", | |||||
| "robotframework": "RobotFramework", | |||||
| "roff": "Roff", | |||||
| "roff_manpage": "Roff Manpage", | |||||
| "rouge": "Rouge", | |||||
| "rpc": "RPC", | |||||
| "rpcgen": "RPC", | |||||
| "rpm_spec": "RPM Spec", | |||||
| "rs-274x": "Gerber Image", | |||||
| "rscript": "R", | |||||
| "rss": "XML", | |||||
| "rst": "reStructuredText", | |||||
| "ruby": "Ruby", | |||||
| "runoff": "RUNOFF", | |||||
| "rust": "Rust", | |||||
| "rusthon": "Python", | |||||
| "sage": "Sage", | |||||
| "salt": "SaltStack", | |||||
| "saltstack": "SaltStack", | |||||
| "saltstate": "SaltStack", | |||||
| "sas": "SAS", | |||||
| "sass": "Sass", | |||||
| "scala": "Scala", | |||||
| "scaml": "Scaml", | |||||
| "scheme": "Scheme", | |||||
| "scilab": "Scilab", | |||||
| "scss": "SCSS", | |||||
| "sed": "sed", | |||||
| "self": "Self", | |||||
| "sh": "Shell", | |||||
| "shaderlab": "ShaderLab", | |||||
| "shell": "Shell", | |||||
| "shell-script": "Shell", | |||||
| "shellsession": "ShellSession", | |||||
| "shen": "Shen", | |||||
| "slash": "Slash", | |||||
| "slice": "Slice", | |||||
| "slim": "Slim", | |||||
| "smali": "Smali", | |||||
| "smalltalk": "Smalltalk", | |||||
| "smarty": "Smarty", | |||||
| "sml": "Standard ML", | |||||
| "smt": "SMT", | |||||
| "snippet": "YASnippet", | |||||
| "solidity": "Solidity", | |||||
| "sourcemod": "SourcePawn", | |||||
| "sourcepawn": "SourcePawn", | |||||
| "soy": "Closure Templates", | |||||
| "sparql": "SPARQL", | |||||
| "specfile": "RPM Spec", | |||||
| "spline_font_database": "Spline Font Database", | |||||
| "splus": "R", | |||||
| "sqf": "SQF", | |||||
| "sql": "SQL", | |||||
| "sqlpl": "SQLPL", | |||||
| "squeak": "Smalltalk", | |||||
| "squirrel": "Squirrel", | |||||
| "srecode_template": "SRecode Template", | |||||
| "ssh_config": "SSH Config", | |||||
| "stan": "Stan", | |||||
| "standard_ml": "Standard ML", | |||||
| "stata": "Stata", | |||||
| "ston": "STON", | |||||
| "stylus": "Stylus", | |||||
| "subrip_text": "SubRip Text", | |||||
| "sugarss": "SugarSS", | |||||
| "supercollider": "SuperCollider", | |||||
| "svelte": "Svelte", | |||||
| "svg": "SVG", | |||||
| "swift": "Swift", | |||||
| "systemverilog": "SystemVerilog", | |||||
| "tcl": "Tcl", | |||||
| "tcsh": "Tcsh", | |||||
| "tea": "Tea", | |||||
| "terra": "Terra", | |||||
| "terraform": "HCL", | |||||
| "tex": "TeX", | |||||
| "text": "Text", | |||||
| "textile": "Textile", | |||||
| "thrift": "Thrift", | |||||
| "ti_program": "TI Program", | |||||
| "tl": "Type Language", | |||||
| "tla": "TLA", | |||||
| "toml": "TOML", | |||||
| "troff": "Roff", | |||||
| "ts": "TypeScript", | |||||
| "tsql": "TSQL", | |||||
| "tsx": "TSX", | |||||
| "turing": "Turing", | |||||
| "turtle": "Turtle", | |||||
| "twig": "Twig", | |||||
| "txl": "TXL", | |||||
| "type_language": "Type Language", | |||||
| "typescript": "TypeScript", | |||||
| "udiff": "Diff", | |||||
| "unified_parallel_c": "Unified Parallel C", | |||||
| "unity3d_asset": "Unity3D Asset", | |||||
| "unix_assembly": "Unix Assembly", | |||||
| "uno": "Uno", | |||||
| "unrealscript": "UnrealScript", | |||||
| "ur": "UrWeb", | |||||
| "ur/web": "UrWeb", | |||||
| "urweb": "UrWeb", | |||||
| "vala": "Vala", | |||||
| "vb.net": "Visual Basic", | |||||
| "vbnet": "Visual Basic", | |||||
| "vcl": "VCL", | |||||
| "verilog": "Verilog", | |||||
| "vhdl": "VHDL", | |||||
| "vim": "Vim script", | |||||
| "vim_script": "Vim script", | |||||
| "viml": "Vim script", | |||||
| "visual_basic": "Visual Basic", | |||||
| "volt": "Volt", | |||||
| "vue": "Vue", | |||||
| "wasm": "WebAssembly", | |||||
| "wast": "WebAssembly", | |||||
| "wavefront_material": "Wavefront Material", | |||||
| "wavefront_object": "Wavefront Object", | |||||
| "wdl": "wdl", | |||||
| "web_ontology_language": "Web Ontology Language", | |||||
| "webassembly": "WebAssembly", | |||||
| "webidl": "WebIDL", | |||||
| "webvtt": "WebVTT", | |||||
| "winbatch": "Batchfile", | |||||
| "windows_registry_entries": "Windows Registry Entries", | |||||
| "wisp": "wisp", | |||||
| "wollok": "Wollok", | |||||
| "world_of_warcraft_addon_data": "World of Warcraft Addon Data", | |||||
| "wsdl": "XML", | |||||
| "x10": "X10", | |||||
| "x_bitmap": "X BitMap", | |||||
| "x_font_directory_index": "X Font Directory Index", | |||||
| "x_pixmap": "X PixMap", | |||||
| "xbase": "xBase", | |||||
| "xbm": "X BitMap", | |||||
| "xc": "XC", | |||||
| "xcompose": "XCompose", | |||||
| "xdr": "RPC", | |||||
| "xhtml": "HTML", | |||||
| "xml": "XML", | |||||
| "xml+genshi": "Genshi", | |||||
| "xml+kid": "Genshi", | |||||
| "xojo": "Xojo", | |||||
| "xpages": "XPages", | |||||
| "xpm": "X PixMap", | |||||
| "xproc": "XProc", | |||||
| "xquery": "XQuery", | |||||
| "xs": "XS", | |||||
| "xsd": "XML", | |||||
| "xsl": "XSLT", | |||||
| "xslt": "XSLT", | |||||
| "xten": "X10", | |||||
| "xtend": "Xtend", | |||||
| "yacc": "Yacc", | |||||
| "yaml": "YAML", | |||||
| "yang": "YANG", | |||||
| "yara": "YARA", | |||||
| "yas": "YASnippet", | |||||
| "yasnippet": "YASnippet", | |||||
| "yml": "YAML", | |||||
| "zap": "ZAP", | |||||
| "zeek": "Zeek", | |||||
| "zenscript": "ZenScript", | |||||
| "zephir": "Zephir", | |||||
| "zig": "Zig", | |||||
| "zil": "ZIL", | |||||
| "zimpl": "Zimpl", | |||||
| "zsh": "Shell", | |||||
| } | |||||
| // LanguageByAlias looks up the language name by it's alias or name. | |||||
| // It mirrors the logic of github linguist and is needed e.g for heuristcs.yml | |||||
| // that mixes names and aliases in a language field (see XPM example). | |||||
| func LanguageByAlias(langOrAlias string) (lang string, ok bool) { | |||||
| k := convertToAliasKey(langOrAlias) | |||||
| lang, ok = LanguageByAliasMap[k] | |||||
| return | |||||
| } | |||||
| // convertToAliasKey converts language name to a key in LanguageByAliasMap. | |||||
| // Following | |||||
| // - internal.code-generator.generator.convertToAliasKey() | |||||
| // - GetLanguageByAlias() | |||||
| // conventions. | |||||
| // It is here to avoid dependency on "generate" and "enry" packages. | |||||
| func convertToAliasKey(langName string) string { | |||||
| ak := strings.SplitN(langName, `,`, 2)[0] | |||||
| ak = strings.Replace(ak, ` `, `_`, -1) | |||||
| ak = strings.ToLower(ak) | |||||
| return ak | |||||
| } | |||||
| @@ -1,7 +0,0 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| package data | |||||
| // linguist's commit from which files were generated. | |||||
| var LinguistCommit = "3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d" | |||||
| @@ -1,526 +0,0 @@ | |||||
| // Code generated by github.com/src-d/enry/v2/internal/code-generator DO NOT EDIT. | |||||
| // Extracted from github/linguist commit: 3a1bd3c3d3e741a8aaec4704f782e06f5cd2a00d | |||||
| package data | |||||
| var LanguagesType = map[string]int{ | |||||
| "1C Enterprise": 2, | |||||
| "ABAP": 2, | |||||
| "ABNF": 1, | |||||
| "AGS Script": 2, | |||||
| "AMPL": 2, | |||||
| "ANTLR": 2, | |||||
| "API Blueprint": 3, | |||||
| "APL": 2, | |||||
| "ASN.1": 1, | |||||
| "ASP": 2, | |||||
| "ATS": 2, | |||||
| "ActionScript": 2, | |||||
| "Ada": 2, | |||||
| "Adobe Font Metrics": 1, | |||||
| "Agda": 2, | |||||
| "Alloy": 2, | |||||
| "Alpine Abuild": 2, | |||||
| "Altium Designer": 1, | |||||
| "AngelScript": 2, | |||||
| "Ant Build System": 1, | |||||
| "ApacheConf": 1, | |||||
| "Apex": 2, | |||||
| "Apollo Guidance Computer": 2, | |||||
| "AppleScript": 2, | |||||
| "Arc": 2, | |||||
| "AsciiDoc": 4, | |||||
| "AspectJ": 2, | |||||
| "Assembly": 2, | |||||
| "Asymptote": 2, | |||||
| "Augeas": 2, | |||||
| "AutoHotkey": 2, | |||||
| "AutoIt": 2, | |||||
| "Awk": 2, | |||||
| "Ballerina": 2, | |||||
| "Batchfile": 2, | |||||
| "Befunge": 2, | |||||
| "Bison": 2, | |||||
| "BitBake": 2, | |||||
| "Blade": 3, | |||||
| "BlitzBasic": 2, | |||||
| "BlitzMax": 2, | |||||
| "Bluespec": 2, | |||||
| "Boo": 2, | |||||
| "Brainfuck": 2, | |||||
| "Brightscript": 2, | |||||
| "C": 2, | |||||
| "C#": 2, | |||||
| "C++": 2, | |||||
| "C-ObjDump": 1, | |||||
| "C2hs Haskell": 2, | |||||
| "CLIPS": 2, | |||||
| "CMake": 2, | |||||
| "COBOL": 2, | |||||
| "COLLADA": 1, | |||||
| "CSON": 1, | |||||
| "CSS": 3, | |||||
| "CSV": 1, | |||||
| "CWeb": 2, | |||||
| "Cabal Config": 1, | |||||
| "Cap'n Proto": 2, | |||||
| "CartoCSS": 2, | |||||
| "Ceylon": 2, | |||||
| "Chapel": 2, | |||||
| "Charity": 2, | |||||
| "ChucK": 2, | |||||
| "Cirru": 2, | |||||
| "Clarion": 2, | |||||
| "Clean": 2, | |||||
| "Click": 2, | |||||
| "Clojure": 2, | |||||
| "Closure Templates": 3, | |||||
| "Cloud Firestore Security Rules": 1, | |||||
| "CoNLL-U": 1, | |||||
| "CoffeeScript": 2, | |||||
| "ColdFusion": 2, | |||||
| "ColdFusion CFC": 2, | |||||
| "Common Lisp": 2, | |||||
| "Common Workflow Language": 2, | |||||
| "Component Pascal": 2, | |||||
| "Cool": 2, | |||||
| "Coq": 2, | |||||
| "Cpp-ObjDump": 1, | |||||
| "Creole": 4, | |||||
| "Crystal": 2, | |||||
| "Csound": 2, | |||||
| "Csound Document": 2, | |||||
| "Csound Score": 2, | |||||
| "Cuda": 2, | |||||
| "Cycript": 2, | |||||
| "Cython": 2, | |||||
| "D": 2, | |||||
| "D-ObjDump": 1, | |||||
| "DIGITAL Command Language": 2, | |||||
| "DM": 2, | |||||
| "DNS Zone": 1, | |||||
| "DTrace": 2, | |||||
| "Darcs Patch": 1, | |||||
| "Dart": 2, | |||||
| "DataWeave": 2, | |||||
| "Dhall": 2, | |||||
| "Diff": 1, | |||||
| "Dockerfile": 2, | |||||
| "Dogescript": 2, | |||||
| "Dylan": 2, | |||||
| "E": 2, | |||||
| "EBNF": 1, | |||||
| "ECL": 2, | |||||
| "ECLiPSe": 2, | |||||
| "EJS": 3, | |||||
| "EML": 1, | |||||
| "EQ": 2, | |||||
| "Eagle": 1, | |||||
| "Easybuild": 1, | |||||
| "Ecere Projects": 1, | |||||
| "EditorConfig": 1, | |||||
| "Edje Data Collection": 1, | |||||
| "Eiffel": 2, | |||||
| "Elixir": 2, | |||||
| "Elm": 2, | |||||
| "Emacs Lisp": 2, | |||||
| "EmberScript": 2, | |||||
| "Erlang": 2, | |||||
| "F#": 2, | |||||
| "F*": 2, | |||||
| "FIGlet Font": 1, | |||||
| "FLUX": 2, | |||||
| "Factor": 2, | |||||
| "Fancy": 2, | |||||
| "Fantom": 2, | |||||
| "Filebench WML": 2, | |||||
| "Filterscript": 2, | |||||
| "Formatted": 1, | |||||
| "Forth": 2, | |||||
| "Fortran": 2, | |||||
| "FreeMarker": 2, | |||||
| "Frege": 2, | |||||
| "G-code": 2, | |||||
| "GAMS": 2, | |||||
| "GAP": 2, | |||||
| "GCC Machine Description": 2, | |||||
| "GDB": 2, | |||||
| "GDScript": 2, | |||||
| "GLSL": 2, | |||||
| "GN": 1, | |||||
| "Game Maker Language": 2, | |||||
| "Genie": 2, | |||||
| "Genshi": 2, | |||||
| "Gentoo Ebuild": 2, | |||||
| "Gentoo Eclass": 2, | |||||
| "Gerber Image": 1, | |||||
| "Gettext Catalog": 4, | |||||
| "Gherkin": 2, | |||||
| "Git Attributes": 1, | |||||
| "Git Config": 1, | |||||
| "Glyph": 2, | |||||
| "Glyph Bitmap Distribution Format": 1, | |||||
| "Gnuplot": 2, | |||||
| "Go": 2, | |||||
| "Golo": 2, | |||||
| "Gosu": 2, | |||||
| "Grace": 2, | |||||
| "Gradle": 1, | |||||
| "Grammatical Framework": 2, | |||||
| "Graph Modeling Language": 1, | |||||
| "GraphQL": 1, | |||||
| "Graphviz (DOT)": 1, | |||||
| "Groovy": 2, | |||||
| "Groovy Server Pages": 2, | |||||
| "HAProxy": 1, | |||||
| "HCL": 2, | |||||
| "HLSL": 2, | |||||
| "HTML": 3, | |||||
| "HTML+Django": 3, | |||||
| "HTML+ECR": 3, | |||||
| "HTML+EEX": 3, | |||||
| "HTML+ERB": 3, | |||||
| "HTML+PHP": 3, | |||||
| "HTML+Razor": 3, | |||||
| "HTTP": 1, | |||||
| "HXML": 1, | |||||
| "Hack": 2, | |||||
| "Haml": 3, | |||||
| "Handlebars": 3, | |||||
| "Harbour": 2, | |||||
| "Haskell": 2, | |||||
| "Haxe": 2, | |||||
| "HiveQL": 2, | |||||
| "HolyC": 2, | |||||
| "Hy": 2, | |||||
| "HyPhy": 2, | |||||
| "IDL": 2, | |||||
| "IGOR Pro": 2, | |||||
| "INI": 1, | |||||
| "IRC log": 1, | |||||
| "Idris": 2, | |||||
| "Ignore List": 1, | |||||
| "Inform 7": 2, | |||||
| "Inno Setup": 2, | |||||
| "Io": 2, | |||||
| "Ioke": 2, | |||||
| "Isabelle": 2, | |||||
| "Isabelle ROOT": 2, | |||||
| "J": 2, | |||||
| "JFlex": 2, | |||||
| "JSON": 1, | |||||
| "JSON with Comments": 1, | |||||
| "JSON5": 1, | |||||
| "JSONLD": 1, | |||||
| "JSONiq": 2, | |||||
| "JSX": 2, | |||||
| "Jasmin": 2, | |||||
| "Java": 2, | |||||
| "Java Properties": 1, | |||||
| "Java Server Pages": 2, | |||||
| "JavaScript": 2, | |||||
| "JavaScript+ERB": 2, | |||||
| "Jison": 2, | |||||
| "Jison Lex": 2, | |||||
| "Jolie": 2, | |||||
| "Jsonnet": 2, | |||||
| "Julia": 2, | |||||
| "Jupyter Notebook": 3, | |||||
| "KRL": 2, | |||||
| "KiCad Layout": 1, | |||||
| "KiCad Legacy Layout": 1, | |||||
| "KiCad Schematic": 1, | |||||
| "Kit": 3, | |||||
| "Kotlin": 2, | |||||
| "LFE": 2, | |||||
| "LLVM": 2, | |||||
| "LOLCODE": 2, | |||||
| "LSL": 2, | |||||
| "LTspice Symbol": 1, | |||||
| "LabVIEW": 2, | |||||
| "Lasso": 2, | |||||
| "Latte": 3, | |||||
| "Lean": 2, | |||||
| "Less": 3, | |||||
| "Lex": 2, | |||||
| "LilyPond": 2, | |||||
| "Limbo": 2, | |||||
| "Linker Script": 1, | |||||
| "Linux Kernel Module": 1, | |||||
| "Liquid": 3, | |||||
| "Literate Agda": 2, | |||||
| "Literate CoffeeScript": 2, | |||||
| "Literate Haskell": 2, | |||||
| "LiveScript": 2, | |||||
| "Logos": 2, | |||||
| "Logtalk": 2, | |||||
| "LookML": 2, | |||||
| "LoomScript": 2, | |||||
| "Lua": 2, | |||||
| "M": 2, | |||||
| "M4": 2, | |||||
| "M4Sugar": 2, | |||||
| "MATLAB": 2, | |||||
| "MAXScript": 2, | |||||
| "MQL4": 2, | |||||
| "MQL5": 2, | |||||
| "MTML": 3, | |||||
| "MUF": 2, | |||||
| "Makefile": 2, | |||||
| "Mako": 2, | |||||
| "Markdown": 4, | |||||
| "Marko": 3, | |||||
| "Mask": 3, | |||||
| "Mathematica": 2, | |||||
| "Maven POM": 1, | |||||
| "Max": 2, | |||||
| "MediaWiki": 4, | |||||
| "Mercury": 2, | |||||
| "Meson": 2, | |||||
| "Metal": 2, | |||||
| "MiniD": 2, | |||||
| "Mirah": 2, | |||||
| "Modelica": 2, | |||||
| "Modula-2": 2, | |||||
| "Modula-3": 2, | |||||
| "Module Management System": 2, | |||||
| "Monkey": 2, | |||||
| "Moocode": 2, | |||||
| "MoonScript": 2, | |||||
| "Motorola 68K Assembly": 2, | |||||
| "Myghty": 2, | |||||
| "NCL": 2, | |||||
| "NL": 1, | |||||
| "NSIS": 2, | |||||
| "Nearley": 2, | |||||
| "Nemerle": 2, | |||||
| "NetLinx": 2, | |||||
| "NetLinx+ERB": 2, | |||||
| "NetLogo": 2, | |||||
| "NewLisp": 2, | |||||
| "Nextflow": 2, | |||||
| "Nginx": 1, | |||||
| "Nim": 2, | |||||
| "Ninja": 1, | |||||
| "Nit": 2, | |||||
| "Nix": 2, | |||||
| "Nu": 2, | |||||
| "NumPy": 2, | |||||
| "OCaml": 2, | |||||
| "ObjDump": 1, | |||||
| "ObjectScript": 2, | |||||
| "Objective-C": 2, | |||||
| "Objective-C++": 2, | |||||
| "Objective-J": 2, | |||||
| "Omgrofl": 2, | |||||
| "Opa": 2, | |||||
| "Opal": 2, | |||||
| "OpenCL": 2, | |||||
| "OpenEdge ABL": 2, | |||||
| "OpenRC runscript": 2, | |||||
| "OpenSCAD": 2, | |||||
| "OpenType Feature File": 1, | |||||
| "Org": 4, | |||||
| "Ox": 2, | |||||
| "Oxygene": 2, | |||||
| "Oz": 2, | |||||
| "P4": 2, | |||||
| "PHP": 2, | |||||
| "PLSQL": 2, | |||||
| "PLpgSQL": 2, | |||||
| "POV-Ray SDL": 2, | |||||
| "Pan": 2, | |||||
| "Papyrus": 2, | |||||
| "Parrot": 2, | |||||
| "Parrot Assembly": 2, | |||||
| "Parrot Internal Representation": 2, | |||||
| "Pascal": 2, | |||||
| "Pawn": 2, | |||||
| "Pep8": 2, | |||||
| "Perl": 2, | |||||
| "Perl 6": 2, | |||||
| "Pic": 3, | |||||
| "Pickle": 1, | |||||
| "PicoLisp": 2, | |||||
| "PigLatin": 2, | |||||
| "Pike": 2, | |||||
| "Pod": 4, | |||||
| "Pod 6": 4, | |||||
| "PogoScript": 2, | |||||
| "Pony": 2, | |||||
| "PostCSS": 3, | |||||
| "PostScript": 3, | |||||
| "PowerBuilder": 2, | |||||
| "PowerShell": 2, | |||||
| "Processing": 2, | |||||
| "Prolog": 2, | |||||
| "Propeller Spin": 2, | |||||
| "Protocol Buffer": 1, | |||||
| "Public Key": 1, | |||||
| "Pug": 3, | |||||
| "Puppet": 2, | |||||
| "Pure Data": 1, | |||||
| "PureBasic": 2, | |||||
| "PureScript": 2, | |||||
| "Python": 2, | |||||
| "Python console": 2, | |||||
| "Python traceback": 1, | |||||
| "QML": 2, | |||||
| "QMake": 2, | |||||
| "Quake": 2, | |||||
| "R": 2, | |||||
| "RAML": 3, | |||||
| "RDoc": 4, | |||||
| "REALbasic": 2, | |||||
| "REXX": 2, | |||||
| "RHTML": 3, | |||||
| "RMarkdown": 4, | |||||
| "RPC": 2, | |||||
| "RPM Spec": 1, | |||||
| "RUNOFF": 3, | |||||
| "Racket": 2, | |||||
| "Ragel": 2, | |||||
| "Rascal": 2, | |||||
| "Raw token data": 1, | |||||
| "Reason": 2, | |||||
| "Rebol": 2, | |||||
| "Red": 2, | |||||
| "Redcode": 2, | |||||
| "Regular Expression": 1, | |||||
| "Ren'Py": 2, | |||||
| "RenderScript": 2, | |||||
| "Rich Text Format": 3, | |||||
| "Ring": 2, | |||||
| "RobotFramework": 2, | |||||
| "Roff": 3, | |||||
| "Roff Manpage": 3, | |||||
| "Rouge": 2, | |||||
| "Ruby": 2, | |||||
| "Rust": 2, | |||||
| "SAS": 2, | |||||
| "SCSS": 3, | |||||
| "SMT": 2, | |||||
| "SPARQL": 1, | |||||
| "SQF": 2, | |||||
| "SQL": 1, | |||||
| "SQLPL": 2, | |||||
| "SRecode Template": 3, | |||||
| "SSH Config": 1, | |||||
| "STON": 1, | |||||
| "SVG": 1, | |||||
| "Sage": 2, | |||||
| "SaltStack": 2, | |||||
| "Sass": 3, | |||||
| "Scala": 2, | |||||
| "Scaml": 3, | |||||
| "Scheme": 2, | |||||
| "Scilab": 2, | |||||
| "Self": 2, | |||||
| "ShaderLab": 2, | |||||
| "Shell": 2, | |||||
| "ShellSession": 2, | |||||
| "Shen": 2, | |||||
| "Slash": 2, | |||||
| "Slice": 2, | |||||
| "Slim": 3, | |||||
| "Smali": 2, | |||||
| "Smalltalk": 2, | |||||
| "Smarty": 2, | |||||
| "Solidity": 2, | |||||
| "SourcePawn": 2, | |||||
| "Spline Font Database": 1, | |||||
| "Squirrel": 2, | |||||
| "Stan": 2, | |||||
| "Standard ML": 2, | |||||
| "Stata": 2, | |||||
| "Stylus": 3, | |||||
| "SubRip Text": 1, | |||||
| "SugarSS": 3, | |||||
| "SuperCollider": 2, | |||||
| "Svelte": 3, | |||||
| "Swift": 2, | |||||
| "SystemVerilog": 2, | |||||
| "TI Program": 2, | |||||
| "TLA": 2, | |||||
| "TOML": 1, | |||||
| "TSQL": 2, | |||||
| "TSX": 2, | |||||
| "TXL": 2, | |||||
| "Tcl": 2, | |||||
| "Tcsh": 2, | |||||
| "TeX": 3, | |||||
| "Tea": 3, | |||||
| "Terra": 2, | |||||
| "Text": 4, | |||||
| "Textile": 4, | |||||
| "Thrift": 2, | |||||
| "Turing": 2, | |||||
| "Turtle": 1, | |||||
| "Twig": 3, | |||||
| "Type Language": 1, | |||||
| "TypeScript": 2, | |||||
| "Unified Parallel C": 2, | |||||
| "Unity3D Asset": 1, | |||||
| "Unix Assembly": 2, | |||||
| "Uno": 2, | |||||
| "UnrealScript": 2, | |||||
| "UrWeb": 2, | |||||
| "VCL": 2, | |||||
| "VHDL": 2, | |||||
| "Vala": 2, | |||||
| "Verilog": 2, | |||||
| "Vim script": 2, | |||||
| "Visual Basic": 2, | |||||
| "Volt": 2, | |||||
| "Vue": 3, | |||||
| "Wavefront Material": 1, | |||||
| "Wavefront Object": 1, | |||||
| "Web Ontology Language": 1, | |||||
| "WebAssembly": 2, | |||||
| "WebIDL": 2, | |||||
| "WebVTT": 1, | |||||
| "Windows Registry Entries": 1, | |||||
| "Wollok": 2, | |||||
| "World of Warcraft Addon Data": 1, | |||||
| "X BitMap": 1, | |||||
| "X Font Directory Index": 1, | |||||
| "X PixMap": 1, | |||||
| "X10": 2, | |||||
| "XC": 2, | |||||
| "XCompose": 1, | |||||
| "XML": 1, | |||||
| "XPages": 1, | |||||
| "XProc": 2, | |||||
| "XQuery": 2, | |||||
| "XS": 2, | |||||
| "XSLT": 2, | |||||
| "Xojo": 2, | |||||
| "Xtend": 2, | |||||
| "YAML": 1, | |||||
| "YANG": 1, | |||||
| "YARA": 2, | |||||
| "YASnippet": 3, | |||||
| "Yacc": 2, | |||||
| "ZAP": 2, | |||||
| "ZIL": 2, | |||||
| "Zeek": 2, | |||||
| "ZenScript": 2, | |||||
| "Zephir": 2, | |||||
| "Zig": 2, | |||||
| "Zimpl": 2, | |||||
| "desktop": 1, | |||||
| "eC": 2, | |||||
| "edn": 1, | |||||
| "fish": 2, | |||||
| "mcfunction": 2, | |||||
| "mupad": 2, | |||||
| "nanorc": 1, | |||||
| "nesC": 2, | |||||
| "ooc": 2, | |||||
| "q": 2, | |||||
| "reStructuredText": 4, | |||||
| "sed": 2, | |||||
| "wdl": 2, | |||||
| "wisp": 2, | |||||
| "xBase": 2, | |||||
| } | |||||
| @@ -1,20 +0,0 @@ | |||||
| dist: trusty | |||||
| language: go | |||||
| go: | |||||
| - '1.11.x' | |||||
| - '1.12.x' | |||||
| env: | |||||
| global: | |||||
| - LD_LIBRARY_PATH="/usr/local/lib":${LD_LIBRARY_PATH} | |||||
| - GO111MODULE=on | |||||
| - ONIGURUMA_VERSION='6.9.1' | |||||
| before_install: # install oniguruma manually as trusty has only ancient 5.x | |||||
| - sudo apt-get install -y dpkg # dpkg >= 1.17.5ubuntu5.8 fixes https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/1730627 | |||||
| - wget "http://archive.ubuntu.com/ubuntu/pool/universe/libo/libonig/libonig5_${ONIGURUMA_VERSION}-1_amd64.deb" | |||||
| - sudo dpkg -i "libonig5_${ONIGURUMA_VERSION}-1_amd64.deb" | |||||
| - wget "http://archive.ubuntu.com/ubuntu/pool/universe/libo/libonig/libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb" | |||||
| - sudo dpkg -i "libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb" | |||||
| script: | |||||
| - go test -v --cover -race | |||||
| @@ -1 +0,0 @@ | |||||
| module github.com/src-d/go-oniguruma | |||||
| @@ -1,12 +1,16 @@ | |||||
| language: go | language: go | ||||
| go: | go: | ||||
| - 1.4 | |||||
| - 1.5 | |||||
| - 1.6 | |||||
| - 1.7 | |||||
| - 1.8 | |||||
| - 1.9 | |||||
| - tip | |||||
| - "1.4.x" | |||||
| - "1.5.x" | |||||
| - "1.6.x" | |||||
| - "1.7.x" | |||||
| - "1.8.x" | |||||
| - "1.9.x" | |||||
| - "1.10.x" | |||||
| - "1.11.x" | |||||
| - "1.12.x" | |||||
| - "1.13.x" | |||||
| - "tip" | |||||
| go_import_path: gopkg.in/yaml.v2 | go_import_path: gopkg.in/yaml.v2 | ||||
| @@ -319,10 +319,14 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm | |||||
| } | } | ||||
| const ( | const ( | ||||
| // 400,000 decode operations is ~500kb of dense object declarations, or ~5kb of dense object declarations with 10000% alias expansion | |||||
| // 400,000 decode operations is ~500kb of dense object declarations, or | |||||
| // ~5kb of dense object declarations with 10000% alias expansion | |||||
| alias_ratio_range_low = 400000 | alias_ratio_range_low = 400000 | ||||
| // 4,000,000 decode operations is ~5MB of dense object declarations, or ~4.5MB of dense object declarations with 10% alias expansion | |||||
| // 4,000,000 decode operations is ~5MB of dense object declarations, or | |||||
| // ~4.5MB of dense object declarations with 10% alias expansion | |||||
| alias_ratio_range_high = 4000000 | alias_ratio_range_high = 4000000 | ||||
| // alias_ratio_range is the range over which we scale allowed alias ratios | // alias_ratio_range is the range over which we scale allowed alias ratios | ||||
| alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) | alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) | ||||
| ) | ) | ||||
| @@ -784,8 +788,7 @@ func (d *decoder) merge(n *node, out reflect.Value) { | |||||
| case mappingNode: | case mappingNode: | ||||
| d.unmarshal(n, out) | d.unmarshal(n, out) | ||||
| case aliasNode: | case aliasNode: | ||||
| an, ok := d.doc.anchors[n.value] | |||||
| if ok && an.kind != mappingNode { | |||||
| if n.alias != nil && n.alias.kind != mappingNode { | |||||
| failWantMap() | failWantMap() | ||||
| } | } | ||||
| d.unmarshal(n, out) | d.unmarshal(n, out) | ||||
| @@ -794,8 +797,7 @@ func (d *decoder) merge(n *node, out reflect.Value) { | |||||
| for i := len(n.children) - 1; i >= 0; i-- { | for i := len(n.children) - 1; i >= 0; i-- { | ||||
| ni := n.children[i] | ni := n.children[i] | ||||
| if ni.kind == aliasNode { | if ni.kind == aliasNode { | ||||
| an, ok := d.doc.anchors[ni.value] | |||||
| if ok && an.kind != mappingNode { | |||||
| if ni.alias != nil && ni.alias.kind != mappingNode { | |||||
| failWantMap() | failWantMap() | ||||
| } | } | ||||
| } else if ni.kind != mappingNode { | } else if ni.kind != mappingNode { | ||||
| @@ -626,31 +626,18 @@ func trace(args ...interface{}) func() { | |||||
| func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { | func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { | ||||
| // While we need more tokens to fetch, do it. | // While we need more tokens to fetch, do it. | ||||
| for { | for { | ||||
| // Check if we really need to fetch more tokens. | |||||
| need_more_tokens := false | |||||
| if parser.tokens_head == len(parser.tokens) { | |||||
| // Queue is empty. | |||||
| need_more_tokens = true | |||||
| } else { | |||||
| // Check if any potential simple key may occupy the head position. | |||||
| if !yaml_parser_stale_simple_keys(parser) { | |||||
| if parser.tokens_head != len(parser.tokens) { | |||||
| // If queue is non-empty, check if any potential simple key may | |||||
| // occupy the head position. | |||||
| head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed] | |||||
| if !ok { | |||||
| break | |||||
| } else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok { | |||||
| return false | return false | ||||
| } | |||||
| for i := range parser.simple_keys { | |||||
| simple_key := &parser.simple_keys[i] | |||||
| if simple_key.possible && simple_key.token_number == parser.tokens_parsed { | |||||
| need_more_tokens = true | |||||
| break | |||||
| } | |||||
| } else if !valid { | |||||
| break | |||||
| } | } | ||||
| } | } | ||||
| // We are finished. | |||||
| if !need_more_tokens { | |||||
| break | |||||
| } | |||||
| // Fetch the next token. | // Fetch the next token. | ||||
| if !yaml_parser_fetch_next_token(parser) { | if !yaml_parser_fetch_next_token(parser) { | ||||
| return false | return false | ||||
| @@ -678,11 +665,6 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { | |||||
| return false | return false | ||||
| } | } | ||||
| // Remove obsolete potential simple keys. | |||||
| if !yaml_parser_stale_simple_keys(parser) { | |||||
| return false | |||||
| } | |||||
| // Check the indentation level against the current column. | // Check the indentation level against the current column. | ||||
| if !yaml_parser_unroll_indent(parser, parser.mark.column) { | if !yaml_parser_unroll_indent(parser, parser.mark.column) { | ||||
| return false | return false | ||||
| @@ -837,29 +819,30 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { | |||||
| "found character that cannot start any token") | "found character that cannot start any token") | ||||
| } | } | ||||
| // Check the list of potential simple keys and remove the positions that | |||||
| // cannot contain simple keys anymore. | |||||
| func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { | |||||
| // Check for a potential simple key for each flow level. | |||||
| for i := range parser.simple_keys { | |||||
| simple_key := &parser.simple_keys[i] | |||||
| // The specification requires that a simple key | |||||
| // | |||||
| // - is limited to a single line, | |||||
| // - is shorter than 1024 characters. | |||||
| if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { | |||||
| // Check if the potential simple key to be removed is required. | |||||
| if simple_key.required { | |||||
| return yaml_parser_set_scanner_error(parser, | |||||
| "while scanning a simple key", simple_key.mark, | |||||
| "could not find expected ':'") | |||||
| } | |||||
| simple_key.possible = false | |||||
| func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) { | |||||
| if !simple_key.possible { | |||||
| return false, true | |||||
| } | |||||
| // The 1.2 specification says: | |||||
| // | |||||
| // "If the ? indicator is omitted, parsing needs to see past the | |||||
| // implicit key to recognize it as such. To limit the amount of | |||||
| // lookahead required, the “:” indicator must appear at most 1024 | |||||
| // Unicode characters beyond the start of the key. In addition, the key | |||||
| // is restricted to a single line." | |||||
| // | |||||
| if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { | |||||
| // Check if the potential simple key to be removed is required. | |||||
| if simple_key.required { | |||||
| return false, yaml_parser_set_scanner_error(parser, | |||||
| "while scanning a simple key", simple_key.mark, | |||||
| "could not find expected ':'") | |||||
| } | } | ||||
| simple_key.possible = false | |||||
| return false, true | |||||
| } | } | ||||
| return true | |||||
| return true, true | |||||
| } | } | ||||
| // Check if a simple key may start at the current position and add it if | // Check if a simple key may start at the current position and add it if | ||||
| @@ -879,13 +862,14 @@ func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { | |||||
| possible: true, | possible: true, | ||||
| required: required, | required: required, | ||||
| token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), | token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), | ||||
| mark: parser.mark, | |||||
| } | } | ||||
| simple_key.mark = parser.mark | |||||
| if !yaml_parser_remove_simple_key(parser) { | if !yaml_parser_remove_simple_key(parser) { | ||||
| return false | return false | ||||
| } | } | ||||
| parser.simple_keys[len(parser.simple_keys)-1] = simple_key | parser.simple_keys[len(parser.simple_keys)-1] = simple_key | ||||
| parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1 | |||||
| } | } | ||||
| return true | return true | ||||
| } | } | ||||
| @@ -900,9 +884,10 @@ func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { | |||||
| "while scanning a simple key", parser.simple_keys[i].mark, | "while scanning a simple key", parser.simple_keys[i].mark, | ||||
| "could not find expected ':'") | "could not find expected ':'") | ||||
| } | } | ||||
| // Remove the key from the stack. | |||||
| parser.simple_keys[i].possible = false | |||||
| delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number) | |||||
| } | } | ||||
| // Remove the key from the stack. | |||||
| parser.simple_keys[i].possible = false | |||||
| return true | return true | ||||
| } | } | ||||
| @@ -912,7 +897,12 @@ const max_flow_level = 10000 | |||||
| // Increase the flow level and resize the simple key list if needed. | // Increase the flow level and resize the simple key list if needed. | ||||
| func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { | func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { | ||||
| // Reset the simple key on the next level. | // Reset the simple key on the next level. | ||||
| parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) | |||||
| parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ | |||||
| possible: false, | |||||
| required: false, | |||||
| token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), | |||||
| mark: parser.mark, | |||||
| }) | |||||
| // Increase the flow level. | // Increase the flow level. | ||||
| parser.flow_level++ | parser.flow_level++ | ||||
| @@ -928,7 +918,9 @@ func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { | |||||
| func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { | func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { | ||||
| if parser.flow_level > 0 { | if parser.flow_level > 0 { | ||||
| parser.flow_level-- | parser.flow_level-- | ||||
| parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] | |||||
| last := len(parser.simple_keys) - 1 | |||||
| delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number) | |||||
| parser.simple_keys = parser.simple_keys[:last] | |||||
| } | } | ||||
| return true | return true | ||||
| } | } | ||||
| @@ -1005,6 +997,8 @@ func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { | |||||
| // Initialize the simple key stack. | // Initialize the simple key stack. | ||||
| parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) | parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) | ||||
| parser.simple_keys_by_tok = make(map[int]int) | |||||
| // A simple key is allowed at the beginning of the stream. | // A simple key is allowed at the beginning of the stream. | ||||
| parser.simple_key_allowed = true | parser.simple_key_allowed = true | ||||
| @@ -1286,7 +1280,11 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { | |||||
| simple_key := &parser.simple_keys[len(parser.simple_keys)-1] | simple_key := &parser.simple_keys[len(parser.simple_keys)-1] | ||||
| // Have we found a simple key? | // Have we found a simple key? | ||||
| if simple_key.possible { | |||||
| if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok { | |||||
| return false | |||||
| } else if valid { | |||||
| // Create the KEY token and insert it into the queue. | // Create the KEY token and insert it into the queue. | ||||
| token := yaml_token_t{ | token := yaml_token_t{ | ||||
| typ: yaml_KEY_TOKEN, | typ: yaml_KEY_TOKEN, | ||||
| @@ -1304,6 +1302,7 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { | |||||
| // Remove the simple key. | // Remove the simple key. | ||||
| simple_key.possible = false | simple_key.possible = false | ||||
| delete(parser.simple_keys_by_tok, simple_key.token_number) | |||||
| // A simple key cannot follow another simple key. | // A simple key cannot follow another simple key. | ||||
| parser.simple_key_allowed = false | parser.simple_key_allowed = false | ||||
| @@ -89,7 +89,7 @@ func UnmarshalStrict(in []byte, out interface{}) (err error) { | |||||
| return unmarshal(in, out, true) | return unmarshal(in, out, true) | ||||
| } | } | ||||
| // A Decorder reads and decodes YAML values from an input stream. | |||||
| // A Decoder reads and decodes YAML values from an input stream. | |||||
| type Decoder struct { | type Decoder struct { | ||||
| strict bool | strict bool | ||||
| parser *parser | parser *parser | ||||
| @@ -579,6 +579,7 @@ type yaml_parser_t struct { | |||||
| simple_key_allowed bool // May a simple key occur at the current position? | simple_key_allowed bool // May a simple key occur at the current position? | ||||
| simple_keys []yaml_simple_key_t // The stack of simple keys. | simple_keys []yaml_simple_key_t // The stack of simple keys. | ||||
| simple_keys_by_tok map[int]int // possible simple_key indexes indexed by token_number | |||||
| // Parser stuff | // Parser stuff | ||||
| @@ -205,6 +205,16 @@ github.com/gliderlabs/ssh | |||||
| # github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a | # github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a | ||||
| ## explicit | ## explicit | ||||
| github.com/glycerine/go-unsnap-stream | github.com/glycerine/go-unsnap-stream | ||||
| # github.com/go-enry/go-enry/v2 v2.3.0 | |||||
| ## explicit | |||||
| github.com/go-enry/go-enry/v2 | |||||
| github.com/go-enry/go-enry/v2/data | |||||
| github.com/go-enry/go-enry/v2/data/rule | |||||
| github.com/go-enry/go-enry/v2/internal/tokenizer | |||||
| github.com/go-enry/go-enry/v2/internal/tokenizer/flex | |||||
| github.com/go-enry/go-enry/v2/regex | |||||
| # github.com/go-enry/go-oniguruma v1.2.0 | |||||
| github.com/go-enry/go-oniguruma | |||||
| # github.com/go-git/gcfg v1.5.0 | # github.com/go-git/gcfg v1.5.0 | ||||
| github.com/go-git/gcfg | github.com/go-git/gcfg | ||||
| github.com/go-git/gcfg/scanner | github.com/go-git/gcfg/scanner | ||||
| @@ -578,16 +588,6 @@ github.com/spf13/jwalterweatherman | |||||
| github.com/spf13/pflag | github.com/spf13/pflag | ||||
| # github.com/spf13/viper v1.4.0 | # github.com/spf13/viper v1.4.0 | ||||
| github.com/spf13/viper | github.com/spf13/viper | ||||
| # github.com/src-d/enry/v2 v2.1.0 | |||||
| ## explicit | |||||
| github.com/src-d/enry/v2 | |||||
| github.com/src-d/enry/v2/data | |||||
| github.com/src-d/enry/v2/data/rule | |||||
| github.com/src-d/enry/v2/internal/tokenizer | |||||
| github.com/src-d/enry/v2/internal/tokenizer/flex | |||||
| github.com/src-d/enry/v2/regex | |||||
| # github.com/src-d/go-oniguruma v1.1.0 | |||||
| github.com/src-d/go-oniguruma | |||||
| # github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 | # github.com/steveyen/gtreap v0.0.0-20150807155958-0abe01ef9be2 | ||||
| ## explicit | ## explicit | ||||
| github.com/steveyen/gtreap | github.com/steveyen/gtreap | ||||
| @@ -803,7 +803,7 @@ gopkg.in/testfixtures.v2 | |||||
| gopkg.in/toqueteos/substring.v1 | gopkg.in/toqueteos/substring.v1 | ||||
| # gopkg.in/warnings.v0 v0.1.2 | # gopkg.in/warnings.v0 v0.1.2 | ||||
| gopkg.in/warnings.v0 | gopkg.in/warnings.v0 | ||||
| # gopkg.in/yaml.v2 v2.2.4 | |||||
| # gopkg.in/yaml.v2 v2.2.8 | |||||
| gopkg.in/yaml.v2 | gopkg.in/yaml.v2 | ||||
| # mvdan.cc/xurls/v2 v2.1.0 | # mvdan.cc/xurls/v2 v2.1.0 | ||||
| ## explicit | ## explicit | ||||