Skip to content

stof/linguist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linguist

We use this library on GitHub to detect file language types for syntax highlighting, ignore binary files, suppress generated code in diffs and generate language breakdown graphs.

Features

Language detection

  • Common extensions
  • Shebang
  • C header files (C/C++/Obj-C)

Binary detection

Generated file detection

  • Generated JS files (minified js, compiled CoffeeScript)
  • Generated config files (Xcode project files and nibs)

Ignore vendored libs

  • Ignores common vendored libs conventions (deps/, vendor/, jquery, prototype)

Stats

  • Generates project LOC stats

Usage

file = Linguist::SourceFile.new("linguist.rb")
file.language.name #=> "Ruby"

file = Linguist::SourceFile.new("linguist.gem")
file.binary? #=> true

project = Linguist::Project.new(".")
project.language.name  #=> "Ruby"
project.language_stats #=> { "Ruby" => 0.98, "Shell" => 0.02 }

# Using Grit backend
repo = Grit::Repo.new("./.git")
project = Linguist::Project.new(repo)

Contributing

Once you've made your great commits:

  1. Fork it.
  2. Create a branch (git checkout -b detect-foo-language)
  3. Commit your changes (git commit -am "Added detection for the new Foo language")
  4. Push to the branch (git push origin detect-foo-language)
  5. Create a Pull Request from your branch.
  6. Promote it. Mention a public repository to demostration the value of your changes. Get others to drop in and 👍 it.

About

Language Savant

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 99.6%
  • Shell 0.4%