File: message_mixin.rb

package info (click to toggle)
mikutter 5.1.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,780 kB
  • sloc: ruby: 22,912; sh: 186; makefile: 21
file content (182 lines) | stat: -rw-r--r-- 5,614 bytes parent folder | download | duplicates (3)
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