« index

Coverage for /home/spion/Documents/ircee/lib/ircee.js : 100%

45 lines | 45 run | 0 missing | 0 partial | 8 blocks | 8 blocks run | 0 blocks missing

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

  var split = require('split'),
      Stream = require('stream'),
      duplex = require('duplexer'),
      protocol = require('./protocol');
  
  
  module.exports = function(opt) {
      var out = new Stream(), inp = split();
      var self = duplex(inp, out);
      
      out.readable = true;
  
      self.send = function irc_send() {
          out.emit('data', protocol.construct(arguments));
          return self;
      }
      self.send.raw = out.emit.bind(out, 'data');
  
      self.on('pipe', function(src) {
          src.on('connect', function() {
              self.emit('connect', src)
          });
      });
  
      inp.on('data', function(line) {
          var data = protocol.parse(line);
          var evt = data.cmd.toLowerCase();
          if (~['data', 'drain', 'end', 'error', 'close', 'pipe'].indexOf(evt))
              evt = 'irc-' + data.cmd;
          self.emit('event', data);
          self.emit(evt, data);
      });
      
      var modules = { exports: [], used: [] }
      self.use = function(f) {
          var moduleId = modules.used.indexOf(f);
          if (moduleId != -1) 
              return modules.exports[moduleId];
          var instance = f(self);
          modules.exports.push(instance);
          modules.used.push(f);
          return instance;
      }
      return self;
  };
« index | cover.io