mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Document Repository
This commit is contained in:
@@ -1,5 +1,10 @@
|
|||||||
module Linguist
|
module Linguist
|
||||||
class Repository
|
class Repository
|
||||||
|
# Public: Initialize a new Repository
|
||||||
|
#
|
||||||
|
# paths - A Hash of String path keys and Blob values.
|
||||||
|
#
|
||||||
|
# Returns a Repository
|
||||||
def initialize(paths)
|
def initialize(paths)
|
||||||
@paths = paths
|
@paths = paths
|
||||||
|
|
||||||
@@ -8,45 +13,71 @@ module Linguist
|
|||||||
@sizes = Hash.new { 0 }
|
@sizes = Hash.new { 0 }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Public: Lookup blob for path.
|
||||||
|
#
|
||||||
|
# Returns a Blob
|
||||||
def [](path)
|
def [](path)
|
||||||
@paths[path]
|
@paths[path]
|
||||||
end
|
end
|
||||||
|
|
||||||
def language
|
# Public: Returns a breakdown of langauge stats.
|
||||||
compute_stats
|
#
|
||||||
@language
|
# Examples
|
||||||
end
|
#
|
||||||
|
# # => { Langauge['Ruby'] => 46319,
|
||||||
|
# Langauge['JavaScript'] => 258 }
|
||||||
|
#
|
||||||
|
# Returns a Hash of Language keys and Integer size values.
|
||||||
def languages
|
def languages
|
||||||
compute_stats
|
compute_stats
|
||||||
@sizes
|
@sizes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Public: Get primary Language of repository.
|
||||||
|
#
|
||||||
|
# Returns a Language
|
||||||
|
def language
|
||||||
|
compute_stats
|
||||||
|
@language
|
||||||
|
end
|
||||||
|
|
||||||
|
# Public: Get the total size of the repository.
|
||||||
|
#
|
||||||
|
# Returns a byte size Integer
|
||||||
def size
|
def size
|
||||||
compute_stats
|
compute_stats
|
||||||
@size
|
@size
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Internal: Compute language breakdown for each blob in the Repository.
|
||||||
|
#
|
||||||
|
# Returns nothing
|
||||||
def compute_stats
|
def compute_stats
|
||||||
return if @computed_stats
|
return if @computed_stats
|
||||||
|
|
||||||
@paths.each do |path, blob|
|
@paths.each do |path, blob|
|
||||||
|
# Skip vendored or generated blobs
|
||||||
next if blob.vendored? || blob.generated?
|
next if blob.vendored? || blob.generated?
|
||||||
|
|
||||||
language = blob.language
|
language = blob.language
|
||||||
|
|
||||||
|
# Only include common langauges
|
||||||
if language.common?
|
if language.common?
|
||||||
@sizes[language] += blob.size
|
@sizes[language] += blob.size
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Compute total size
|
||||||
@size = @sizes.inject(0) { |s,(k,v)| s + v }
|
@size = @sizes.inject(0) { |s,(k,v)| s + v }
|
||||||
|
|
||||||
|
# Get primary language
|
||||||
if primary = @sizes.max_by { |(_, size)| size }
|
if primary = @sizes.max_by { |(_, size)| size }
|
||||||
@language = primary[0]
|
@language = primary[0]
|
||||||
end
|
end
|
||||||
|
|
||||||
@computed_stats = true
|
@computed_stats = true
|
||||||
|
|
||||||
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user