weechat

WeeChat Relay Protocol

npm install weechat
3 downloads in the last day
14 downloads in the last week
79 downloads in the last month

WeeChat.js

WeeChat Relay Protocol module for Node.js

npm

npm install weechat

Usage

.connect(host, port, password, [callback])
Connect to WeeChat:
(host, port password, ssl, callback)

var client = weechat.connect('localhost', 8000, 'test', false, function() {
    console.log('Connected!');
});

Or with SSL support:

var client = weechat.connect('localhost', 9001, 'test', true, function() {
    console.log('Connected!');
});

.send(message, [callback])
Send messages to WeeChat:

client.send('input irc.freenode.#weechat hello guys and girls!');

client.send('info version', function(version) {
    console.log(version.value);
});

.on([type], callback) Listeners, when an even occurs in WeeChat:

client.on('_buffer_line_added', function(line) {
    console.log('Got line', line);
});

client.on(function() {
    console.log('Anything happened', arguments);
});

client.on('line', function(line) {
    console.log('Got line', line);
});

Built in listeners
There are some built in aliases making listeners easier to add:
line: New line added
open: Buffer is opened
close: Buffer is closing
renamed: Buffer is renamed
localvar: Local var is added
title: Title (topic) is changed for a buffer
nicklist: Nicklist

Colorizing

The module return only pure WeeChat strings, including coding for colors.
Calling weechat.style(line); will return an array of parts, like this:

[ { text: 'Hello', fg: 'dark cyan', bg: undefined, attrs: [] },
  { text: 'world!' } ]

fg is foreground color, bg is background color, attrs is an array of attributes, such as underline.

The module supports stripping these codes away, returning a plain string, like this:

weechat.noStyle(line);

Full example

var weechat = require('weechat');

var client = weechat.connect('localhost', 8000, 'test', function() {
    console.log('Connected!');

    client.send('info version', function(version) {
        console.log(version.value);
    });
});

client.on('error', function(err) {
    console.error(err);
});

client.on('end', function() {
    console.log('end');
});

client.on('line', function(line) {
    var from = weechat.noStyle(line.prefix);
    var message = weechat.noStyle(line.message);

    console.log(from, message);
});

License

MIT License (c) Eirik Brandtzæg

npm loves you