@@ -43,6 +43,7 @@ require ( | |||
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect | |||
github.com/gliderlabs/ssh v0.2.2 | |||
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-git/v5 v5.0.0 | |||
github.com/go-openapi/jsonreference v0.19.3 // indirect | |||
@@ -93,7 +94,6 @@ require ( | |||
github.com/sergi/go-diff v1.1.0 | |||
github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect | |||
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/stretchr/testify v1.4.0 | |||
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/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= | |||
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/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= | |||
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.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= | |||
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/go.mod h1:mjqs7N0Q6m5HpR7QfXVBZXZWSqTjQLeTujjA/xUp2uw= | |||
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.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= | |||
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-20190102054323-c2f93a96b099/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" | |||
"github.com/src-d/enry/v2" | |||
"github.com/go-enry/go-enry/v2" | |||
) | |||
// LanguageStat describes language statistics of a repository | |||
@@ -7,7 +7,7 @@ package analyze | |||
import ( | |||
"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 | |||
@@ -12,10 +12,10 @@ import ( | |||
"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/plumbing" | |||
"github.com/go-git/go-git/v5/plumbing/object" | |||
"github.com/src-d/enry/v2" | |||
) | |||
const fileSizeLimit int64 = 16 * 1024 * 1024 | |||
@@ -30,7 +30,7 @@ import ( | |||
"github.com/blevesearch/bleve/mapping" | |||
"github.com/blevesearch/bleve/search/query" | |||
"github.com/ethantkoenig/rupture" | |||
"github.com/src-d/enry/v2" | |||
"github.com/go-enry/go-enry/v2" | |||
) | |||
const unicodeNormalizeName = "unicodeNormalize" | |||
@@ -1,4 +1,4 @@ | |||
.linguist | |||
.linguist* | |||
benchmarks/output | |||
.ci | |||
Makefile.main | |||
@@ -9,3 +9,4 @@ build/ | |||
vendor/ | |||
java/lib/ | |||
.vscode/ | |||
.venv |
@@ -1,8 +1,9 @@ | |||
dist: trusty | |||
language: go | |||
go: | |||
- '1.12.x' | |||
- '1.11.x' | |||
- '1.14.x' | |||
- '1.13.x' | |||
env: | |||
global: | |||
- GO_VERSION_FOR_JVM='1.11.x' | |||
@@ -12,8 +13,6 @@ env: | |||
matrix: | |||
- ONIGURUMA=0 | |||
- ONIGURUMA=1 | |||
matrix: | |||
fast_finish: true | |||
stages: | |||
- name: test | |||
@@ -22,7 +21,6 @@ stages: | |||
- name: publish | |||
if: tag IS present | |||
stage: test | |||
install: | |||
- > | |||
if [[ "${ONIGURUMA}" -gt 0 ]]; then | |||
@@ -36,7 +34,7 @@ install: | |||
sudo dpkg -i "libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb" | |||
fi; | |||
script: | |||
- make test-coverage | |||
- go test ./... | |||
after_success: | |||
- 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 | |||
- cd ${HOME} | |||
- 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 | |||
deploy: | |||
provider: releases |
@@ -1,3 +1,4 @@ | |||
Apache License | |||
Version 2.0, January 2004 | |||
http://www.apache.org/licenses/ | |||
@@ -178,7 +179,7 @@ | |||
APPENDIX: How to apply the Apache License to your work. | |||
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 | |||
the brackets!) The text should be enclosed in the appropriate | |||
comment syntax for the file format. We also recommend that a | |||
@@ -186,7 +187,7 @@ | |||
same "printed page" as the copyright notice for easier | |||
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"); | |||
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, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
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 | |||
# shared objects | |||
@@ -29,6 +6,7 @@ LINUX_DIR=$(RESOURCES_DIR)/linux-x86-64 | |||
LINUX_SHARED_LIB=$(LINUX_DIR)/libenry.so | |||
DARWIN_DIR=$(RESOURCES_DIR)/darwin | |||
DARWIN_SHARED_LIB=$(DARWIN_DIR)/libenry.dylib | |||
STATIC_LIB=$(RESOURCES_DIR)/libenry.a | |||
HEADER_FILE=libenry.h | |||
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) && \ | |||
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 |
@@ -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" | |||
"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. | |||
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 | |||
tokensLogProbabilities map[string]map[string]float64 | |||
tokensTotal float64 | |||
@@ -24,8 +24,8 @@ type scoredLanguage struct { | |||
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 | |||
if len(candidates) == 0 { | |||
@@ -73,7 +73,7 @@ func sortLanguagesByScore(scoredLangs []*scoredLanguage) []string { | |||
return sortedLanguages | |||
} | |||
func (c *classifier) knownLangs() map[string]float64 { | |||
func (c *naiveBayes) knownLangs() map[string]float64 { | |||
langs := make(map[string]float64, len(c.languagesLogProbabilities)) | |||
for lang := range c.languagesLogProbabilities { | |||
langs[lang]++ | |||
@@ -82,7 +82,7 @@ func (c *classifier) knownLangs() map[string]float64 { | |||
return langs | |||
} | |||
func (c *classifier) tokensLogProbability(tokens []string, language string) float64 { | |||
func (c *naiveBayes) tokensLogProbability(tokens []string, language string) float64 { | |||
var sum float64 | |||
for _, token := range tokens { | |||
sum += c.tokenProbability(token, language) | |||
@@ -91,7 +91,7 @@ func (c *classifier) tokensLogProbability(tokens []string, language string) floa | |||
return sum | |||
} | |||
func (c *classifier) tokenProbability(token, language string) float64 { | |||
func (c *naiveBayes) tokenProbability(token, language string) float64 { | |||
tokenProb, ok := c.tokensLogProbabilities[language][token] | |||
if !ok { | |||
tokenProb = math.Log(1.000000 / c.tokensTotal) |
@@ -6,8 +6,8 @@ import ( | |||
"path/filepath" | |||
"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. | |||
@@ -26,8 +26,8 @@ var DefaultStrategies = []Strategy{ | |||
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, | |||
tokensLogProbabilities: data.TokensLogProbabilities, | |||
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 | |||
// 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) { | |||
return getLanguageByStrategy(GetLanguagesByClassifier, "", content, candidates) | |||
} | |||
@@ -108,10 +108,10 @@ func getFirstLanguageAndSafe(languages []string) (language string, safe bool) { | |||
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. | |||
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) | |||
} | |||
@@ -413,27 +413,28 @@ func GetLanguagesByContent(filename string, content []byte, _ []string) []string | |||
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) { | |||
if len(candidates) == 0 { | |||
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) | |||
for _, candidate := range candidates { | |||
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 { | |||
return data.ExtensionsByLanguage[language] | |||
} | |||
@@ -470,3 +471,12 @@ func GetLanguageByAlias(alias string) (lang string, ok bool) { | |||
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 | |||
@@ -71,11 +71,13 @@ var LanguagesColor = map[string]string{ | |||
"Factor": "#636746", | |||
"Fancy": "#7b9db4", | |||
"Fantom": "#14253c", | |||
"Faust": "#c37240", | |||
"Forth": "#341708", | |||
"Fortran": "#4d41b1", | |||
"FreeMarker": "#0050b2", | |||
"Frege": "#00cafe", | |||
"G-code": "#D08CF2", | |||
"GAML": "#FFC766", | |||
"GDScript": "#355570", | |||
"Game Maker Language": "#71b417", | |||
"Genie": "#fb855d", | |||
@@ -96,6 +98,7 @@ var LanguagesColor = map[string]string{ | |||
"HolyC": "#ffefaf", | |||
"Hy": "#7790B2", | |||
"IDL": "#a3522f", | |||
"IGOR Pro": "#0000cc", | |||
"Idris": "#b30000", | |||
"Io": "#a9188d", | |||
"Ioke": "#078193", | |||
@@ -121,6 +124,7 @@ var LanguagesColor = map[string]string{ | |||
"Lua": "#000080", | |||
"MATLAB": "#e16737", | |||
"MAXScript": "#00a6a6", | |||
"MLIR": "#5EC8DB", | |||
"MQL4": "#62A8D6", | |||
"MQL5": "#4A76B8", | |||
"MTML": "#b7e1f4", | |||
@@ -149,8 +153,10 @@ var LanguagesColor = map[string]string{ | |||
"Objective-C": "#438eff", | |||
"Objective-C++": "#6866fb", | |||
"Objective-J": "#ff0c5a", | |||
"Odin": "#60AFFE", | |||
"Omgrofl": "#cabbff", | |||
"Opal": "#f7ede0", | |||
"OpenQASM": "#AA70FF", | |||
"Oxygene": "#cdd0e3", | |||
"Oz": "#fab738", | |||
"P4": "#7055b5", | |||
@@ -163,7 +169,6 @@ var LanguagesColor = map[string]string{ | |||
"Pawn": "#dbb284", | |||
"Pep8": "#C76F5B", | |||
"Perl": "#0298c3", | |||
"Perl 6": "#0000fb", | |||
"PigLatin": "#fcd7de", | |||
"Pike": "#005390", | |||
"PogoScript": "#d80074", | |||
@@ -184,11 +189,14 @@ var LanguagesColor = map[string]string{ | |||
"RUNOFF": "#665a4e", | |||
"Racket": "#3c5caa", | |||
"Ragel": "#9d5200", | |||
"Raku": "#0000fb", | |||
"Rascal": "#fffaa0", | |||
"Reason": "#ff5847", | |||
"Rebol": "#358a5b", | |||
"Red": "#f50000", | |||
"Ren'Py": "#ff7f7f", | |||
"Ring": "#2D54CB", | |||
"Riot": "#A71E49", | |||
"Roff": "#ecdebe", | |||
"Rouge": "#cc0088", | |||
"Ruby": "#701516", | |||
@@ -204,12 +212,14 @@ var LanguagesColor = map[string]string{ | |||
"Shen": "#120F14", | |||
"Slash": "#007eff", | |||
"Slice": "#003fa2", | |||
"SmPL": "#c94949", | |||
"Smalltalk": "#596706", | |||
"Solidity": "#AA6746", | |||
"SourcePawn": "#5c7611", | |||
"Squirrel": "#800000", | |||
"Stan": "#b2011d", | |||
"Standard ML": "#dc566d", | |||
"Starlark": "#76d275", | |||
"SuperCollider": "#46390b", | |||
"Swift": "#ffac45", | |||
"SystemVerilog": "#DAE1C2", | |||
@@ -220,12 +230,15 @@ var LanguagesColor = map[string]string{ | |||
"Turing": "#cf142b", | |||
"TypeScript": "#2b7489", | |||
"UnrealScript": "#a54c4d", | |||
"V": "#5d87bd", | |||
"VBA": "#867db1", | |||
"VBScript": "#15dcdc", | |||
"VCL": "#148AA8", | |||
"VHDL": "#adb2cb", | |||
"Vala": "#fbe5cd", | |||
"Verilog": "#b2b7f8", | |||
"Vim script": "#199f4b", | |||
"Visual Basic": "#945db7", | |||
"Visual Basic .NET": "#945db7", | |||
"Volt": "#1F1F1F", | |||
"Vue": "#2c3e50", | |||
"WebAssembly": "#04133b", | |||
@@ -243,6 +256,7 @@ var LanguagesColor = map[string]string{ | |||
"Zephir": "#118f9e", | |||
"Zig": "#ec915c", | |||
"eC": "#913960", | |||
"mIRC Script": "#926059", | |||
"mcfunction": "#E22837", | |||
"nesC": "#94B0C7", | |||
"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 | |||
import ( | |||
"regexp" | |||
"github.com/src-d/enry/v2/data/rule" | |||
"github.com/go-enry/go-enry/v2/data/rule" | |||
) | |||
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*[;\(])`), | |||
), | |||
}, | |||
".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{ | |||
rule.Or( | |||
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+)`), | |||
), | |||
}, | |||
".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{ | |||
rule.Or( | |||
rule.MatchingLanguages("ECLiPSe"), | |||
@@ -773,6 +789,10 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
}, | |||
".gs": &Heuristics{ | |||
rule.Or( | |||
rule.MatchingLanguages("GLSL"), | |||
regexp.MustCompile(`(?m)^#version\s+[0-9]+\b`), | |||
), | |||
rule.Or( | |||
rule.MatchingLanguages("Gosu"), | |||
regexp.MustCompile(`(?m)^uses java\.`), | |||
), | |||
@@ -793,6 +813,16 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
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{ | |||
rule.Or( | |||
rule.MatchingLanguages("JSON"), | |||
@@ -804,6 +834,10 @@ var ContentHeuristics = map[string]*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.MatchingLanguages("PHP"), | |||
regexp.MustCompile(`(?m)^<\?(?:php)?`), | |||
), | |||
@@ -931,6 +965,12 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
rule.MatchingLanguages("Roff"), | |||
), | |||
}, | |||
".mask": &Heuristics{ | |||
rule.Or( | |||
rule.MatchingLanguages("Unity3d Asset"), | |||
regexp.MustCompile(`(?m)tag:unity3d.com`), | |||
), | |||
}, | |||
".md": &Heuristics{ | |||
rule.Or( | |||
rule.MatchingLanguages("Markdown"), | |||
@@ -1047,6 +1087,25 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
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{ | |||
rule.Or( | |||
rule.MatchingLanguages("Hack"), | |||
@@ -1067,17 +1126,26 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | |||
), | |||
rule.Or( | |||
rule.MatchingLanguages("Perl 6"), | |||
rule.MatchingLanguages("Raku"), | |||
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{ | |||
rule.Or( | |||
rule.MatchingLanguages("Perl"), | |||
regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | |||
), | |||
rule.Or( | |||
rule.MatchingLanguages("Perl 6"), | |||
rule.MatchingLanguages("Raku"), | |||
regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | |||
), | |||
rule.Or( | |||
@@ -1106,6 +1174,10 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
}, | |||
".pro": &Heuristics{ | |||
rule.Or( | |||
rule.MatchingLanguages("Proguard"), | |||
regexp.MustCompile(`(?m)^-(include\b.*\.pro$|keep\b|keepclassmembers\b|keepattributes\b)`), | |||
), | |||
rule.Or( | |||
rule.MatchingLanguages("Prolog"), | |||
regexp.MustCompile(`(?m)^[^\[#]+:-`), | |||
), | |||
@@ -1216,6 +1288,12 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
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{ | |||
rule.Or( | |||
rule.MatchingLanguages("SuperCollider"), | |||
@@ -1267,7 +1345,7 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
regexp.MustCompile(`(?m)\buse\s+(?:strict\b|v?5\.)`), | |||
), | |||
rule.Or( | |||
rule.MatchingLanguages("Perl 6"), | |||
rule.MatchingLanguages("Raku"), | |||
regexp.MustCompile(`(?m)^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)`), | |||
), | |||
rule.Or( | |||
@@ -1313,13 +1391,27 @@ var ContentHeuristics = map[string]*Heuristics{ | |||
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{ | |||
rule.Or( | |||
rule.MatchingLanguages("Vim script"), | |||
regexp.MustCompile(`(?m)^UseVimball`), | |||
), | |||
rule.Always( | |||
rule.MatchingLanguages("Visual Basic"), | |||
rule.MatchingLanguages("VBA"), | |||
), | |||
}, | |||
".w": &Heuristics{ | |||
@@ -1334,6 +1426,10 @@ var ContentHeuristics = map[string]*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.MatchingLanguages("RPC"), | |||
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 | |||
@@ -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 | |||
@@ -23,7 +23,10 @@ var LanguagesByFilename = map[string][]string{ | |||
".coffeelintignore": {"Ignore List"}, | |||
".cproject": {"XML"}, | |||
".cshrc": {"Shell"}, | |||
".curlrc": {"cURL Config"}, | |||
".cvsignore": {"Ignore List"}, | |||
".dir_colors": {"dircolors"}, | |||
".dircolors": {"dircolors"}, | |||
".dockerignore": {"Ignore List"}, | |||
".editorconfig": {"EditorConfig"}, | |||
".emacs": {"Emacs Lisp"}, | |||
@@ -43,14 +46,17 @@ var LanguagesByFilename = map[string][]string{ | |||
".gvimrc": {"Vim script"}, | |||
".htaccess": {"ApacheConf"}, | |||
".htmlhintrc": {"JSON"}, | |||
".inputrc": {"Readline Config"}, | |||
".irbrc": {"Ruby"}, | |||
".jscsrc": {"JSON with Comments"}, | |||
".jshintrc": {"JSON with Comments"}, | |||
".jslintrc": {"JSON with Comments"}, | |||
".login": {"Shell"}, | |||
".luacheckrc": {"Lua"}, | |||
".nanorc": {"nanorc"}, | |||
".nodemonignore": {"Ignore List"}, | |||
".npmignore": {"Ignore List"}, | |||
".npmrc": {"NPM Config"}, | |||
".nvimrc": {"Vim script"}, | |||
".php": {"PHP"}, | |||
".php_cs": {"PHP"}, | |||
@@ -67,6 +73,7 @@ var LanguagesByFilename = map[string][]string{ | |||
".viper": {"Emacs Lisp"}, | |||
".vscodeignore": {"Ignore List"}, | |||
".watchmanconfig": {"JSON"}, | |||
".wgetrc": {"Wget Config"}, | |||
".zlogin": {"Shell"}, | |||
".zlogout": {"Shell"}, | |||
".zprofile": {"Shell"}, | |||
@@ -77,9 +84,9 @@ var LanguagesByFilename = map[string][]string{ | |||
"App.config": {"XML"}, | |||
"Appraisals": {"Ruby"}, | |||
"BSDmakefile": {"Makefile"}, | |||
"BUCK": {"Python"}, | |||
"BUILD": {"Python"}, | |||
"BUILD.bazel": {"Python"}, | |||
"BUCK": {"Starlark"}, | |||
"BUILD": {"Starlark"}, | |||
"BUILD.bazel": {"Starlark"}, | |||
"Berksfile": {"Ruby"}, | |||
"Brewfile": {"Ruby"}, | |||
"Buildfile": {"Ruby"}, | |||
@@ -91,6 +98,8 @@ var LanguagesByFilename = map[string][]string{ | |||
"Capfile": {"Ruby"}, | |||
"Cargo.lock": {"TOML"}, | |||
"Cask": {"Emacs Lisp"}, | |||
"DEPS": {"Python"}, | |||
"DIR_COLORS": {"dircolors"}, | |||
"Dangerfile": {"Ruby"}, | |||
"Deliverfile": {"Ruby"}, | |||
"Dockerfile": {"Dockerfile"}, | |||
@@ -144,11 +153,14 @@ var LanguagesByFilename = map[string][]string{ | |||
"Snapfile": {"Ruby"}, | |||
"Thorfile": {"Ruby"}, | |||
"Vagrantfile": {"Ruby"}, | |||
"WORKSPACE": {"Python"}, | |||
"WORKSPACE": {"Starlark"}, | |||
"Web.Debug.config": {"XML"}, | |||
"Web.Release.config": {"XML"}, | |||
"Web.config": {"XML"}, | |||
"XCompose": {"XCompose"}, | |||
"_curlrc": {"cURL Config"}, | |||
"_dir_colors": {"dircolors"}, | |||
"_dircolors": {"dircolors"}, | |||
"_emacs": {"Emacs Lisp"}, | |||
"_vimrc": {"Vim script"}, | |||
"abbrev_defs": {"Emacs Lisp"}, | |||
@@ -173,7 +185,9 @@ var LanguagesByFilename = map[string][]string{ | |||
"delete.me": {"Text"}, | |||
"descrip.mmk": {"Module Management System"}, | |||
"descrip.mms": {"Module Management System"}, | |||
"dir_colors": {"dircolors"}, | |||
"encodings.dir": {"X Font Directory Index"}, | |||
"eqnrc": {"Roff"}, | |||
"expr-dist": {"R"}, | |||
"firestore.rules": {"Cloud Firestore Security Rules"}, | |||
"fonts.alias": {"X Font Directory Index"}, | |||
@@ -189,6 +203,7 @@ var LanguagesByFilename = map[string][]string{ | |||
"gvimrc": {"Vim script"}, | |||
"haproxy.cfg": {"HAProxy"}, | |||
"httpd.conf": {"ApacheConf"}, | |||
"inputrc": {"Readline Config"}, | |||
"jsconfig.json": {"JSON with Comments"}, | |||
"keep.me": {"Text"}, | |||
"language-configuration.json": {"JSON with Comments"}, | |||
@@ -212,6 +227,9 @@ var LanguagesByFilename = map[string][]string{ | |||
"nim.cfg": {"Nim"}, | |||
"nvimrc": {"Vim script"}, | |||
"owh": {"Tcl"}, | |||
"package.mask": {"Text"}, | |||
"package.use.mask": {"Text"}, | |||
"package.use.stable.mask": {"Text"}, | |||
"packages.config": {"XML"}, | |||
"pom.xml": {"Maven POM"}, | |||
"profile": {"Shell"}, | |||
@@ -229,10 +247,15 @@ var LanguagesByFilename = map[string][]string{ | |||
"sshd_config": {"SSH Config"}, | |||
"starfield": {"Tcl"}, | |||
"test.me": {"Text"}, | |||
"troffrc": {"Roff"}, | |||
"troffrc-end": {"Roff"}, | |||
"tsconfig.json": {"JSON with Comments"}, | |||
"use.mask": {"Text"}, | |||
"use.stable.mask": {"Text"}, | |||
"vimrc": {"Vim script"}, | |||
"wscript": {"Python"}, | |||
"xcompose": {"XCompose"}, | |||
"yarn.lock": {"YAML"}, | |||
"zlogin": {"Shell"}, | |||
"zlogout": {"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 | |||
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. | |||
@@ -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 | |||
@@ -20,6 +20,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||
"coffee": {"CoffeeScript"}, | |||
"cperl": {"Perl"}, | |||
"crystal": {"Crystal"}, | |||
"csh": {"Tcsh"}, | |||
"csi": {"Scheme"}, | |||
"cvc4": {"SMT"}, | |||
"cwl-runner": {"Common Workflow Language"}, | |||
@@ -36,6 +37,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||
"gawk": {"Awk"}, | |||
"gerbv": {"Gerber Image"}, | |||
"gerbview": {"Gerber Image"}, | |||
"gjs": {"JavaScript"}, | |||
"gn": {"GN"}, | |||
"gnuplot": {"Gnuplot"}, | |||
"gosh": {"Scheme"}, | |||
@@ -57,6 +59,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||
"lua": {"Lua", "Terra"}, | |||
"macruby": {"Ruby"}, | |||
"make": {"Makefile"}, | |||
"makeinfo": {"Texinfo"}, | |||
"mathsat5": {"SMT"}, | |||
"mawk": {"Awk"}, | |||
"minised": {"sed"}, | |||
@@ -77,7 +80,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||
"parrot": {"Parrot Assembly", "Parrot Internal Representation"}, | |||
"pdksh": {"Shell"}, | |||
"perl": {"Perl", "Pod"}, | |||
"perl6": {"Perl 6", "Pod 6"}, | |||
"perl6": {"Pod 6", "Raku"}, | |||
"php": {"PHP"}, | |||
"picolisp": {"PicoLisp"}, | |||
"pike": {"Pike"}, | |||
@@ -86,10 +89,13 @@ var LanguagesByInterpreter = map[string][]string{ | |||
"python": {"Python"}, | |||
"python2": {"Python"}, | |||
"python3": {"Python"}, | |||
"qjs": {"JavaScript"}, | |||
"qmake": {"QMake"}, | |||
"r6rs": {"Scheme"}, | |||
"racket": {"Racket"}, | |||
"rake": {"Ruby"}, | |||
"raku": {"Raku"}, | |||
"rakudo": {"Raku"}, | |||
"rbx": {"Ruby"}, | |||
"rc": {"Shell"}, | |||
"regina": {"REXX"}, | |||
@@ -112,6 +118,7 @@ var LanguagesByInterpreter = map[string][]string{ | |||
"swipl": {"Prolog"}, | |||
"tcc": {"C"}, | |||
"tclsh": {"Tcl"}, | |||
"tcsh": {"Tcsh"}, | |||
"ts-node": {"TypeScript"}, | |||
"v8": {"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 | |||
@@ -13,6 +13,7 @@ var LanguagesMime = map[string]string{ | |||
"Ant Build System": "application/xml", | |||
"Apex": "text/x-java", | |||
"Asymptote": "text/x-kotlin", | |||
"BibTeX": "text/x-stex", | |||
"Brainfuck": "text/x-brainfuck", | |||
"C": "text/x-csrc", | |||
"C#": "text/x-csharp", | |||
@@ -50,7 +51,7 @@ var LanguagesMime = map[string]string{ | |||
"Easybuild": "text/x-python", | |||
"Ecere Projects": "application/json", | |||
"EditorConfig": "text/x-properties", | |||
"Edje Data Collection": "application/json", | |||
"Edje Data Collection": "text/x-c++src", | |||
"Eiffel": "text/x-eiffel", | |||
"Elm": "text/x-elm", | |||
"Emacs Lisp": "text/x-common-lisp", | |||
@@ -146,7 +147,6 @@ var LanguagesMime = map[string]string{ | |||
"PLpgSQL": "text/x-sql", | |||
"Pascal": "text/x-pascal", | |||
"Perl": "text/x-perl", | |||
"Perl 6": "text/x-perl", | |||
"Pic": "text/troff", | |||
"Pod": "text/x-perl", | |||
"PowerShell": "application/x-powershell", | |||
@@ -161,6 +161,7 @@ var LanguagesMime = map[string]string{ | |||
"RHTML": "application/x-erb", | |||
"RMarkdown": "text/x-gfm", | |||
"RPM Spec": "text/x-rpm-spec", | |||
"Raku": "text/x-perl", | |||
"Reason": "text/x-rustsrc", | |||
"Roff": "text/troff", | |||
"Roff Manpage": "text/troff", | |||
@@ -174,6 +175,7 @@ var LanguagesMime = map[string]string{ | |||
"SQLPL": "text/x-sql", | |||
"SRecode Template": "text/x-common-lisp", | |||
"SVG": "text/xml", | |||
"SWIG": "text/x-c++src", | |||
"Sage": "text/x-python", | |||
"SaltStack": "text/x-yaml", | |||
"Sass": "text/x-sass", | |||
@@ -186,6 +188,7 @@ var LanguagesMime = map[string]string{ | |||
"Smarty": "text/x-smarty", | |||
"Squirrel": "text/x-c++src", | |||
"Standard ML": "text/x-ocaml", | |||
"Starlark": "text/x-python", | |||
"Svelte": "text/html", | |||
"Swift": "text/x-swift", | |||
"SystemVerilog": "text/x-systemverilog", | |||
@@ -203,9 +206,12 @@ var LanguagesMime = map[string]string{ | |||
"Unity3D Asset": "text/x-yaml", | |||
"Uno": "text/x-csharp", | |||
"UnrealScript": "text/x-java", | |||
"V": "text/x-go", | |||
"VBA": "text/x-vb", | |||
"VBScript": "text/vbscript", | |||
"VHDL": "text/x-vhdl", | |||
"Verilog": "text/x-verilog", | |||
"Visual Basic": "text/x-vb", | |||
"Visual Basic .NET": "text/x-vb", | |||
"Volt": "text/x-d", | |||
"WebAssembly": "text/x-common-lisp", | |||
"WebIDL": "text/x-webidl", | |||
@@ -214,6 +220,7 @@ var LanguagesMime = map[string]string{ | |||
"X PixMap": "text/x-csrc", | |||
"XC": "text/x-csrc", | |||
"XML": "text/xml", | |||
"XML Property List": "text/xml", | |||
"XPages": "text/xml", | |||
"XProc": "text/xml", | |||
"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 | |||
@@ -19,8 +19,11 @@ var VendorMatchers = substring.Or( | |||
substring.Regexp(`(^|/)ltsugar.m4`), | |||
substring.Regexp(`(^|/)ltversion.m4`), | |||
substring.Regexp(`(^|/)lt~obsolete.m4`), | |||
substring.Regexp(`dotnet-install\.(ps1|sh)$`), | |||
substring.Regexp(`cpplint.py`), | |||
substring.Regexp(`node_modules/`), | |||
substring.Regexp(`(^|/)\.yarn/releases/`), | |||
substring.Regexp(`(^|/)_esy$`), | |||
substring.Regexp(`bower_components/`), | |||
substring.Regexp(`^rebar$`), | |||
substring.Regexp(`erlang.mk`), |
@@ -11,6 +11,6 @@ | |||
Upstream Linguist YAML files are used to generate datastructures for data | |||
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 |
@@ -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 ( | |||
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/toqueteos/trie v1.0.0 // indirect | |||
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/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/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/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= | |||
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/toqueteos/substring.v1 v1.0.2 h1:urLqCeMm6x/eTuQa1oZerNw8N1KNOIp5hD5kGL7lFsE= | |||
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 | |||
// #include <stdlib.h> |
@@ -5,7 +5,7 @@ package tokenizer | |||
import ( | |||
"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 | |||
@@ -18,10 +18,6 @@ func Tokenize(content []byte) []string { | |||
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) | |||
for _, extract := range extractTokens { | |||
var extractedTokens [][]byte | |||
@@ -162,7 +158,7 @@ func extractAndReplaceSGML(content []byte) ([]byte, [][]byte) { | |||
continue | |||
} | |||
token := append(match[1], '>') | |||
token := append(append([]byte(nil), match[1]...), '>') | |||
SGMLTokens = append(SGMLTokens, token) | |||
attributes := getSGMLAttributes(match[0]) | |||
SGMLTokens = append(SGMLTokens, attributes...) |
@@ -2,7 +2,7 @@ | |||
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 | |||
// the Linguist library returns. At most the first ByteLimit bytes of content are tokenized. |
@@ -3,7 +3,7 @@ | |||
package regex | |||
import ( | |||
rubex "github.com/src-d/go-oniguruma" | |||
rubex "github.com/go-enry/go-oniguruma" | |||
) | |||
type EnryRegexp = *rubex.Regexp |
@@ -5,7 +5,7 @@ import ( | |||
"path/filepath" | |||
"strings" | |||
"github.com/src-d/enry/v2/data" | |||
"github.com/go-enry/go-enry/v2/data" | |||
) | |||
const binSniffLen = 8000 | |||
@@ -80,5 +80,9 @@ func GetColor(language string) string { | |||
return color | |||
} | |||
if color, ok := data.LanguagesColor[GetLanguageGroup(language)]; ok { | |||
return color | |||
} | |||
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. | |||
@@ -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. | |||
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 | |||
# linux (debian/ubuntu/...) | |||
sudo apt-get install libonig-dev | |||
@@ -16,5 +17,10 @@ sudo apt-get install libonig-dev | |||
# osx (homebrew) | |||
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 | |||
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 |
@@ -319,10 +319,14 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm | |||
} | |||
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 | |||
// 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 is the range over which we scale allowed alias ratios | |||
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: | |||
d.unmarshal(n, out) | |||
case aliasNode: | |||
an, ok := d.doc.anchors[n.value] | |||
if ok && an.kind != mappingNode { | |||
if n.alias != nil && n.alias.kind != mappingNode { | |||
failWantMap() | |||
} | |||
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-- { | |||
ni := n.children[i] | |||
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() | |||
} | |||
} 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 { | |||
// While we need more tokens to fetch, do it. | |||
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 | |||
} | |||
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. | |||
if !yaml_parser_fetch_next_token(parser) { | |||
return false | |||
@@ -678,11 +665,6 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { | |||
return false | |||
} | |||
// Remove obsolete potential simple keys. | |||
if !yaml_parser_stale_simple_keys(parser) { | |||
return false | |||
} | |||
// Check the indentation level against the current column. | |||
if !yaml_parser_unroll_indent(parser, parser.mark.column) { | |||
return false | |||
@@ -837,29 +819,30 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { | |||
"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 | |||
@@ -879,13 +862,14 @@ func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { | |||
possible: true, | |||
required: required, | |||
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) { | |||
return false | |||
} | |||
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 | |||
} | |||
@@ -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, | |||
"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 | |||
} | |||
@@ -912,7 +897,12 @@ const max_flow_level = 10000 | |||
// Increase the flow level and resize the simple key list if needed. | |||
func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { | |||
// 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. | |||
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 { | |||
if parser.flow_level > 0 { | |||
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 | |||
} | |||
@@ -1005,6 +997,8 @@ func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { | |||
// Initialize the simple key stack. | |||
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. | |||
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] | |||
// 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. | |||
token := yaml_token_t{ | |||
typ: yaml_KEY_TOKEN, | |||
@@ -1304,6 +1302,7 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { | |||
// Remove the simple key. | |||
simple_key.possible = false | |||
delete(parser.simple_keys_by_tok, simple_key.token_number) | |||
// A simple key cannot follow another simple key. | |||
parser.simple_key_allowed = false | |||
@@ -89,7 +89,7 @@ func UnmarshalStrict(in []byte, out interface{}) (err error) { | |||
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 { | |||
strict bool | |||
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_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 | |||
@@ -205,6 +205,16 @@ github.com/gliderlabs/ssh | |||
# github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a | |||
## explicit | |||
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 | |||
github.com/go-git/gcfg/scanner | |||
@@ -578,16 +588,6 @@ github.com/spf13/jwalterweatherman | |||
github.com/spf13/pflag | |||
# github.com/spf13/viper v1.4.0 | |||
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 | |||
## explicit | |||
github.com/steveyen/gtreap | |||
@@ -803,7 +803,7 @@ gopkg.in/testfixtures.v2 | |||
gopkg.in/toqueteos/substring.v1 | |||
# gopkg.in/warnings.v0 v0.1.2 | |||
gopkg.in/warnings.v0 | |||
# gopkg.in/yaml.v2 v2.2.4 | |||
# gopkg.in/yaml.v2 v2.2.8 | |||
gopkg.in/yaml.v2 | |||
# mvdan.cc/xurls/v2 v2.1.0 | |||
## explicit | |||