class Linguist::Repository
A Repository
is an abstraction of a Grit::Repo or a basic file system tree. It holds a list of paths pointing to Blobish objects.
Its primary purpose is for gathering language statistics across the entire project.
Public Class Methods
from_directory(base_path)
click to toggle source
Public: Initialize a new Repository
from a File directory
base_path - A path String
Returns a Repository
# File lib/linguist/repository.rb, line 15 def self.from_directory(base_path) new Dir["#{base_path}/**/*"]. select { |f| File.file?(f) }. map { |path| FileBlob.new(path, base_path) } end
new(enum)
click to toggle source
Public: Initialize a new Repository
enum - Enumerator that responds to ‘each` and
yields Blob objects
Returns a Repository
# File lib/linguist/repository.rb, line 27 def initialize(enum) @enum = enum @computed_stats = false @language = @size = nil @sizes = Hash.new { 0 } end
Public Instance Methods
compute_stats()
click to toggle source
Internal: Compute language breakdown for each blob in the Repository
.
Returns nothing
# File lib/linguist/repository.rb, line 66 def compute_stats return if @computed_stats @enum.each do |blob| # Skip files that are likely binary next if blob.likely_binary? # Skip vendored or generated blobs next if blob.vendored? || blob.generated? || blob.language.nil? # Only include programming languages and acceptable markup languages if blob.language.type == :programming || Language.detectable_markup.include?(blob.language.name) @sizes[blob.language.group] += blob.size end end # Compute total size @size = @sizes.inject(0) { |s,(_,v)| s + v } # Get primary language if primary = @sizes.max_by { |(_, size)| size } @language = primary[0] end @computed_stats = true nil end
language()
click to toggle source
languages()
click to toggle source
Public: Returns a breakdown of language stats.
Examples
# => { Language['Ruby'] => 46319, Language['JavaScript'] => 258 }
Returns a Hash of Language
keys and Integer size values.
# File lib/linguist/repository.rb, line 42 def languages compute_stats @sizes end
size()
click to toggle source
Public: Get the total size of the repository.
Returns a byte size Integer
# File lib/linguist/repository.rb, line 58 def size compute_stats @size end