class User
Attributes
colors[RW]
commits[RW]
email[RW]
name[RW]
Public Class Methods
new(name, email)
click to toggle source
# File lib/gitalytics/user.rb, line 7 def initialize(name, email) self.name = name self.email = email self.commits = [] self.colors = ColorGenerator.new(saturation: 0.3, lightness: 0.75) .create_rgb .join(', ') end
Public Instance Methods
commits_period()
click to toggle source
# File lib/gitalytics/user.rb, line 28 def commits_period (last_commit.date - first_commit.date).to_i + 1 end
first_commit()
click to toggle source
# File lib/gitalytics/user.rb, line 20 def first_commit commits.min_by(&:date) end
gravatar()
click to toggle source
# File lib/gitalytics/user.rb, line 16 def gravatar Digest::MD5.hexdigest(email) end
last_commit()
click to toggle source
# File lib/gitalytics/user.rb, line 24 def last_commit commits.max_by(&:date) end
rgba(opacity = 1)
click to toggle source
# File lib/gitalytics/user.rb, line 53 def rgba(opacity = 1) "rgba(#{colors}, #{opacity})" end
summary()
click to toggle source
# File lib/gitalytics/user.rb, line 48 def summary "#{name} has made #{commits.count} commits on #{working_days} "\ "separate days during a span of #{commits_period} days." end
total_changes()
click to toggle source
# File lib/gitalytics/user.rb, line 44 def total_changes total_insertions + total_deletions end
total_deletions()
click to toggle source
# File lib/gitalytics/user.rb, line 40 def total_deletions commits.map(&:deletions).inject(0) { |a, e| a + e } end
total_insertions()
click to toggle source
# File lib/gitalytics/user.rb, line 36 def total_insertions commits.map(&:insertions).inject(0) { |a, e| a + e } end
weekday_commits()
click to toggle source
# File lib/gitalytics/user.rb, line 57 def weekday_commits days = Array.new(7) { 0 } commits.each { |c| days[c.date.wday] += 1 } days end
working_days()
click to toggle source
# File lib/gitalytics/user.rb, line 32 def working_days commits.map(&:date).uniq.count end