• R/O
  • HTTP
  • SSH
  • HTTPS

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

command line interface based Twitter client


File Info

修訂. a4e9f03b0df4f5ecf7d61cef5aaed288b0c83089
大小 1,228 bytes
時間 2014-08-16 20:31:11
作者 hylom
Log Message

fix package.json: to use commander 1.x

Content

var util = require('util');

var buffer = [];
var writable =  false;

/*
 * tweetをコンソールに出力する
 * @param {Object|Array} tweet 出力するtweet、もしくはその配列
 */
exports.write = function (tweet) {
  if (util.isArray(tweet)) {
    tweet.forEach(_write);
  } else {
    _write(tweet);
  }
};

/*
 * tweetのコンソールへの出力を再開する
 */
exports.resume = function () {
  buffer.forEach(function (data) {
    process.stdout.write(data);
  });
  buffer = [];
  writable = true;
},

/*
 * tweetのコンソールへの出力を一時停止する
 */
exports.pause = function () {
  writable = false;
}

// tweetを整形して出力する
function _write(tweet) {
  if (tweet.user === undefined) {
    return;
  }
  var name = tweet.user.name + ' (@' + tweet.user.screen_name + ')';
  var timestamp = tweet.created_at;
  var text = tweet.text;
  _push(name + ' ' + timestamp + '\n');
  _push(text + '\n');
  _push('\n');
}

// コンソールへの書き出しが許可されていれば文字列を出力し
// 許可されていなければバッファに格納する
function _push(data) {
  if (writable) {
    process.stdout.write(data);
  } else {
    buffer.push(data);
  }
};