-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinput.js
62 lines (52 loc) · 1.55 KB
/
input.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var readline = require("readline")
var through = require("through2")
var Interface = require("./interface.js")
var Screen = require("./neat-screen.js")
var util = require("./util.js")
function readInput(db, nick) {
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
})
var currentChannel = "default"
var interface = Interface(db)
var screen = Screen(inputHandler)
var watcher
loadChannel(currentChannel)
function inputHandler(state, bus) {
state.messages = []
bus = bus
state.channel = "default"
bus.emit("render")
console.log(screen)
}
function monitor(channel) {
// if we monitor a new channel, destroy the old watcher first
if (watcher) watcher.destroy()
watcher = db.watch(channel, () => {
interface.getMessages(channel, 25).then((msg) => {
msg.map((m) => {
screen.writeMessage.bind(screen)(m)
})
})
})
}
var pattern = (/\.(\w*)\s*(.*)/)
rl.on("line", function(line) {
})
function writeMessage(msg) {
var channel = `channels/${currentChannel}`
interface.writeMessage(channel, nick, msg)
}
function loadChannel(name) {
var channel = `channels/${name}`
monitor(channel)
interface.getMessages(channel, 25).then((msg) => {
msg.map((m) => {
screen.writeMessage.bind(screen)(m)
})
})
}
}
module.exports = readInput