How to write plugins - NeoCat/twicli GitHub Wiki
twicli のプラグインは、本体 JavaScript を読み込んだあとに <script src=“…”> の形で読み込まれます。
設定画面(「+」タブ)の Preferences というところをクリックして、Plugins という欄に URL を追加することで導入できます。
本体 JavaScript の関数や変数はグローバルなので、プラグインから上書きしてしまえば挙動を変えられます。ただし、それをやってしまうと修正しにくくなったり、本体の変更によって動かなくなることがあるので、出来る限りプラグイン API を使うようにしましょう。
registerPlugin を使って、挙動をフックできます。
例えばプラグインでこのように書くと、
registerPlugin({ newMessageElement : findShortUrls });
“newMessageElement” というフックポイントで findShortUrls という関数(同じプラグイン内に記述してください)が実行されます。findShortUrls に渡される引数は、tweet を表す DOM 要素と tweet オブジェクトです。
tweet を表す DOM 要素というのは、ユーザー名、本文、アイコン、投稿時間などが入った <div> 要素のことです。
tweet オブジェクトというのは、twitter API から受け取った JSONP をオブジェクトにしたものです。(参考 Twitter API Wiki の XML を脳内変換してください)
代表的なフックポイントと引数を下に列挙します。
フックポイント | 説明 | 引数 (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);
のようにしてフックポイントを設置しています。