Allow any enum to be passed to Repository for stat collecting

Fixes #28
This commit is contained in:
Joshua Peek
2011-07-02 20:54:05 -05:00
parent 18fc137c96
commit 074a77e649
2 changed files with 5 additions and 28 deletions

View File

@@ -20,35 +20,17 @@ module Linguist
# Public: Initialize a new Repository # Public: Initialize a new Repository
# #
# paths - An Array of Blob objects or a Hash of String path keys # enum - Enumerator that responds to `each` and
# and Blob values. # yields Blob objects
# #
# Returns a Repository # Returns a Repository
def initialize(paths) def initialize(enum)
case paths @enum = enum
when Array
@paths = paths.inject({}) do |h, blob|
h[blob.name] = blob
h
end
when Hash
@paths = paths
else
raise ArgumentError, "#{paths.class} is not an Array or Hash"
end
@computed_stats = false @computed_stats = false
@language = @size = nil @language = @size = nil
@sizes = Hash.new { 0 } @sizes = Hash.new { 0 }
end end
# Public: Lookup blob for path.
#
# Returns a Blob
def [](path)
@paths[path]
end
# Public: Returns a breakdown of language stats. # Public: Returns a breakdown of language stats.
# #
# Examples # Examples
@@ -84,7 +66,7 @@ module Linguist
def compute_stats def compute_stats
return if @computed_stats return if @computed_stats
@paths.each do |path, blob| @enum.each do |blob|
# Skip vendored or generated blobs # Skip vendored or generated blobs
next if blob.vendored? || blob.generated? || blob.language.nil? next if blob.vendored? || blob.generated? || blob.language.nil?

View File

@@ -13,11 +13,6 @@ class TestRepository < Test::Unit::TestCase
repo(File.expand_path("../..", __FILE__)) repo(File.expand_path("../..", __FILE__))
end end
def test_lookup_path
assert linguist_repo['lib/linguist.rb']
assert_equal Language['Ruby'], linguist_repo['lib/linguist.rb'].language
end
def test_linguist_language def test_linguist_language
assert_equal Language['JavaScript'], linguist_repo.language assert_equal Language['JavaScript'], linguist_repo.language
end end