class MobRotation::Rotation
Public Class Methods
annoying_and_probably_not_accidental_beep(n = number_of_beeps)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 42 def self.annoying_and_probably_not_accidental_beep(n = number_of_beeps) n.times { print("\a") || sleep(minimum_sleep_between_beeps) } end
minimum_sleep_between_beeps()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 46 def self.minimum_sleep_between_beeps 0.2 end
new(database, git_dir)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 54 def initialize(database, git_dir) @git_dir = git_dir @database = database @real_mobsters = @database.sanitized_entries_in do | entry | build_mobster(entry) end end
number_of_beeps()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 50 def self.number_of_beeps 5 end
Public Instance Methods
add_mobster(*mobsters_to_add)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 101 def add_mobster(*mobsters_to_add) mobsters_to_add.collect(&:to_s).collect(&:strip).each do |mobster_to_add| fail if mobster_to_add.empty? if @real_mobsters.collect(&:name).include?(mobster_to_add) write("user name '#{mobster_to_add}' already exists") next end @real_mobsters << Mobster.new(mobster_to_add) end sync end
build_mobster(entry)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 62 def build_mobster(entry) name = extract_name_from(entry) email = extract_email_from(entry) Mobster.new(name, email) end
countdown_to_rotate(seconds = 300)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 144 def countdown_to_rotate(seconds = 300) sleep(seconds) puts("Time to rotate") self.class.annoying_and_probably_not_accidental_beep end
extract_email_from(entry)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 68 def extract_email_from(entry) if entry =~ /\<(.*)\>/ Regexp.last_match[1] end end
extract_next_mobster_email()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 176 def extract_next_mobster_email email = @real_mobsters.first.email.to_s.strip email.empty? ? "mob@rubysteps.com" : email end
format_mobster(role, person)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 93 def format_mobster(role, person) if person.email.to_s.empty? write("#{role} #{person.name}") else write("#{role} #{person.name.strip} <#{person.email.strip}>") end end
inform_lovely_user(command)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 150 def inform_lovely_user(command) puts("Unknown command #{command}") show_help end
random(seed = nil)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 168 def random(seed = nil) puts("Randomized Output") rotate_mobsters do srand(seed.to_i) if seed @real_mobsters.shuffle! end end
remove_mobster(given_mobster)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 116 def remove_mobster(given_mobster) @real_mobsters.each_with_index do |mobster, i| if found_mobster(mobster, given_mobster) @real_mobsters.delete_at(i) end end sync end
remove_mobsters(*mobsters)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 125 def remove_mobsters(*mobsters) mobsters.each do |mobster| remove_mobster(mobster) end end
rotate()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 161 def rotate puts("") rotate_mobsters do @real_mobsters << @real_mobsters.shift end end
rotate_mobsters(&rotation_algorithm)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 155 def rotate_mobsters(&rotation_algorithm) rotation_algorithm.call git_config_update sync end
show_help()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 131 def show_help puts ["Available commands are:", "show", "help", "rotate", "random", "add <name1> [name2]", "remove <name1> [name2]", "run_with_timer [seconds]" ] end
show_mobsters()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 78 def show_mobsters @real_mobsters.each_with_index do |person, index| case index when 0 write("git username: #{person.name}") write("git user email: #{person.email}") format_mobster("Driver", person) when 1 format_mobster("Navigator", person) else format_mobster("Mobster", person) end end end
time_to_rotate()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 181 def time_to_rotate puts("Time to rotate!") end
write(text)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 74 def write(text) puts(text) end
Private Instance Methods
extract_name_from(entry)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 205 def extract_name_from(entry) entry_to_array = entry.split("") entry_to_array.take_while { |c| c != "<" }.join("") end
found_mobster(line, mobster)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 201 def found_mobster(line, mobster) line.to_s.strip == mobster.to_s end
git_config_for(property, value)
click to toggle source
# File lib/mob_rotation/rotation.rb, line 193 def git_config_for(property, value) "git --git-dir=#{@git_dir} config user.#{property} '#{value}'" end
git_config_update()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 187 def git_config_update # FIX yo that rescue nil is bogus system(git_config_for("name", @real_mobsters.first.name)) rescue nil system(git_config_for("email", extract_next_mobster_email)) rescue nil end
sync()
click to toggle source
# File lib/mob_rotation/rotation.rb, line 197 def sync @database.write(@real_mobsters) end