aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2012-07-20 17:20:45 -0500
committerJoshua Peek <josh@joshpeek.com>2012-07-20 17:20:45 -0500
commit36da52e3838ed50f9330f7e26cc8aa81d7bc7f09 (patch)
tree0547b7e643c985185a738190a63796a49827c831
parent5a5d33499942d2a294ffec593539a9095f105882 (diff)
Move specific filename samples into their own dir
-rw-r--r--lib/linguist/language.rb12
-rw-r--r--lib/linguist/languages.yml3
-rw-r--r--lib/linguist/sample.rb39
-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.rb2
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