Index by language object

This commit is contained in:
Joshua Peek
2011-05-21 20:58:54 -05:00
parent 6f22ca4fa0
commit 6f1f71ae23
2 changed files with 13 additions and 27 deletions

View File

@@ -35,7 +35,7 @@ module Linguist
def initialize(paths) def initialize(paths)
@paths = paths @paths = paths
@stats = nil @language = @size = nil
@sizes = Hash.new { 0 } @sizes = Hash.new { 0 }
end end
@@ -44,20 +44,18 @@ module Linguist
end end
def language def language
Language[stats[:primary]] compute_stats
@language
end end
def languages def languages
stats compute_stats
@sizes @sizes
end end
def size def size
stats[:total_size] compute_stats
end @size
def stats
@stats ||= compute_stats
end end
def compute_stats def compute_stats
@@ -67,29 +65,17 @@ module Linguist
language = blob.language language = blob.language
if language.common? if language.common?
@sizes[language.name] += blob.size @sizes[language] += blob.size
end end
end end
total_size = @sizes.inject(0) { |s,(k,v)| s + v } @size = @sizes.inject(0) { |s,(k,v)| s + v }
results = { if primary = @sizes.max_by { |(_, size)| size }
:total_size => total_size @language = primary[0]
}
@sizes.each do |language, size|
results[language] = size
end end
primary = @sizes.max_by { |(language, size)| nil
size
}
if primary
results[:primary] = primary[0]
end
results
end end
end end
end end

View File

@@ -49,8 +49,8 @@ class TestRepository < Test::Unit::TestCase
end end
def test_linguist_languages def test_linguist_languages
assert linguist_repo.languages['Ruby'] > 30_000 assert linguist_repo.languages[Language['Ruby']] > 30_000
assert linguist_repo.languages['Python'] < 1000 assert linguist_repo.languages[Language['Python']] < 1000
end end
def test_linguist_size def test_linguist_size