diff --git a/lib/git_stats/git_data/activity.rb b/lib/git_stats/git_data/activity.rb index 3b9aeca8d..050c97876 100644 --- a/lib/git_stats/git_data/activity.rb +++ b/lib/git_stats/git_data/activity.rb @@ -2,17 +2,10 @@ module GitStats module GitData class Activity - def add_commit(commit) - add_commit_at(commit.date) - end - - def add_commit_at(date) - self.by_hour[date.hour] += 1 - self.by_wday[date.wday] += 1 - self.by_wday_hour[date.wday][date.hour] += 1 - self.by_month[date.month] += 1 - self.by_year[date.year] += 1 - self.by_year_week[date.year][date.cweek] += 1 + def initialize(commits) + commits.values.each do |commit| + add_commit(commit) + end end def by_hour @@ -39,6 +32,20 @@ module GitStats @by_year_week ||= Hash.new { |h, k| h[k] = Hash.new(0) } end + private + def add_commit(commit) + add_commit_at(commit.date) + end + + def add_commit_at(date) + self.by_hour[date.hour] += 1 + self.by_wday[date.wday] += 1 + self.by_wday_hour[date.wday][date.hour] += 1 + self.by_month[date.month] += 1 + self.by_year[date.year] += 1 + self.by_year_week[date.year][date.cweek] += 1 + end + end end end \ No newline at end of file diff --git a/lib/git_stats/git_data/author.rb b/lib/git_stats/git_data/author.rb index b5c1a63ca..8b3f982bf 100644 --- a/lib/git_stats/git_data/author.rb +++ b/lib/git_stats/git_data/author.rb @@ -17,10 +17,7 @@ module GitStats end def activity - @activity ||= commits.values.inject(Activity.new) do |activity, commit| - activity.add_commit(commit) - activity - end + @activity ||= Activity.new(commits) end end diff --git a/lib/git_stats/git_data/repo.rb b/lib/git_stats/git_data/repo.rb index 8cd8272d3..61cb0c98c 100644 --- a/lib/git_stats/git_data/repo.rb +++ b/lib/git_stats/git_data/repo.rb @@ -27,10 +27,7 @@ module GitStats end def activity - @activity ||= commits.values.inject(Activity.new) do |activity, commit| - activity.add_commit(commit) - activity - end + @activity ||= Activity.new(commits) end def project_version