How to write plugins - NeoCat/twicli GitHub Wiki

プラグインの作り方

基本

twicli のプラグインは、本体 JavaScript を読み込んだあとに <script src=“…”> の形で読み込まれます。

設定画面(「+」タブ)の Preferences というところをクリックして、Plugins という欄に URL を追加することで導入できます。

本体 JavaScript の関数や変数はグローバルなので、プラグインから上書きしてしまえば挙動を変えられます。ただし、それをやってしまうと修正しにくくなったり、本体の変更によって動かなくなることがあるので、出来る限りプラグイン API を使うようにしましょう。

プラグイン API

registerPlugin を使って、挙動をフックできます。

例えばプラグインでこのように書くと、

registerPlugin({
    newMessageElement : findShortUrls
  });

“newMessageElement” というフックポイントで findShortUrls という関数(同じプラグイン内に記述してください)が実行されます。findShortUrls に渡される引数は、tweet を表す DOM 要素と tweet オブジェクトです。

tweet を表す DOM 要素というのは、ユーザー名、本文、アイコン、投稿時間などが入った <div> 要素のことです。

tweet オブジェクトというのは、twitter API から受け取った JSONP をオブジェクトにしたものです。(参考 Twitter API WikiXML を脳内変換してください)

代表的なフックポイントと引数を下に列挙します。

フックポイント 説明 引数 (1) 引数 (2) 引数 (3) 引数 (4)
init 初期化後、タイムライン表示前
update 新着を取得しに行く前
post ポスト直前 ポストする文字 (読み専用)
newMessageElement 新着 tweet を表示する前 tweet DOM 要素 tweet オブジェクト
switchTo タブを移動するとき 移動するタブの DOM 要素
miscTab 設定タブに移動するとき 設定タブの DOM 要素
popup ▼ ボタンを押してポップアップを出す前 ポップアップの DOM 要素 ユーザー名 tweet ID tweet DOM 要素
newUserInfoElement User タブでユーザー情報を表示後 ユーザー情報の DOM 要素 user オブジェクト
newUserRelationship User タブでフォロー関係を表示後 ユーザー情報の DOM 要素 relationship オブジェクト

2011年3月30日現在。増えたり変わったりする可能性があるので全部は列挙してません。twicli.js で “callPlugins” と検索すると見つかります。

備考

当然ですが、ページの DOM 要素も自由に触ることができます。ただし、あまり特殊なことをやると、本体のアップデートにより動かなくなったりしますので注意してください。

自分だけで使う場合は何を書いても問題ありませんが、配布する場合は、セキュリティに気をつける(XSS 対策など)はもちろんのこと、他のブラウザでもそれなりに動くように考えてあげてください。

自分でプラグインを作るときも、他のプラグインと連携しやすくするためにフックポイントを付けてもかまいません。例えば resolve_url.js というプラグインでは、

callPlugins("replaceUrl", link.parentNode.parentNode, link, longUrl, shortUrl);

のようにしてフックポイントを設置しています。

⚠️ **GitHub.com Fallback** ⚠️