1 | _ = require "underscore"
|
2 | Fuse = require "fuse.js"
|
3 |
|
4 | class Utils
|
5 | @robot: null
|
6 |
|
7 | @findRoom: (msg) ->
|
8 | room = msg.envelope.room
|
9 | if _.isUndefined(room)
|
10 | room = msg.envelope.user.reply_to
|
11 | room
|
12 |
|
13 | @lookupUserWithGithub: (github) ->
|
14 | return if not github
|
15 |
|
16 | findMatch = (user) ->
|
17 | name = user.name or user.login
|
18 | return unless name
|
19 | users = Utils.robot.brain.users()
|
20 | users = _(users).keys().map (id) ->
|
21 | u = users[id]
|
22 | id: u.id
|
23 | name: u.name
|
24 | real_name: u.real_name
|
25 |
|
26 | f = new Fuse users,
|
27 | keys: ['real_name']
|
28 | shouldSort: yes
|
29 | verbose: no
|
30 | threshold: 0.55
|
31 |
|
32 | results = f.search name
|
33 | result = if results? and results.length >=1 then results[0] else undefined
|
34 | return result
|
35 |
|
36 | if github.fetch?
|
37 | github.fetch().then findMatch
|
38 | else
|
39 | findMatch github
|
40 |
|
41 | module.exports = Utils
|