hubot-bingo
Version:
A hubot script that plays Buzzword bingo
40 lines (30 loc) • 1.02 kB
text/coffeescript
_ = require('lodash')
Ruleset = require('./ruleset')
Scores = require('./scores')
class Bingo
constructor: (rules) ->
= _.mapValues(rules, (data) -> new Ruleset(data))
= {}
= 0
matchAllRules: (message) ->
matches = _.mapValues(, (ruleset) -> ruleset.getMatchedBuzzwords(message))
= _.extend(, matches, _.union)
checkCombo: (buzzwords, name) =>
[name].isBingo(buzzwords)
getWinningCombos: ->
wonCombos = _.pick(, )
= _.omit(, )
++ if not _.isEmpty(wonCombos)
wonCombos
toScores: (result, buzzwords, name) =>
if not _.isEmpty(buzzwords)
result[name] =
currentMatches: buzzwords.length
requiredMatches: [name].requiredMatches
play: (message) ->
(message)
()
getScores: ->
scores = _.transform(, , {})
new Scores(, scores)
module.exports = Bingo