c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

favを禁止する #AzureaScript

特定の条件に当てはまるtweetへ、favを禁止します。定数BANNINGを編集してください。
キーボードショートカットのFと0を上書きします。

codeは右記のAzurea Wikiにて管理します。[Scripts/banFav.js - Azurea Wiki http://azurea.info/ja/wiki/index.php?Scripts%2FbanFav.js ]

/**
 * @fileOverview Ban favorite with conditions.
 * @author ne_Sachirou
 * @version 2012/12/07
 * @license Public Domain
 */

/** @const */
var BANNING = {
  /** @type {Array.<string>} */
  user: [ 'ne_sachirou', 'c4se_always' ],

  /** @type {Array.<RegExp>} */
  regex: [],

  /** @type {Array.<function(StatusObject):boolean>} */
  fun: []
};

/**
 * @param {Array.<Object>} conditions
 * @param {function(Object):boolean} fun
 * @return {boolean}
 */
function check (conditions, fun) {
  var i = iz = 0;

  for (i = 0, iz = conditions.length; i < iz; ++i) {
    if (fun(conditions[i])) return true;
  }
  return false;
}

/**
 * @param {String} status_id
 */
function favorite (status_id) {
  var status = TwitterService.status.get(status_id);

  if (status.favorited) {
    TwitterService.favorite.destroy(status_id);
    return;
  }
  if (check(BANNING.user,
            function (user) { return status.user.screen_name === user; }) ||
      check(BANNING.regex,
            function (regex) { return regex.test(status.text); }) ||
      check(BANNING.fun,
            function (fun) { return fun(status); })) {
    System.showNotice('Banned to favorite.');
    return;
  }
  TwitterService.favorite.create(status_id);
}

System.addKeyBindingHandler(
  'F'.charCodeAt(0),
  0,
  function (status_id) { favorite(status_id); });
System.addKeyBindingHandler(
  '0'.charCodeAt(0),
  0,
  function (status_id) { favorite(status_id); });
// System.addGestureHandler([], function (status_id) { favorite(status_id); });