## Contact support@pubnub.com for all questions #### [PubNub](http://www.pubnub.com) Real-time Data Network ##### Twisted Migration #### Import ``` # Pre 3.5: from Pubnub import Pubnub # New in 3.5+ from Pubnub import PubnubTwisted as Pubnub ``` #### Init ``` # Pre 3.5: pubnub = Pubnub( "demo", ## PUBLISH_KEY "demo", ## SUBSCRIBE_KEY False ## SSL_ON? ) # New in 3.5+ pubnub = Pubnub(publish_key="demo", subscribe_key="demo", ssl_on=False) ``` #### PUBLISH ``` channel = 'hello_world' message = 'Hello World !!!' # Pre 3.5: def callback(messages): print(messages) pubnub.publish( { 'channel' : channel, 'message' : message, 'callback' : callback }) # New in 3.5+ def callback(message): print(message) pubnub.publish(channel, message, callback=callback, error=callback) ``` #### SUBSCRIBE ``` # Listen for Messages channel = 'hello_world' # Pre 3.5: def connected() : print('CONNECTED') def message_received(message): print(message) pubnub.subscribe({ 'channel' : channel, 'connect' : connected, 'callback' : message_received }) # New in 3.5+ def callback(message, channel): print(message) def error(message): print("ERROR : " + str(message)) def connect(message): print("CONNECTED") def reconnect(message): print("RECONNECTED") def disconnect(message): print("DISCONNECTED") pubnub.subscribe(channel, callback=callback, error=callback, connect=connect, reconnect=reconnect, disconnect=disconnect) ``` #### Unsubscribe Once subscribed, you can easily, gracefully, unsubscribe: ``` # Pre 3.5: pubnub.unsubscribe({ 'channel' : 'hello_world' }) # New in 3.5+ pubnub.unsubscribe(channel='hello_world') ``` #### PRESENCE ``` # Pre 3.5: # # New in 3.5+ # Listen for Presence Event Messages channel = 'hello_world' def callback(message, channel): print(message) def error(message): print("ERROR : " + str(message)) pubnub.presence(channel, callback=callback, error=callback) ``` #### HERE_NOW ``` channel = 'hello_world' # Pre 3.5: def callback(messages): print(messages) pubnub.here_now( { 'channel' : channel, 'callback' : callback }) # New in 3.5+ # Get info on who is here right now! def callback(message): print(message) pubnub.here_now(channel, callback=callback, error=callback) ``` #### HISTORY ``` channel = 'hello_world' # Pre 3.5: def history_complete(messages): print(messages) pubnub.history( { 'channel' : channel, 'limit' : 2, 'callback' : history_complete }) # New in 3.5+ def callback(message): print(message) pubnub.history(channel, count=2, callback=callback, error=callback) ``` #### IO Event Loop ``` # Pre 3.5: reactor.run() # New in 3.5+ pubnub.start() ``` ## Contact support@pubnub.com for all questions id=efe33a5e2196efb45596fb64daaec16dfe1da613'>src/reader.js
blob: ded573c16ad2de5de29bab31ea034e58a7d86782 (plain)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/**
 * All reading related code here. This is so that we can separate the async code from sync code
 * for testability
 */

exports.collect = collect;

var ngdoc = require('./ngdoc.js'),
    Q = require('qq'),
    qfs = require('q-fs');

var NEW_LINE = /\n\r?/;

function collect() {
  var allDocs = [];

  //collect docs in JS Files
  var path = 'src';
  var promiseA = Q.when(qfs.listTree(path), function(files) {
    var done;
    //read all files in parallel.
    files.forEach(function(file) {
      var work;
      if(/\.js$/.test(file)) {
        work = Q.when(qfs.read(file, 'b'), function(content) {
          processJsFile(content, file).forEach (function(doc) {
            allDocs.push(doc);
          });
        });
      }
      done = Q.when(done, function() {
        return work;
      });
    });
    return done;
  });

   //collect all ng Docs in Content Folder
   var path2 = 'docs/content';
   var promiseB = Q.when(qfs.listTree(path2), function(files){
     var done2;
     files.forEach(function(file) {
       var work2;
       if (file.match(/\.ngdoc$/)) {
         work2 = Q.when(qfs.read(file, 'b'), function(content){
            var section = '@section ' + file.split('/')[2] + '\n';
            allDocs.push(new ngdoc.Doc(section + content.toString(),file, 1).parse());
          });
       }
       done2 = Q.when(done2, function() {
         return work2;
       });
     });
     return done2;
   });

  return Q.join(promiseA, promiseB, function() {
    return allDocs;
  });
}

function processJsFile(content, file) {
  var docs = [];
  var lines = content.toString().split(NEW_LINE);
  var text;
  var startingLine ;
  var match;
  var inDoc = false;

  lines.forEach(function(line, lineNumber){
    lineNumber++;
    // is the comment starting?
    if (!inDoc && (match = line.match(/^\s*\/\*\*\s*(.*)$/))) {
      line = match[1];
      inDoc = true;
      text = [];
      startingLine = lineNumber;
    }
    // are we done?
    if (inDoc && line.match(/\*\//)) {
      text = text.join('\n');
      text = text.replace(/^\n/, '');
      if (text.match(/@ngdoc/)){
        //console.log(file, startingLine)
        docs.push(new ngdoc.Doc('@section api\n' + text, file, startingLine).parse());
      }
      doc = null;
      inDoc = false;
    }
    // is the comment add text
    if (inDoc){
      text.push(line.replace(/^\s*\*\s?/, ''));
    }
  });
  return docs;
}