class Ruboty::NoMoreBocchi::Actions::NoMoreBocchi
Public Instance Methods
call()
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 6 def call groups, bocchi_candidates = grouping_member(people,[]) groups.reduce(bocchi_candidates) do |candidates, group| choice = candidates.sample group.push choice unless choice.nil? candidates - [choice] end message.reply(result_message(groups)) end
Private Instance Methods
assign_member()
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 45 def assign_member (people.length / necessary_group_count) end
group_names()
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 57 def group_names ("A".."Z") end
grouping_member(remaining_member, groups)
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 18 def grouping_member(remaining_member, groups) new_group = remaining_member.sample(assign_member) groups.push(new_group) if groups.length < necessary_group_count grouping_member(remaining_member - new_group, groups) else return groups, remaining_member - new_group end end
necessary_group_count()
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 53 def necessary_group_count message[:group_count].to_i || 2 end
people()
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 49 def people message[:people].split(/,/) end
result_message(groups)
click to toggle source
# File lib/ruboty/no_more_bocchi/actions/no_more_bocchi.rb, line 28 def result_message(groups) result_messages = [] groups.zip(group_names.first(groups.length)).map do |group_name_and_member| members = group_name_and_member.first group_name = group_name_and_member.last result_messages.push <<-"MES" #{group_name}チーム #{members.map { |member| " * #{member}" }.join("\n") } MES end <<-"EOS" 以下のようなチーム分けになりました。 #{result_messages.join("\n")} EOS end