Skip to content

Instantly share code, notes, and snippets.

@treby
Created December 5, 2015 04:53
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save treby/f4dfa50e39c3725b6f13 to your computer and use it in GitHub Desktop.
# Description
# 掃除当番管理bot(共通ロジック).
#
# Author:
# Hiroaki Ninomiya <ninomiya@spacemarket.com>
module.exports = (robot) ->
getSweepers : () ->
sweepers = []
for _, user of robot.brain.users()
sweepers.push user if user.sweepOrder
sweepers.sort (a, b) -> a.sweepOrder - b.sweepOrder
sweepers
getCurrentSweeper : () ->
duty_index = robot.brain.get('current_sweeper_index') ? 0
sweepers = this.getSweepers()
if duty_index < sweepers.length
sweepers[duty_index]
else
robot.brain.set('current_sweeper_index', 0)
sweepers[0] if sweepers.length > 0
getNextSweeper : (reverse = false) ->
duty_index = robot.brain.get('current_sweeper_index') ? 0
sweepers = this.getSweepers()
if duty_index < sweepers.length
if reverse
sweepers[(duty_index + sweepers.length - 1) % sweepers.length]
else
sweepers[(duty_index + 1) % sweepers.length]
else
robot.brain.set('current_sweeper_index', 0)
sweepers[0] if sweepers.length > 0
rotateSweeper : (reverse = false) ->
duty_index = robot.brain.get('current_sweeper_index') ? 0
sweepers = this.getSweepers()
next_index = if reverse
(duty_index + sweepers.length - 1) % sweepers.length
else
(duty_index + 1) % sweepers.length
robot.brain.set('current_sweeper_index', next_index)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment