diff options
| author | Joshua Peek <josh@joshpeek.com> | 2012-07-20 17:20:45 -0500 |
|---|---|---|
| committer | Joshua Peek <josh@joshpeek.com> | 2012-07-20 17:20:45 -0500 |
| commit | 36da52e3838ed50f9330f7e26cc8aa81d7bc7f09 (patch) | |
| tree | 0547b7e643c985185a738190a63796a49827c831 | |
| parent | 5a5d33499942d2a294ffec593539a9095f105882 (diff) | |
Move specific filename samples into their own dir
| -rw-r--r-- | lib/linguist/language.rb | 12 | ||||
| -rw-r--r-- | lib/linguist/languages.yml | 3 | ||||
| -rw-r--r-- | lib/linguist/sample.rb | 39 | ||||
| -rw-r--r-- | samples/ruby/filenames/Capfile (renamed from samples/ruby/Capfile) | 0 | ||||
| -rw-r--r-- | samples/ruby/filenames/Rakefile (renamed from samples/ruby/Rakefile) | 0 | ||||
| -rw-r--r-- | samples/shell/filenames/PKGBUILD (renamed from samples/shell/PKGBUILD) | 0 | ||||
| -rw-r--r-- | test/test_tokenizer.rb | 2 |
7 files changed, 48 insertions, 8 deletions
diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index de1d36f..88ccb9f 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -442,11 +442,13 @@ module Linguist end extensions = Sample.extensions + filenames = Sample.filenames popular = YAML.load_file(File.expand_path("../popular.yml", __FILE__)) YAML.load_file(File.expand_path("../languages.yml", __FILE__)).each do |name, options| aliases = [name.downcase.gsub(/\s/, '-') ] + (options[:aliases] || []) options['extensions'] ||= [] + options['filenames'] ||= [] aliases.each do |name| if extnames = extensions[name] extnames.each do |extname| @@ -457,6 +459,16 @@ module Linguist end end end + + if fns = filenames[name] + fns.each do |filename| + if !options['filenames'].include?(filename) + options['filenames'] << filename + else + warn "#{name} #{filename.inspect} is already defined in samples/. Remove from languages.yml." + end + end + end end lang = Language.create( diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index c9d6dd5..ddfd5e9 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1064,11 +1064,9 @@ Ruby: - .thor - .watchr filenames: - - Capfile - Gemfile - Guardfile - Podfile - - Rakefile - Thorfile - Vagrantfile @@ -1151,7 +1149,6 @@ Shell: - .zshrc - bashrc - zshrc - - PKGBUILD Smalltalk: type: programming diff --git a/lib/linguist/sample.rb b/lib/linguist/sample.rb index 096a9cb..a200a2c 100644 --- a/lib/linguist/sample.rb +++ b/lib/linguist/sample.rb @@ -22,7 +22,24 @@ module Linguist dirname = File.join(PATH, category) Dir.entries(dirname).each do |filename| next if filename == '.' || filename == '..' - yield({ :path => File.join(dirname, filename), :language => category }) + + if filename == 'filenames' + Dir.entries(File.join(dirname, filename)).each do |subfilename| + next if subfilename == '.' || subfilename == '..' + + yield({ + :path => File.join(dirname, filename, subfilename), + :language => category, + :filename => subfilename + }) + end + else + yield({ + :path => File.join(dirname, filename), + :language => category, + :extname => File.extname(filename) + }) + end end end @@ -36,15 +53,29 @@ module Linguist def self.extensions extensions = {} each do |sample| - extname = File.extname(sample[:path]) # TODO: For now skip empty extnames - next if extname == "" + next if sample[:extname].nil? || sample[:extname] == "" extensions[sample[:language]] ||= Set.new - extensions[sample[:language]] << extname + extensions[sample[:language]] << sample[:extname] end extensions end + # Get all filenames listed in samples/ + # + # Returns Hash of sample language keys with a Set of filename + # Strings. + def self.filenames + filenames = {} + each do |sample| + # TODO: For now skip empty extnames + next if sample[:filename].nil? + filenames[sample[:language]] ||= Set.new + filenames[sample[:language]] << sample[:filename] + end + filenames + end + # Public: Build Classifier from all samples. # # Returns trained Classifier. diff --git a/samples/ruby/Capfile b/samples/ruby/filenames/Capfile index 96291a7..96291a7 100644 --- a/samples/ruby/Capfile +++ b/samples/ruby/filenames/Capfile diff --git a/samples/ruby/Rakefile b/samples/ruby/filenames/Rakefile index 9d51ff7..9d51ff7 100644 --- a/samples/ruby/Rakefile +++ b/samples/ruby/filenames/Rakefile diff --git a/samples/shell/PKGBUILD b/samples/shell/filenames/PKGBUILD index 854d2f1..854d2f1 100644 --- a/samples/shell/PKGBUILD +++ b/samples/shell/filenames/PKGBUILD diff --git a/test/test_tokenizer.rb b/test/test_tokenizer.rb index 00142b5..420c776 100644 --- a/test/test_tokenizer.rb +++ b/test/test_tokenizer.rb @@ -87,6 +87,6 @@ class TestTokenizer < Test::Unit::TestCase def test_ruby_tokens assert_equal %w(module Foo end), tokenize(:"ruby/foo.rb") assert_equal %w(# /usr/bin/env ruby puts), tokenize(:"ruby/script.rb") - assert_equal %w(task default do puts end), tokenize(:"ruby/Rakefile") + assert_equal %w(task default do puts end), tokenize(:"ruby/filenames/Rakefile") end end |
