- Notifications
You must be signed in to change notification settings - Fork0
Language Savant. If your repository's language is being reported incorrectly, send us a pull request!
License
Shenar37/linguist
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This library is used on GitHub.com to detect blob languages, ignore binary or vendored files, suppress generated files in diffs, and generate language breakdown graphs.
SeeTroubleshooting andCONTRIBUTING.md
before filing an issue or creating a pull request.
The Language stats bar displays languages percentages for the files in the repository. The percentages are calculated based on the bytes of code for each language as reported by theList Languages API. If the bar is reporting a language that you don't expect:
- Click on the name of the language in the stats bar to see a list of the files that are identified as that language.
- If you see files that you didn't write, consider moving the files into one of thepaths for vendored code, or use themanual overrides feature to ignore them.
- If the files are being misclassified, search foropen issues to see if anyone else has already reported the issue. Any information you can add, especially links to public repositories, is helpful.
- If there are no reported issues of this misclassification,open an issue and include a link to the repository or a sample of the code that is being misclassified.
Linguist supports a number of different custom overrides strategies for language definitions and vendored paths.
Add a.gitattributes
file to your project and use standard git-style path matchers for the files you want to override to setlinguist-documentation
,linguist-language
, andlinguist-vendored
..gitattributes
will be used to determine language statistics, but will not be used to syntax highlight files. To manually set syntax highlighting, useVim or Emacs modelines.
$ cat .gitattributes*.rb linguist-language=Java
Checking code you didn't write, such as JavaScript libraries, into your git repo is a common practice, but this often inflates your project's language stats and may even cause your project to be labeled as another language. By default, Linguist treats all of the paths defined inlib/linguist/vendor.yml as vendored and therefore doesn't include them in the language statistics for a repository.
Use thelinguist-vendored
attribute to vendor or un-vendor paths.
$ cat .gitattributesspecial-vendored-path/* linguist-vendoredjquery.js linguist-vendored=false
Just like vendored files, Linguist excludes documentation files from your project's language stats.lib/linguist/documentation.yml lists common documentation paths and excludes them from the language statistics for your repository.
Use thelinguist-documentation
attribute to mark or unmark paths as documentation.
$ cat .gitattributesproject-docs/* linguist-documentationdocs/formatter.rb linguist-documentation=false
Not all plain text files are true source files. Generated files like minified js and compiled CoffeeScript can be detected and excluded from language stats. As an added bonus, unlike vendored and documentation files, these files are suppressed in diffs.
Linguist::FileBlob.new("underscore.min.js").generated?# => true
SeeLinguist::Generated#generated?.
Alternatively, you can use Vim or Emacs style modelines to set the language for a single file. Modelines can be placed anywhere within a file and are respected when determining how to syntax-highlight a file on GitHub.com
# Some examples of various styles:vim: syntax=javavim: set syntax=ruby:vim: set filetype=prolog:vim: set ft=cpp:
-*- mode: php;-*-
Install the gem:
$ gem install github-linguist
Then use it in your application:
require'rugged'require'linguist'repo=Rugged::Repository.new('.')project=Linguist::Repository.new(repo,repo.head.target_id)project.language#=> "Ruby"project.languages#=> { "Ruby" => 119387 }
These stats are also printed out by thelinguist
executable. You can use the--breakdown
flag, and the binary will also output the breakdown of files by language.
You can try runninglinguist
on the root directory in this repository itself:
$ bundle exec linguist --breakdown100.00% RubyRuby:GemfileRakefilebin/linguistgithub-linguist.gemspeclib/linguist.rb…
Please check out ourcontributing guidelines.
The language grammars included in this gem are covered by their repositories'respective licenses.grammars.yml
specifies the repository for each grammar.
All other files are covered by the MIT license, seeLICENSE
.
About
Language Savant. If your repository's language is being reported incorrectly, send us a pull request!
Topics
Resources
License
Stars
Watchers
Forks
Packages0
Languages
- Ruby99.6%
- Shell0.4%