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