Project

General

Profile

Actions

提案 #1241

open

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

Added by cob odo over 6 years ago. Updated over 6 years ago.

Status:
toshi_aの判断待ち
Priority:
通常
Assignee:
-
Target version:
プラグイン名:
ブランチ:

Description

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がとっちらかった構造になる

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


Files

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

Related issues

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

Actions
Actions

Also available in: Atom PDF