プロジェクト

全般

プロフィール

提案 #1241

Scoreの初期値をModelが提供できるようにする

cob odo4ヶ月前に追加. 約2ヶ月前に更新.

ステータス:
toshi_aの判断待ち
優先度:
通常
担当者:
-
対象バージョン:
プラグイン名:
ブランチ:

説明

TwitterのEntityや、(Worldonにおける)mastodonのhyperlink情報は、プレーンテキスト化した後のdescriptionだけからは復元できず、テキスト全体に対する位置に強く依存しています。そのため、score_filterの初回処理で選ばれない場合、後段の再帰では処理することができず、情報が失われてしまいます。 cf. #1239

また別の問題として、Twitterが返してくるHTML実体参照を含むテキストは、TextNote化する際にunescapeする必要がありますが、

  • Entityが含まれていない場合はTextNote1つだけを返すしかない(TextNoteとは別の(全く同機能な)クラスを使う方法もありますが……)
  • TextNoteだけが含まれるScoreはscore_by_scoreに無視される

の2つの仕様により、unescapeしたTextNoteを返しても採用されない、という問題があります。 cf. #1233

これらを解決する案として、Modelが :score というメソッドを持つならば、まずそれを呼んでScoreの初期値とし、そこに含まれるTextNoteに対してscore_by_scoreを走らせればいいのではないかと考えました。

Pros

  • twemojiのようなプラグインを入れるとEntityが効かなくなる問題は生じなくなる。
  • テキストのみを持つようなものに対しても細工したTextNoteを返すことができるようになる。
  • サードパーティプラグインで挙動を変更する場合、フィルタでは上書きが困難ですが、インスタンスメソッドであればモンキーパッチできるためわかりやすい。

Cons

  • フィルタの積み重ねと単純な再帰で構成されていたscoreがとっちらかった構造になる

叩き台として試作したパッチを添付します。

model-score.patch (2.12 KB) model-score.patch cob odo, 2018-05-12 20:04

関連するチケット

関連している バグ #1239: 絵文字のあとにメンションがあるとリンクが正しく作らず、リンクもある場合大量のscore_by_regexpが実行され続ける終了
関連している バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている実装待ち
関連している 機能 #1164: Score終了2018-02-07

履歴

#1 cob odo4ヶ月前に更新

添付してなかった(小声)

#2 cob odo4ヶ月前に更新

  • 関連している バグ #1239: 絵文字のあとにメンションがあるとリンクが正しく作らず、リンクもある場合大量のscore_by_regexpが実行され続ける を追加

#3 cob odo4ヶ月前に更新

  • 関連している バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている を追加

#4 cob odo4ヶ月前に更新

#5 cob odo2ヶ月前に更新

  • トラッカー機能 から 提案 に変更
  • ステータス新規 から 分類待ち に変更
  • 開始日 を削除 (2018-05-12)

#6 Izumi Tsutsui約2ヶ月前に更新

  • ステータス分類待ち から toshi_aの判断待ち に変更

他の形式にエクスポート: Atom PDF