mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add github-linguist-grammars gem
The purpose of this gem is to package up the language grammars that are used for syntax highlighting on github.com. The grammars are TextMate, Sublime Text, or Atom language grammars, converted to JSON and given the filename SCOPE.json, where SCOPE is the language scope that the grammar defines. The github-linguist-grammars gem packages up all the grammars, and also exports a Linguist::Grammars.path method to locate the directory containing the grammars. To build the gem, simply run `rake build_grammars_gem`. The grammars.yml file lists all the repositories we download grammars from, as well as which scopes are defined by each repository. The script/download-grammars script takes that list and downloads and processes the grammars into the format expected by the gem.
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -2,3 +2,5 @@ Gemfile.lock | ||||
| .bundle/ | ||||
| benchmark/ | ||||
| lib/linguist/samples.json | ||||
| /grammars | ||||
| /node_modules | ||||
|   | ||||
							
								
								
									
										3
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Gemfile
									
									
									
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| source 'https://rubygems.org' | ||||
| gemspec | ||||
| gemspec :name => "github-linguist" | ||||
| gemspec :name => "github-linguist-grammars" | ||||
| gem 'test-unit', require: false if RUBY_VERSION >= '2.2' | ||||
|   | ||||
							
								
								
									
										6
									
								
								Rakefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Rakefile
									
									
									
									
									
								
							| @@ -31,6 +31,12 @@ task :build_gem => :samples do | ||||
|   File.delete("lib/linguist/languages.json") | ||||
| end | ||||
|  | ||||
| task :build_grammars_gem do | ||||
|   rm_rf "grammars" | ||||
|   sh "script/download-grammars" | ||||
|   sh "gem", "build", "github-linguist-grammars.gemspec" | ||||
| end | ||||
|  | ||||
| namespace :benchmark do | ||||
|   benchmark_path = "benchmark/results" | ||||
|  | ||||
|   | ||||
							
								
								
									
										14
									
								
								github-linguist-grammars.gemspec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								github-linguist-grammars.gemspec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| require File.expand_path('../lib/linguist/version', __FILE__) | ||||
|  | ||||
| Gem::Specification.new do |s| | ||||
|   s.name    = 'github-linguist-grammars' | ||||
|   s.version = Linguist::VERSION | ||||
|   s.summary = "Language grammars for use with github-linguist" | ||||
|  | ||||
|   s.authors  = "GitHub" | ||||
|   s.homepage = "https://github.com/github/linguist" | ||||
|  | ||||
|   s.files = ['lib/linguist/grammars.rb'] + Dir['grammars/*'] | ||||
|  | ||||
|   s.add_development_dependency 'plist', '~>3.1' | ||||
| end | ||||
| @@ -10,7 +10,7 @@ Gem::Specification.new do |s| | ||||
|   s.homepage = "https://github.com/github/linguist" | ||||
|   s.license  = "MIT" | ||||
|  | ||||
|   s.files = Dir['lib/**/*'] | ||||
|   s.files = Dir['lib/**/*'] - ['lib/linguist/grammars.rb'] | ||||
|   s.executables << 'linguist' | ||||
|  | ||||
|   s.add_dependency 'charlock_holmes', '~> 0.7.3' | ||||
|   | ||||
							
								
								
									
										610
									
								
								grammars.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										610
									
								
								grammars.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,610 @@ | ||||
| --- | ||||
| http://hww3.riverweb.com/dist/Pike_TextMate.tar.gz: | ||||
| - source.pike | ||||
| http://svn.edgewall.org/repos/genshi/contrib/textmate/Genshi.tmbundle/Syntaxes/Markup%20Template%20%28XML%29.tmLanguage: | ||||
| - text.xml.genshi | ||||
| http://svn.textmate.org/trunk/Review/Bundles/BlitzMax.tmbundle: | ||||
| - source.blitzmax | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Cron.tmbundle: | ||||
| - text.crontab | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Cython.tmbundle: | ||||
| - source.cython | ||||
| http://svn.textmate.org/trunk/Review/Bundles/F%20Sharp.tmbundle: | ||||
| - source.fsharp | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Forth.tmbundle: | ||||
| - source.forth | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Google%20Code.tmbundle: | ||||
| - text.html.googlecodewiki | ||||
| http://svn.textmate.org/trunk/Review/Bundles/JUNOScript.tmbundle: | ||||
| - source.slax | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Java%20Velocity.tmbundle: | ||||
| - text.html.velocity | ||||
| - text.velocity | ||||
| http://svn.textmate.org/trunk/Review/Bundles/K.tmbundle: | ||||
| - source.k | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Limbo.tmbundle: | ||||
| - source.limbo | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Maude.tmbundle: | ||||
| - source.maude | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Mx.tmbundle: | ||||
| - source.mx | ||||
| http://svn.textmate.org/trunk/Review/Bundles/PDB.tmbundle: | ||||
| - source.pdb | ||||
| http://svn.textmate.org/trunk/Review/Bundles/PHP%20Cake.tmbundle: | ||||
| - text.html.php.cake | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Parrot.tmbundle: | ||||
| - source.parrot.pir | ||||
| http://svn.textmate.org/trunk/Review/Bundles/RelaxNG.tmbundle: | ||||
| - source.rnc | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Ruby%20Sass.tmbundle: | ||||
| - source.sass | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Ruby%20Shoulda.tmbundle: | ||||
| - source.ruby.rails.shoulda | ||||
| http://svn.textmate.org/trunk/Review/Bundles/SecondLife%20LSL.tmbundle: | ||||
| - source.lsl | ||||
| http://svn.textmate.org/trunk/Review/Bundles/TYPO3.tmbundle: | ||||
| - source.typoscript | ||||
| - text.xml.t3datastructure | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Taskmate.tmbundle: | ||||
| - text.taskmate | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Tasks.tmbundle: | ||||
| - text.tasks | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Treetop.tmbundle: | ||||
| - source.treetop | ||||
| http://svn.textmate.org/trunk/Review/Bundles/VHDL.tmbundle: | ||||
| - source.vhdl | ||||
| http://svn.textmate.org/trunk/Review/Bundles/Wikidot.tmbundle: | ||||
| - text.html.wikidot | ||||
| http://svn.textmate.org/trunk/Review/Bundles/XQuery.tmbundle: | ||||
| - source.xquery | ||||
| http://svn.textmate.org/trunk/Review/Bundles/iPhone.tmbundle: | ||||
| - source.objc.iPhone | ||||
| https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz: | ||||
| - source.systemverilog | ||||
| - source.ucfconstraints | ||||
| https://bitbucket.org/bitlang/sublime_cobol/raw/b0e9c44ac5f7a2fb553421aa986b35854cbfda4a/COBOL.tmLanguage: | ||||
| - source.cobol | ||||
| https://fan.googlecode.com/hg-history/Build%201.0.55/adm/tools/textmate/Fan.tmbundle/Syntaxes/Fan.tmLanguage: | ||||
| - source.fan | ||||
| https://github.com/AlanQuatermain/go-tmbundle: | ||||
| - source.go | ||||
| https://github.com/Anomareh/PHP-Twig.tmbundle: | ||||
| - text.html.twig | ||||
| https://github.com/Cirru/sublime-cirru/raw/master/Cirru.tmLanguage: | ||||
| - source.cirru | ||||
| https://github.com/Cykey/Sublime-Logos: | ||||
| - source.logos | ||||
| https://github.com/Drako/SublimeBrainfuck/raw/master/Brainfuck.tmLanguage: | ||||
| - source.bf | ||||
| https://github.com/JohnNilsson/awk-sublime/raw/master/AWK.tmLanguage: | ||||
| - source.awk | ||||
| https://github.com/Oldes/Sublime-REBOL: | ||||
| - source.rebol | ||||
| https://github.com/PogiNate/Sublime-Inform/raw/master/Inform7/inform7.tmLanguage: | ||||
| - source.Inform7 | ||||
| https://github.com/Red-Nova-Technologies/autoitv3-tmbundle: | ||||
| - source.autoit.3 | ||||
| https://github.com/SalGnt/Sublime-VimL: | ||||
| - source.viml | ||||
| https://github.com/Shammah/boo-sublime/raw/master/Boo.tmLanguage: | ||||
| - source.boo | ||||
| https://github.com/SublimeText/ColdFusion: | ||||
| - source.cfscript | ||||
| - source.cfscript.cfc | ||||
| - text.cfml.basic | ||||
| - text.html.cfm | ||||
| https://github.com/SublimeText/Kotlin/raw/master/Kotlin.tmLanguage: | ||||
| - source.Kotlin | ||||
| https://github.com/SublimeText/NSIS: | ||||
| - source.nsis | ||||
| https://github.com/Varriount/NimLime: | ||||
| - source.nimrod | ||||
| - source.nimrod_filter | ||||
| - source.nimrodcfg | ||||
| https://github.com/angryant0007/VBDotNetSyntax: | ||||
| - source.vbnet | ||||
| https://github.com/aroben/ada.tmbundle/raw/c45eed4d5f98fe3bcbbffbb9e436601ab5bbde4b/Syntaxes/Ada.plist: | ||||
| - source.ada | ||||
| https://github.com/aroben/ruby.tmbundle@4636a3023153c3034eb6ffc613899ba9cf33b41f: | ||||
| - source.ruby | ||||
| - text.html.erb | ||||
| https://github.com/asbjornenge/Docker.tmbundle: | ||||
| - source.dockerfile | ||||
| https://github.com/atom/language-coffee-script: | ||||
| - source.coffee | ||||
| - source.litcoffee | ||||
| https://github.com/atom/language-csharp: | ||||
| - source.cs | ||||
| - source.csx | ||||
| - source.nant-build | ||||
| https://github.com/atom/language-javascript: | ||||
| - source.js | ||||
| - source.js.regexp | ||||
| https://github.com/atom/language-python: | ||||
| - source.python | ||||
| - source.regexp.python | ||||
| - text.python.traceback | ||||
| https://github.com/atom/language-shellscript: | ||||
| - source.shell | ||||
| - text.shell-session | ||||
| https://github.com/austinwagner/sublime-sourcepawn: | ||||
| - source.sp | ||||
| https://github.com/bfad/Sublime-Lasso: | ||||
| - file.lasso | ||||
| https://github.com/bholt/chapel-tmbundle: | ||||
| - source.chapel | ||||
| https://github.com/brandonwamboldt/sublime-nginx: | ||||
| - source.nginx | ||||
| https://github.com/carsonoid/sublime_man_page_support/raw/master/man-groff.tmLanguage: | ||||
| - text.groff | ||||
| https://github.com/ccreutzig/sublime-MuPAD: | ||||
| - source.mupad | ||||
| https://github.com/cdwilson/nesC.tmbundle: | ||||
| - source.nesc | ||||
| https://github.com/clemos/haxe-sublime-bundle: | ||||
| - source.erazor | ||||
| - source.haxe.2 | ||||
| - source.hss.1 | ||||
| - source.hxml | ||||
| - source.nmml | ||||
| https://github.com/cucumber/cucumber-tmbundle: | ||||
| - source.ruby.rspec.cucumber.steps | ||||
| - text.gherkin.feature | ||||
| https://github.com/daaain/Handlebars/raw/master/Handlebars.tmLanguage: | ||||
| - text.html.handlebars | ||||
| https://github.com/davidpeckham/powershell.tmbundle: | ||||
| - source.powershell | ||||
| https://github.com/davidrios/jade-tmbundle: | ||||
| - source.jade | ||||
| - source.pyjade | ||||
| https://github.com/elixir-lang/elixir-tmbundle: | ||||
| - source.elixir | ||||
| - text.elixir | ||||
| - text.html.elixir | ||||
| https://github.com/ericzou/ebundles/raw/master/Bundles/MSDOS%20batch%20file.tmbundle/Syntaxes/MSDOS%20batch%20file.tmLanguage: | ||||
| - source.dosbatch | ||||
| https://github.com/euler0/sublime-glsl/raw/master/GLSL.tmLanguage: | ||||
| - source.glsl | ||||
| https://github.com/fancy-lang/fancy-tmbundle: | ||||
| - source.fancy | ||||
| https://github.com/gingerbeardman/monkey.tmbundle: | ||||
| - source.monkey | ||||
| https://github.com/guillermooo/dart-sublime-bundle/raw/master/Dart.tmLanguage: | ||||
| - source.dart | ||||
| https://github.com/harrism/sublimetext-cuda-cpp/raw/master/cuda-c%2B%2B.tmLanguage: | ||||
| - source.cuda-c++ | ||||
| https://github.com/infininight/turtle.tmbundle: | ||||
| - source.sparql | ||||
| - source.turtle | ||||
| https://github.com/jeancharles-roger/ceylon-sublimetext/raw/master/Ceylon.tmLanguage: | ||||
| - source.ceylon | ||||
| https://github.com/jfairbank/Sublime-Text-2-OpenEdge-ABL: | ||||
| - source.abl | ||||
| https://github.com/jhasse/sublime-rust: | ||||
| - source.rust | ||||
| https://github.com/johanasplund/sublime-befunge/raw/master/Befunge-93.tmLanguage: | ||||
| - source.befunge | ||||
| https://github.com/joshaven/RDoc.tmbundle: | ||||
| - text.rdoc | ||||
| https://github.com/jpcamara/Textmate-Gosu-Bundle/raw/master/Gosu.tmbundle/Syntaxes/Gosu.tmLanguage: | ||||
| - source.gosu.2 | ||||
| https://github.com/kraih/mojo.tmbundle: | ||||
| - source.perl.mojolicious | ||||
| - text.html.mojolicious | ||||
| https://github.com/kswedberg/jquery-tmbundle: | ||||
| - source.js.jquery | ||||
| https://github.com/kuroir/SCSS.tmbundle: | ||||
| - source.scss | ||||
| https://github.com/laughedelic/sublime-idris/raw/master/Idris.tmLanguage: | ||||
| - source.idris | ||||
| https://github.com/lavrton/sublime-better-typescript: | ||||
| - source.ts | ||||
| https://github.com/leafo/moonscript-tmbundle: | ||||
| - source.moonscript | ||||
| https://github.com/lunixbochs/x86-assembly-textmate-bundle: | ||||
| - source.asm.x86 | ||||
| https://github.com/macekond/Alloy.tmbundle: | ||||
| - source.alloy | ||||
| https://github.com/mads379/opa.tmbundle: | ||||
| - source.opa | ||||
| https://github.com/mads379/scala.tmbundle: | ||||
| - source.sbt | ||||
| - source.scala | ||||
| https://github.com/marconi/mako-tmbundle: | ||||
| - text.html.mako | ||||
| https://github.com/mattfoster/gnuplot-tmbundle: | ||||
| - source.gnuplot | ||||
| https://github.com/mgalloy/idl.tmbundle: | ||||
| - source.idl | ||||
| - source.idl-dlm | ||||
| - text.idl-idldoc | ||||
| https://github.com/michaeledgar/protobuf-tmbundle: | ||||
| - source.protobuf | ||||
| https://github.com/mkolosick/Sublime-Coq/raw/master/Coq.tmLanguage: | ||||
| - source.coq | ||||
| https://github.com/mokus0/Agda.tmbundle: | ||||
| - source.agda | ||||
| https://github.com/mxcl/Roole.tmBundle: | ||||
| - source.roole | ||||
| https://github.com/nanoant/Julia.tmbundle: | ||||
| - source.julia | ||||
| https://github.com/nanoant/assembly.tmbundle/raw/master/Syntaxes/objdump%20C%2B%2B.tmLanguage: | ||||
| - objdump.x86asm | ||||
| https://github.com/nasser/arduino.tmbundle: | ||||
| - source.c++.arduino | ||||
| https://github.com/nilium/ooc.tmbundle: | ||||
| - source.ooc | ||||
| https://github.com/paulmillr/LiveScript.tmbundle: | ||||
| - source.livescript | ||||
| https://github.com/pferruggiaro/sublime-tea: | ||||
| - source.tea | ||||
| https://github.com/puppet-textmate-bundle/puppet-textmate-bundle: | ||||
| - source.puppet | ||||
| https://github.com/pvl/abap.tmbundle: | ||||
| - source.abap | ||||
| https://github.com/rspec/rspec-tmbundle: | ||||
| - source.ruby.rspec | ||||
| https://github.com/scalate/Scalate.tmbundle: | ||||
| - source.scaml | ||||
| - text.html.ssp | ||||
| https://github.com/shadanan/mathematica-tmbundle: | ||||
| - source.mathematica | ||||
| https://github.com/shellderp/sublime-robot-plugin: | ||||
| - text.robot | ||||
| https://github.com/simongregory/actionscript3-tmbundle: | ||||
| - source.actionscript.3 | ||||
| - text.html.asdoc | ||||
| - text.xml.flex-config | ||||
| https://github.com/simongregory/flex-tmbundle: | ||||
| - text.xml.mxml | ||||
| https://github.com/skozlovf/Sublime-QML: | ||||
| - source.qml | ||||
| https://github.com/skurfer/LDIF.tmbundle: | ||||
| - text.ldif | ||||
| https://github.com/slash-lang/Slash.tmbundle: | ||||
| - text.html.slash | ||||
| https://github.com/slavapestov/factor/raw/master/misc/Factor.tmbundle/Syntaxes/Factor.tmLanguage: | ||||
| - source.factor | ||||
| https://github.com/slim-template/ruby-slim.tmbundle: | ||||
| - text.slim | ||||
| https://github.com/smiledawgg/Bro.tmbundle: | ||||
| - source.bro | ||||
| - source.bro.sig | ||||
| https://github.com/staltz/SublimeXtend: | ||||
| - source.xtend | ||||
| https://github.com/statatmbundle/Stata.tmbundle: | ||||
| - source.mata | ||||
| - source.stata | ||||
| https://github.com/swannodette/textmate-clojure: | ||||
| - source.clojure | ||||
| https://github.com/technosophos/Vala-TMBundle: | ||||
| - source.vala | ||||
| https://github.com/textmate/Mustache.tmbundle: | ||||
| - text.html.mustache | ||||
| https://github.com/textmate/actionscript.tmbundle: | ||||
| - source.actionscript.2 | ||||
| https://github.com/textmate/active4d.tmbundle: | ||||
| - source.active4d | ||||
| - source.active4d.library | ||||
| - text.active4d-ini | ||||
| - text.html.strict.active4d | ||||
| https://github.com/textmate/ant.tmbundle: | ||||
| - text.xml.ant | ||||
| https://github.com/textmate/antlr.tmbundle: | ||||
| - source.antlr | ||||
| https://github.com/textmate/apache.tmbundle: | ||||
| - source.apache-config | ||||
| - source.apache-config.mod_perl | ||||
| https://github.com/textmate/applescript.tmbundle: | ||||
| - source.applescript | ||||
| https://github.com/textmate/asp.tmbundle: | ||||
| - source.asp | ||||
| - text.html.asp | ||||
| https://github.com/textmate/asp.vb.net.tmbundle: | ||||
| - source.asp.vb.net | ||||
| - text.html.asp.net | ||||
| https://github.com/textmate/bison.tmbundle: | ||||
| - source.bison | ||||
| https://github.com/textmate/blogging.tmbundle: | ||||
| - text.blog | ||||
| - text.blog.html | ||||
| - text.blog.markdown | ||||
| - text.blog.textile | ||||
| https://github.com/textmate/bulletin-board.tmbundle: | ||||
| - text.bbcode | ||||
| https://github.com/textmate/bundle-development.tmbundle: | ||||
| - source.plist.textmate.grammar | ||||
| - source.plist.textmate.settings | ||||
| - text.tm-scope | ||||
| - text.tm-snippet | ||||
| https://github.com/textmate/c.tmbundle: | ||||
| - source.c | ||||
| - source.c++ | ||||
| https://github.com/textmate/capnproto.tmbundle: | ||||
| - source.capnp | ||||
| https://github.com/textmate/cmake.tmbundle: | ||||
| - source.cache.cmake | ||||
| - source.cmake | ||||
| https://github.com/textmate/context-free.tmbundle: | ||||
| - source.context-free | ||||
| https://github.com/textmate/cpp-qt.tmbundle: | ||||
| - source.c++.qt | ||||
| - source.qmake | ||||
| https://github.com/textmate/css.tmbundle: | ||||
| - source.css | ||||
| https://github.com/textmate/d.tmbundle: | ||||
| - source.d | ||||
| https://github.com/textmate/diff.tmbundle: | ||||
| - source.diff | ||||
| https://github.com/textmate/dokuwiki.tmbundle: | ||||
| - text.html.dokuwiki | ||||
| https://github.com/textmate/doxygen.tmbundle: | ||||
| - text.html.doxygen | ||||
| https://github.com/textmate/dylan.tmbundle: | ||||
| - source.dylan | ||||
| - source.lid | ||||
| - source.makegen | ||||
| https://github.com/textmate/eiffel.tmbundle: | ||||
| - source.eiffel | ||||
| https://github.com/textmate/erlang.tmbundle: | ||||
| - source.erlang | ||||
| - text.html.erlang.yaws | ||||
| https://github.com/textmate/f-script.tmbundle: | ||||
| - source.fscript | ||||
| https://github.com/textmate/fortran.tmbundle: | ||||
| - source.fortran | ||||
| - source.fortran.modern | ||||
| https://github.com/textmate/fxscript.tmbundle: | ||||
| - source.fxscript | ||||
| https://github.com/textmate/gettext.tmbundle: | ||||
| - source.po | ||||
| https://github.com/textmate/git.tmbundle: | ||||
| - source.git-config | ||||
| - text.git-commit | ||||
| - text.git-rebase | ||||
| https://github.com/textmate/graphviz.tmbundle: | ||||
| - source.dot | ||||
| https://github.com/textmate/greasemonkey.tmbundle: | ||||
| - source.js.greasemonkey | ||||
| https://github.com/textmate/gri.tmbundle: | ||||
| - source.gri | ||||
| https://github.com/textmate/groovy-grails.tmbundle: | ||||
| - text.html.grails | ||||
| https://github.com/textmate/groovy.tmbundle: | ||||
| - source.groovy | ||||
| https://github.com/textmate/gtd2.tmbundle: | ||||
| - text.html.markdown.wiki.gtd | ||||
| https://github.com/textmate/gtdalt.tmbundle: | ||||
| - text.gtdalt | ||||
| https://github.com/textmate/haskell.tmbundle: | ||||
| - source.haskell | ||||
| - text.tex.latex.haskell | ||||
| https://github.com/textmate/html.tmbundle: | ||||
| - text.html.basic | ||||
| https://github.com/textmate/hyperlink-helper.tmbundle: | ||||
| - text.hyperlink | ||||
| https://github.com/textmate/icalendar.tmbundle: | ||||
| - source.icalendar | ||||
| https://github.com/textmate/inform.tmbundle: | ||||
| - source.inform | ||||
| https://github.com/textmate/ini.tmbundle: | ||||
| - source.ini | ||||
| https://github.com/textmate/installer.tmbundle: | ||||
| - text.xml.apple-dist | ||||
| https://github.com/textmate/io.tmbundle: | ||||
| - source.io | ||||
| https://github.com/textmate/java.tmbundle: | ||||
| - source.java | ||||
| - source.java-properties | ||||
| - text.html.jsp | ||||
| - text.junit-test-report | ||||
| https://github.com/textmate/javadoc.tmbundle: | ||||
| - text.html.javadoc | ||||
| https://github.com/textmate/javascript-flash.tmbundle: | ||||
| - source.js.jsfl | ||||
| https://github.com/textmate/javascript-mootools.tmbundle: | ||||
| - source.js.mootools | ||||
| https://github.com/textmate/javascript-objective-j.tmbundle: | ||||
| - source.js.objj | ||||
| https://github.com/textmate/javascript-prototype-and-script.aculo.us.tmbundle: | ||||
| - source.js.prototype | ||||
| - source.js.prototype.bracketed | ||||
| https://github.com/textmate/javascript-yui.tmbundle: | ||||
| - source.js.yui | ||||
| https://github.com/textmate/json.tmbundle: | ||||
| - source.json | ||||
| https://github.com/textmate/latex.tmbundle: | ||||
| - text.bibtex | ||||
| - text.log.latex | ||||
| - text.tex | ||||
| - text.tex.latex | ||||
| - text.tex.latex.beamer | ||||
| - text.tex.latex.memoir | ||||
| https://github.com/textmate/less.tmbundle: | ||||
| - source.css.less | ||||
| https://github.com/textmate/lex-flex.tmbundle: | ||||
| - source.lex | ||||
| https://github.com/textmate/lighttpd.tmbundle: | ||||
| - source.lighttpd-config | ||||
| https://github.com/textmate/lilypond.tmbundle: | ||||
| - source.lilypond | ||||
| https://github.com/textmate/lisp.tmbundle: | ||||
| - source.lisp | ||||
| https://github.com/textmate/logo.tmbundle: | ||||
| - source.logo | ||||
| https://github.com/textmate/logtalk.tmbundle: | ||||
| - source.logtalk | ||||
| https://github.com/textmate/lua.tmbundle: | ||||
| - source.lua | ||||
| https://github.com/textmate/macports.tmbundle: | ||||
| - source.tcl.macports | ||||
| https://github.com/textmate/mail.tmbundle: | ||||
| - text.mail | ||||
| - text.mail.markdown | ||||
| https://github.com/textmate/make.tmbundle: | ||||
| - source.makefile | ||||
| https://github.com/textmate/man-pages.tmbundle: | ||||
| - text.man | ||||
| https://github.com/textmate/markdown.tmbundle: | ||||
| - text.html.markdown | ||||
| https://github.com/textmate/matlab.tmbundle: | ||||
| - source.matlab | ||||
| - source.octave | ||||
| https://github.com/textmate/maven.tmbundle: | ||||
| - text.xml.pom | ||||
| https://github.com/textmate/mediawiki.tmbundle: | ||||
| - text.html.mediawiki | ||||
| https://github.com/textmate/mel.tmbundle: | ||||
| - source.mel | ||||
| https://github.com/textmate/mercurial.tmbundle: | ||||
| - text.hg-commit | ||||
| https://github.com/textmate/mips.tmbundle: | ||||
| - source.mips | ||||
| https://github.com/textmate/modula.tmbundle: | ||||
| - source.modula-3 | ||||
| https://github.com/textmate/moinmoin.tmbundle: | ||||
| - text.moinmoin | ||||
| https://github.com/textmate/movable-type.tmbundle: | ||||
| - text.html.mt | ||||
| - text.html.mt.pure | ||||
| https://github.com/textmate/nemerle.tmbundle: | ||||
| - source.nemerle | ||||
| https://github.com/textmate/ninja.tmbundle: | ||||
| - source.ninja | ||||
| https://github.com/textmate/objective-c.tmbundle: | ||||
| - source.objc | ||||
| - source.objc++ | ||||
| - source.strings | ||||
| https://github.com/textmate/ocaml.tmbundle: | ||||
| - source.camlp4.ocaml | ||||
| - source.ocaml | ||||
| - source.ocamllex | ||||
| - source.ocamlyacc | ||||
| https://github.com/textmate/opengl.tmbundle: | ||||
| - source.open-gl | ||||
| https://github.com/textmate/pascal.tmbundle: | ||||
| - source.pascal | ||||
| https://github.com/textmate/perforce.tmbundle: | ||||
| - source.perforce | ||||
| https://github.com/textmate/perl-html-template.tmbundle: | ||||
| - text.html.html-template | ||||
| https://github.com/textmate/perl-mason.tmbundle: | ||||
| - text.html.mason | ||||
| https://github.com/textmate/perl-template-toolkit.tmbundle: | ||||
| - text.html.tt | ||||
| https://github.com/textmate/perl.tmbundle: | ||||
| - source.perl | ||||
| https://github.com/textmate/php-smarty.tmbundle: | ||||
| - source.smarty | ||||
| https://github.com/textmate/php.tmbundle: | ||||
| - text.html.php | ||||
| https://github.com/textmate/pmwiki.tmbundle: | ||||
| - text.pmwiki | ||||
| https://github.com/textmate/postscript.tmbundle: | ||||
| - source.postscript | ||||
| https://github.com/textmate/processing.tmbundle: | ||||
| - source.processing | ||||
| https://github.com/textmate/prolog.tmbundle: | ||||
| - source.prolog | ||||
| https://github.com/textmate/property-list.tmbundle: | ||||
| - source.plist | ||||
| - text.xml.plist | ||||
| https://github.com/textmate/python-django.tmbundle: | ||||
| - source.python.django | ||||
| - text.html.django | ||||
| https://github.com/textmate/quake.tmbundle: | ||||
| - source.quake-config | ||||
| https://github.com/textmate/r-console-r.app.tmbundle: | ||||
| - source.rapp-console | ||||
| https://github.com/textmate/r-console-rdaemon.tmbundle: | ||||
| - source.rd.console | ||||
| - source.rd.console.plain | ||||
| - text.tex.latex.rdaemon | ||||
| https://github.com/textmate/r.tmbundle: | ||||
| - source.r | ||||
| - text.tex.latex.rd | ||||
| https://github.com/textmate/ragel.tmbundle: | ||||
| - source.c.ragel | ||||
| https://github.com/textmate/remind.tmbundle: | ||||
| - source.remind | ||||
| https://github.com/textmate/restructuredtext.tmbundle: | ||||
| - text.restructuredtext | ||||
| https://github.com/textmate/rez.tmbundle: | ||||
| - source.rez | ||||
| https://github.com/textmate/ruby-haml.tmbundle: | ||||
| - text.haml | ||||
| https://github.com/textmate/ruby-on-rails-tmbundle: | ||||
| - source.js.erb.rails | ||||
| - source.ruby.rails | ||||
| - source.ruby.rails.rjs | ||||
| - source.sql.ruby | ||||
| - text.html.erb.rails | ||||
| https://github.com/textmate/s5.tmbundle: | ||||
| - source.s5 | ||||
| https://github.com/textmate/scheme.tmbundle: | ||||
| - source.scheme | ||||
| https://github.com/textmate/scilab.tmbundle: | ||||
| - source.scilab | ||||
| https://github.com/textmate/setext.tmbundle: | ||||
| - text.setext | ||||
| https://github.com/textmate/slate.tmbundle: | ||||
| - source.slate | ||||
| https://github.com/textmate/sql.tmbundle: | ||||
| - source.sql | ||||
| https://github.com/textmate/ssh-config.tmbundle: | ||||
| - source.ssh-config | ||||
| https://github.com/textmate/standard-ml.tmbundle: | ||||
| - source.cm | ||||
| - source.ml | ||||
| https://github.com/textmate/subversion.tmbundle: | ||||
| - text.svn-commit | ||||
| https://github.com/textmate/sweave.tmbundle: | ||||
| - text.tex.latex.sweave | ||||
| https://github.com/textmate/swift.tmbundle: | ||||
| - source.swift | ||||
| https://github.com/textmate/swig.tmbundle: | ||||
| - source.swig | ||||
| https://github.com/textmate/tabular.tmbundle: | ||||
| - text.tabular.csv | ||||
| - text.tabular.tsv | ||||
| https://github.com/textmate/tcl.tmbundle: | ||||
| - source.tcl | ||||
| - text.html.tcl | ||||
| https://github.com/textmate/text.tmbundle: | ||||
| - text.plain | ||||
| https://github.com/textmate/textile.tmbundle: | ||||
| - text.html.textile | ||||
| https://github.com/textmate/textmate.tmbundle: | ||||
| - source.regexp.oniguruma | ||||
| - source.tm-properties | ||||
| https://github.com/textmate/thrift.tmbundle: | ||||
| - source.thrift | ||||
| https://github.com/textmate/todo.tmbundle: | ||||
| - text.todo | ||||
| https://github.com/textmate/toml.tmbundle: | ||||
| - source.toml | ||||
| https://github.com/textmate/twiki.tmbundle: | ||||
| - text.html.twiki | ||||
| https://github.com/textmate/txt2tags.tmbundle: | ||||
| - text.txt2tags | ||||
| https://github.com/textmate/unicode.tmbundle: | ||||
| - unicode.check.combiningMarks | ||||
| - unicode.check.noASCII | ||||
| - unicode.check.noLatin | ||||
| https://github.com/textmate/vectorscript.tmbundle: | ||||
| - source.pascal.vectorscript | ||||
| https://github.com/textmate/verilog.tmbundle: | ||||
| - source.verilog | ||||
| https://github.com/textmate/xml.tmbundle: | ||||
| - text.xml | ||||
| - text.xml.xsl | ||||
| https://github.com/textmate/yaml.tmbundle: | ||||
| - source.yaml | ||||
| https://github.com/tomas-stefano/smalltalk-tmbundle: | ||||
| - source.smalltalk | ||||
| https://github.com/vic/ioke-outdated/raw/master/share/TextMate/Ioke.tmbundle/Syntaxes/Ioke.tmLanguage: | ||||
| - source.ioke | ||||
| https://github.com/vmg/zephir-sublime: | ||||
| - source.php.zephir | ||||
| https://github.com/whitequark/llvm.tmbundle: | ||||
| - source.llvm | ||||
							
								
								
									
										13
									
								
								lib/linguist/grammars.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								lib/linguist/grammars.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| # Note: This file is included in the github-linguist-grammars gem, not the | ||||
| # github-linguist gem. | ||||
|  | ||||
| module Linguist | ||||
|   module Grammars | ||||
|     # Get the path to the directory containing the language grammar JSON files. | ||||
|     # | ||||
|     # Returns a String. | ||||
|     def self.path | ||||
|       File.expand_path("../../../grammars", __FILE__) | ||||
|     end | ||||
|   end | ||||
| end | ||||
							
								
								
									
										6
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "repository": "https://github.com/github/linguist", | ||||
|   "dependencies": { | ||||
|     "season": "~>3.0" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										221
									
								
								script/download-grammars
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										221
									
								
								script/download-grammars
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,221 @@ | ||||
| #!/usr/bin/env ruby | ||||
|  | ||||
| require 'json' | ||||
| require 'net/http' | ||||
| require 'plist' | ||||
| require 'set' | ||||
| require 'tmpdir' | ||||
| require 'uri' | ||||
| require 'yaml' | ||||
|  | ||||
| GRAMMARS_PATH = File.expand_path("../../grammars", __FILE__) | ||||
| SOURCES_FILE = File.expand_path("../../grammars.yml", __FILE__) | ||||
| CSONC = File.expand_path("../../node_modules/.bin/csonc", __FILE__) | ||||
|  | ||||
| class TarballPackage | ||||
|   def self.fetch(tmp_dir, url) | ||||
|     `curl --silent --location --max-time 10 --output "#{tmp_dir}/archive" "#{url}"` | ||||
|     raise "Failed to fetch GH package: #{url} #{$?.to_s}" unless $?.success? | ||||
|  | ||||
|     output = File.join(tmp_dir, 'extracted') | ||||
|     Dir.mkdir(output) | ||||
|     `tar -C "#{output}" -xf "#{tmp_dir}/archive"` | ||||
|     raise "Failed to uncompress tarball: #{tmp_dir}/archive (from #{url}) #{$?.to_s}" unless $?.success? | ||||
|  | ||||
|     Dir["#{output}/**/*"].select do |path| | ||||
|       case File.extname(path.downcase) | ||||
|       when '.plist' | ||||
|         path.split('/')[-2] == 'Syntaxes' | ||||
|       when '.tmlanguage' | ||||
|         true | ||||
|       when '.cson' | ||||
|         path.split('/')[-2] == 'grammars' | ||||
|       else | ||||
|         false | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   attr_reader :url | ||||
|  | ||||
|   def initialize(url) | ||||
|     @url = url | ||||
|   end | ||||
|  | ||||
|   def fetch(tmp_dir) | ||||
|     self.class.fetch(tmp_dir, url) | ||||
|   end | ||||
| end | ||||
|  | ||||
| class SingleGrammar | ||||
|   attr_reader :url | ||||
|  | ||||
|   def initialize(url) | ||||
|     @url = url | ||||
|   end | ||||
|  | ||||
|   def fetch(tmp_dir) | ||||
|     filename = File.join(tmp_dir, File.basename(url)) | ||||
|     `curl --silent --location --max-time 10 --output "#{filename}" "#{url}"` | ||||
|     raise "Failed to fetch grammar: #{url}: #{$?.to_s}" unless $?.success? | ||||
|     [filename] | ||||
|   end | ||||
| end | ||||
|  | ||||
| class SVNPackage | ||||
|   attr_reader :url | ||||
|  | ||||
|   def initialize(url) | ||||
|     @url = url | ||||
|   end | ||||
|  | ||||
|   def fetch(tmp_dir) | ||||
|     `svn export -q "#{url}/Syntaxes" "#{tmp_dir}/Syntaxes"` | ||||
|     raise "Failed to export SVN repository: #{url}: #{$?.to_s}" unless $?.success? | ||||
|     Dir["#{tmp_dir}/Syntaxes/*.{plist,tmLanguage,tmlanguage}"] | ||||
|   end | ||||
| end | ||||
|  | ||||
| class GitHubPackage | ||||
|   def self.parse_url(url) | ||||
|     url, ref = url.split("@", 2) | ||||
|     path = URI.parse(url).path.split('/') | ||||
|     [path[1], path[2].chomp('.git'), ref || "master"] | ||||
|   end | ||||
|  | ||||
|   attr_reader :user | ||||
|   attr_reader :repo | ||||
|   attr_reader :ref | ||||
|  | ||||
|   def initialize(url) | ||||
|     @user, @repo, @ref = self.class.parse_url(url) | ||||
|   end | ||||
|  | ||||
|   def url | ||||
|     suffix = "@#{ref}" unless ref == "master" | ||||
|     "https://github.com/#{user}/#{repo}#{suffix}" | ||||
|   end | ||||
|  | ||||
|   def fetch(tmp_dir) | ||||
|     url = "https://github.com/#{user}/#{repo}/archive/#{ref}.tar.gz" | ||||
|     TarballPackage.fetch(tmp_dir, url) | ||||
|   end | ||||
| end | ||||
|  | ||||
| def load_grammar(path) | ||||
|   case File.extname(path.downcase) | ||||
|   when '.plist', '.tmlanguage' | ||||
|     Plist::parse_xml(path) | ||||
|   when '.cson' | ||||
|     cson = `"#{CSONC}" "#{path}"` | ||||
|     raise "Failed to convert CSON grammar '#{path}': #{$?.to_s}" unless $?.success? | ||||
|     JSON.parse(cson) | ||||
|   else | ||||
|     raise "Invalid document type #{path}" | ||||
|   end | ||||
| end | ||||
|  | ||||
| def install_grammar(tmp_dir, source, all_scopes) | ||||
|   p = if source.end_with?('.tmLanguage', '.plist') | ||||
|         SingleGrammar.new(source) | ||||
|       elsif source.start_with?('https://github.com') | ||||
|         GitHubPackage.new(source) | ||||
|       elsif source.start_with?('http://svn.textmate.org') | ||||
|         SVNPackage.new(source) | ||||
|       elsif source.end_with?('.tar.gz') | ||||
|         TarballPackage.new(source) | ||||
|       else | ||||
|         nil | ||||
|       end | ||||
|  | ||||
|   raise "Unsupported source: #{source}" unless p | ||||
|  | ||||
|   installed = [] | ||||
|  | ||||
|   p.fetch(tmp_dir).each do |path| | ||||
|     grammar = load_grammar(path) | ||||
|     scope = grammar['scopeName'] | ||||
|  | ||||
|     if all_scopes.key?(scope) | ||||
|       $stderr.puts "WARN: Duplicated scope #{scope}\n" + | ||||
|         "  Current package: #{p.url}\n" + | ||||
|       "  Previous package: #{all_scopes[scope]}" | ||||
|       next | ||||
|     end | ||||
|  | ||||
|     File.write(File.join(GRAMMARS_PATH, "#{scope}.json"), JSON.pretty_generate(grammar)) | ||||
|     all_scopes[scope] = p.url | ||||
|     installed << scope | ||||
|   end | ||||
|  | ||||
|   $stderr.puts("OK #{p.url} (#{installed.join(', ')})") | ||||
| end | ||||
|  | ||||
| def run_thread(queue, all_scopes) | ||||
|   Dir.mktmpdir do |tmpdir| | ||||
|     loop do | ||||
|       source, index = begin | ||||
|         queue.pop(true) | ||||
|       rescue ThreadError | ||||
|         # The queue is empty. | ||||
|         break | ||||
|       end | ||||
|  | ||||
|       dir = "#{tmpdir}/#{index}" | ||||
|       Dir.mkdir(dir) | ||||
|  | ||||
|       install_grammar(dir, source, all_scopes) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| def generate_yaml(all_scopes, base) | ||||
|   yaml = all_scopes.each_with_object(base) do |(key,value),out| | ||||
|     out[value] ||= [] | ||||
|     out[value] << key | ||||
|   end | ||||
|  | ||||
|   yaml = yaml.sort.to_h | ||||
|   yaml.each { |k, v| v.sort! } | ||||
|   yaml | ||||
| end | ||||
|  | ||||
| def main(sources) | ||||
|   begin | ||||
|     Dir.mkdir(GRAMMARS_PATH) | ||||
|   rescue Errno::EEXIST | ||||
|   end | ||||
|  | ||||
|   `npm install` | ||||
|  | ||||
|   all_scopes = {} | ||||
|  | ||||
|   if ARGV[0] == '--add' | ||||
|     Dir.mktmpdir do |tmpdir| | ||||
|       install_grammar(tmpdir, ARGV[1], all_scopes) | ||||
|     end | ||||
|     generate_yaml(all_scopes, sources) | ||||
|   else | ||||
|     queue = Queue.new | ||||
|  | ||||
|     sources.each do |url, scopes| | ||||
|       queue.push([url, queue.length]) | ||||
|     end | ||||
|  | ||||
|     threads = 8.times.map do | ||||
|       Thread.new { run_thread(queue, all_scopes) } | ||||
|     end | ||||
|     threads.each(&:join) | ||||
|     generate_yaml(all_scopes, {}) | ||||
|   end | ||||
| end | ||||
|  | ||||
| sources = File.open(SOURCES_FILE) do |file| | ||||
|   YAML.load(file) | ||||
| end | ||||
|  | ||||
| yaml = main(sources) | ||||
|  | ||||
| File.write(SOURCES_FILE, YAML.dump(yaml)) | ||||
|  | ||||
| $stderr.puts("Done") | ||||
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/plist-3.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/plist-3.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user