class ASF::Board::ShepherdStream

source for shepherd information, yields a stream of director names in random order

Public Class Methods

new(actions) click to toggle source
Calls superclass method
# File lib/whimsy/asf/board.rb, line 111
def initialize(actions)
  @actions = (actions || []).reverse
  @directors = ASF::Service['board'].members

  super() do |generator|
    list = []
    loop do
      list = @directors.shuffle if list.empty?
      victim = list.pop
      firstname = ASF::Board.directorFirstName(victim.id) ||
        victim.public_name.split(' ').first
      generator.yield firstname
    end
  end
end

Public Instance Methods

for(pmc) click to toggle source
# File lib/whimsy/asf/board.rb, line 127
def for(pmc)
  chair = pmc.chair
  raise "no chair found for #{pmc.name}" unless chair

  action = @actions.find {|action| action[:pmc] == pmc.display_name}

  if action
    "#{chair.public_name} / #{action[:owner]}"
  elsif @directors.include? chair
    chair.public_name
  else
    "#{chair.public_name} / #{self.next}"
  end
end