「URL指定でツイートを表示」コマンドは、dialog DSLを使うともっとシンプルに書けるし、開くときもURLから数字を取り出すんじゃなくてopen()に渡してintentを使うようにすればもっと汎用的になりそうに見える。
任意の ID の Tweet を見るプラグインはおさけーさんのこれ (リクエストしたら作ってもらえた) https://github.com/osak/show_tweet
フォロー関係とかプロフィールとかは無視してAccoutモデルのintentでユーザーの直近タイムラインを取ってきて適当に作ったタブに投げ込むやつ作るか……
ユーザーのタイムラインを見るやつがめんどい理由 https://mstdn.kanagu.info/@cobodo/100042538949582682
twitterのMessageモデルがどうしたいかには一切踏み込まず、デフォルトで引数のModelのdescriptionを呼ぶだけのフィルタを使う提案を書いて、通ったらWorldon側でそれを使う改修を入れる感じか。
前者はModel#descriptionメソッドで表明する。後者はscore_filterだけど追加できるのでModel自身にすべて制御できるわけではない。
Diva::Modelに関係するdescriptionには2種類あって、
1. Modelが表現する内容を記述した文字列
2. Modelを表示するときに使う文字列=score.map(&:description).join
ということになるか……
「本文をコピー」コマンドは(slugの通り)単に :copy_description するコマンドであって、表示のカスタマイズをscoreでやっているのだから敢えてコピー用のものを作る必要はない、という感じかもしれない。
表示用の表現と、コピーして他で再利用するための表現は、異なっていてもいいはず(少なくともMastodonでは異なる)ので、「本文をコピー」コマンドをフィルタ化してtwitterプラグインに適用させる提案を作らないといけない。
🎫1233が解決して🎫1286がscoreを使うようになれば、文字列選択コピーでのHTML実体参照問題は解決するだろうけど、「本文をコピー」ではそうはいかないと。
🎫1286は選択範囲の取得にscoreを使うようにすれば済むのかな。それに対して「本文をコピー」はPlugin::Twitter::Message#descriptionの実装(bodyメソッド)が
self[:message].to_s.freeze
となっていてURLがt.coのままになるだけでなくHTML実体参照が解除されない問題も含んでしまう。