class GithubReactions::Visualizer

Constants

EMOJI_UNICORD_MAP

Attributes

reaction_groups[R]
repository_name[R]

Public Class Methods

new(repository_name, reaction_groups) click to toggle source
# File lib/github_reactions/visualizer.rb, line 24
def initialize(repository_name, reaction_groups)
  @repository_name = repository_name
  @reaction_groups = reaction_groups
end
visualize(repository_name, reaction_groups) click to toggle source
# File lib/github_reactions/visualizer.rb, line 19
def visualize(repository_name, reaction_groups)
  new(repository_name, reaction_groups).visualize
end

Public Instance Methods

visualize() click to toggle source
# File lib/github_reactions/visualizer.rb, line 29
def visualize
  title = "#{repository_name} has #{count_grouped_by_reaction.values.reduce(:+)} reactions so far"

  table = Terminal::Table.new(
    title: title,
    headings: ['Emoji', 'Count'],
    rows: count_grouped_by_reaction.map(&:to_a),
  )

  table.align_column(1, :right)

  puts table
end

Private Instance Methods

count_grouped_by_reaction() click to toggle source
# File lib/github_reactions/visualizer.rb, line 45
def count_grouped_by_reaction
  @_count_grouped_by_reaction ||= reaction_groups.reduce(Hash.new(0)) do |memo, reaction_group|
    reaction_group.each do |reaction|
      next if reaction.users.total_count.zero?
      memo[reaction.content] += reaction.users.total_count
    end
    memo
  end
end