class Runner::Project

Attributes

members[R]
name[RW]

Public Class Methods

new(name) click to toggle source
# File lib/Runner/project.rb, line 10
def initialize(name)
  @name = name.capitalize
  @members = []
end

Public Instance Methods

add_member(member) click to toggle source
# File lib/Runner/project.rb, line 15
def add_member(member)
  @members << member
end
review(cycles) click to toggle source
# File lib/Runner/project.rb, line 38
def review(cycles)
  dice = Die.new
  1.upto(cycles) do |cycle|
    puts "CYCLE #{cycle}:"
    @members.each do |reviewer|
      puts "Review being done by #{reviewer.name}:"
      @members.each do |reviewee|
        if reviewee != reviewer
          puts "#{reviewer.name} is rating #{reviewee.name}"
          case dice.roll
          when 1,2
            reviewee.rated_down
          when 4,5,6
            reviewee.rated_up
          else
            puts "#{reviewer.name} doesn't know enough about #{reviewee.name}'s work"
          end
        end
      end # reviewee
    end # reviewer
    show_members
  end # cycle
end
save_final_ratings() click to toggle source
# File lib/Runner/project.rb, line 62
def save_final_ratings
  CSV.open("#{Dir.home}/Runner/bin/final_ratings.csv", 'w') do |csv|
    @members.each do |member|
      csv_string = [member.name,member.rating.to_s]
      csv << csv_string
    end
  end
end
show_members() click to toggle source
# File lib/Runner/project.rb, line 19
def show_members
  puts "#{self.name} has the following members:"
  sorted_members = @members.sort {|a,b| b.rating <=> a.rating}
  sorted_members.each do |member|
    puts "\t - #{member.name} rated #{member.rating}"
  end

  strong_members, weak_members = @members.partition{|member| member.strong?}
  puts "\n\nThe STRONG team members are:"
  strong_members.each do |member|
    puts "#{member.name}*"
  end
  puts "\n\nThe WEAK team members are:"
  weak_members.each do |member|
    puts "#{member.name}~"
  end

end