From 758994cbaeacbcf1e71beb5e81afdc1405ec2755 Mon Sep 17 00:00:00 2001 From: Yuta Shimizu Date: Tue, 25 Aug 2015 17:06:40 +0900 Subject: [PATCH 1/2] Add remove function --- scripts/scorekeeper.coffee | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scripts/scorekeeper.coffee b/scripts/scorekeeper.coffee index d4c5d21..bff8083 100644 --- a/scripts/scorekeeper.coffee +++ b/scripts/scorekeeper.coffee @@ -46,6 +46,12 @@ class Scorekeeper score: (user, func) -> func false, @_scores[user] or 0 + remove: (user, func) -> + score = @_scores[user] + delete @_scores[user] + @_save() + func false, score + rank: (func)-> ranking = (for name, score of @_scores [name, score] @@ -92,6 +98,11 @@ module.exports = (robot) -> "#{parseInt(rank) + 1} : #{name}" ).join("\n") + robot.respond /scorekeeper remove (.+)$/i, (msg) -> + user = userName(msg.match[1]) + scorekeeper.remove user, (error, result) -> + msg.send "#{user} has been removed. (#{result} pt)" + robot.respond /scorekeeper (.+)$|what(?:'s| is)(?: the)? score of (.+)\??$/i, (msg) -> user = userName(msg.match[1] || msg.match[2]) scorekeeper.score user, (error, result) -> From b31bdc5b49c8532617063a7f1b43798bfadc87d1 Mon Sep 17 00:00:00 2001 From: Yuta Shimizu Date: Thu, 27 Aug 2015 13:25:55 +0900 Subject: [PATCH 2/2] Multiple increment/decrement in one line --- scripts/scorekeeper.coffee | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/scripts/scorekeeper.coffee b/scripts/scorekeeper.coffee index bff8083..18e83b4 100644 --- a/scripts/scorekeeper.coffee +++ b/scripts/scorekeeper.coffee @@ -82,15 +82,16 @@ module.exports = (robot) -> user = user.replace(mention_matcher, "") user - robot.hear /(.+)\+\+$/, (msg) -> - user = userName(msg.match[1]) - scorekeeper.increment user, (error, result) -> - msg.send "incremented #{user} (#{result} pt)" - - robot.hear /(.+)\-\-$/, (msg) -> - user = userName(msg.match[1]) - scorekeeper.decrement user, (error, result) -> - msg.send "decremented #{user} (#{result} pt)" + robot.hear /\w+(?:(?:\+\+)|(?:\-\-))/g, (msg) -> + for str in msg.match + user = userName(str.slice(0, -2)) + direction = str.slice(-2) + if direction == "++" + scorekeeper.increment user, (error, result) -> + msg.send "incremented #{user} (#{result} pt)" + else if direction == "--" + scorekeeper.decrement user, (error, result) -> + msg.send "decremented #{user} (#{result} pt)" robot.respond /scorekeeper$|show(?: me)?(?: the)? (?:scorekeeper|scoreboard)$/i, (msg) -> scorekeeper.rank (error, result) ->