1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
|
# -*- coding: utf-8 -*-
=begin rdoc
Model用のmoduleで、これをincludeするとMessageに必要最低限のメソッドがロードされ、タイムラインなどに表示できるようになる。
=end
module Diva::Model::MessageMixin
extend Gem::Deprecate
# この投稿がMentionで、自分が誰かに宛てたものであれば真
# ==== Return
# [true] 自分のMention
# [false] 上記以外
def mentioned_by_me?
false
end
# この投稿を、現在の _Service.primary_ でお気に入りとしてマークする。
# ==== Args
# [_fav] bool お気に入り状態。真ならお気に入りにし、偽なら外す
# ==== Return
# [Deferred] 成否判定
def favorite(_fav=true)
Deferred.new{ true }
end
# この投稿が、 _counterpart_ にお気に入り登録されているか否かを返す。
# ==== Args
# [counterpart] お気に入りに追加する側のオブジェクト(Worldやユーザ等)。省略した場合は現在選択されているWorld
# ==== Return
# [true] お気に入りに登録している
# [false] 登録していない
def favorite?(counterpart=nil)
false
end
# このDivaをお気に入りに登録している _Diva::Model_ を列挙する。
# ==== Return
# [Enumerable<Diva::Model>] お気に入りに登録しているオブジェクト
def favorited_by
[]
end
# この投稿が、 _Service.primary_ でお気に入りの対応状況を取得する。
# 既にお気に入りに追加されているとしても、Serviceが対応しているならtrueとなる。
# ==== Args
# [counterpart] お気に入りに追加する側のオブジェクト(Worldやユーザ等)。省略した場合は現在選択されているWorld
# ==== Return
# [true] お気に入りに対応している
# [false] 対応していない
def favoritable?(counterpart=nil)
false
end
# このDiva::ModelをShareする。
# ShareとはMastodonのboostのように、自分をフォローしている他人に対して、第三者の投稿を共有すること。
# ==== Return
# [Deferred] 成否判定
def retweet
Deferred.new{ true }
end
# このインスタンスがShareの基準を満たしているか否かを返す。
# ==== Return
# [true] このインスタンスはShareである
# [false] Shareではない
def retweet?
false
end
# _counterpart_ で、このインスタンスがShareされているか否かを返す
# ==== Args
# [counterpart] お気に入りに追加する側のオブジェクト(Worldやユーザ等)。省略した場合は現在選択されているWorld
# ==== Return
# [true] 既にShareしている
# [false] していない
def retweeted?(counterpart=nil)
false
end
# このインスタンスのShareにあたる _Diva::Model_ を列挙する。
# ==== Return
# [Enumerable<Diva::Model>] このインスタンスのShareにあたるインスタンス
def retweeted_by
[]
end
# _counterpart_ が、このインスタンスをShareすることに対応しているか否かを返す
# 既にShareしている場合は、必ず _true_ を返す。
# ==== Args
# [counterpart] お気に入りに追加する側のオブジェクト(Worldやユーザ等)。省略した場合は現在選択されているWorld
# ==== Return
# [true] Shareに対応している
# [false] していない
def retweetable?(counterpart=nil)
false
end
# このMessageがShareなら、何のShareであるかを返す。
# 返される値の retweet? は常に false になる
# ==== Args
# [force_retrieve] 真なら、投稿がメモリ上に見つからなかった場合外部APIリクエストを発行する
# ==== Return
# [Diva::Model] Share元のMessage
# [nil] Shareではない
def retweet_source(force_retrieve=nil)
nil
end
def quoting?
false
end
# 投稿の宛先になっている投稿を再帰的にさかのぼり、それぞれを引数に取って
# ブロックが呼ばれる。
# ブロックが渡されていない場合、 _Enumerator_ を返す。
# _force_retrieve_ は、 Message#receive_message の引数にそのまま渡される
# ==== Return
# obj|Enumerator
def each_ancestor
Enumerator.new{|y| y << self }
end
# 投稿の宛先になっている投稿を再帰的にさかのぼり、それらを配列にして返す。
# 配列インデックスが大きいものほど、早く投稿された投稿になる。
# ([0]は[1]へのリプライ)
def ancestors(force_retrieve=false)
[self]
end
# 投稿の宛先になっている投稿を再帰的にさかのぼり、何にも宛てられていない投稿を返す。
# つまり、一番祖先を返す。
def ancestor(force_retrieve=false)
ancestors(force_retrieve).last
end
def has_receive_message?
false
end
def to_show
@to_show ||= description.gsub(/&(gt|lt|quot|amp);/){|m| {'gt' => '>', 'lt' => '<', 'quot' => '"', 'amp' => '&'}[$1] }.freeze
end
def to_message
self
end
alias :message :to_message
def system?
false
end
def modified
self[:modified] || created
end
def from_me?(counterpart=nil)
false
end
def to_me?(counterpart=nil)
false
end
def idname
user.idname
end
def repliable?(counterpart=nil)
false
end
def perma_link
nil
end
def receive_user_idnames
[]
end
alias :receive_user_screen_names :receive_user_idnames
deprecate :receive_user_screen_names, "receive_user_idnames", 2020, 7
end
|