flumtter 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +41 -0
  7. data/Rakefile +2 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/exe/flumtter +5 -0
  11. data/flumtter.gemspec +31 -0
  12. data/lib/flumtter.rb +2 -0
  13. data/lib/flumtter/app/core/account_selector.rb +88 -0
  14. data/lib/flumtter/app/core/client.rb +148 -0
  15. data/lib/flumtter/app/core/command.rb +24 -0
  16. data/lib/flumtter/app/core/command/dm.rb +12 -0
  17. data/lib/flumtter/app/core/command/tweet.rb +24 -0
  18. data/lib/flumtter/app/core/command/user.rb +52 -0
  19. data/lib/flumtter/app/core/command/userlist.rb +8 -0
  20. data/lib/flumtter/app/core/core.rb +58 -0
  21. data/lib/flumtter/app/core/curses.rb +90 -0
  22. data/lib/flumtter/app/core/hash.rb +29 -0
  23. data/lib/flumtter/app/core/initializer.rb +28 -0
  24. data/lib/flumtter/app/core/keyboard.rb +54 -0
  25. data/lib/flumtter/app/core/plugins.rb +27 -0
  26. data/lib/flumtter/app/core/string.rb +148 -0
  27. data/lib/flumtter/app/core/terminal.rb +13 -0
  28. data/lib/flumtter/app/core/thread.rb +29 -0
  29. data/lib/flumtter/app/core/toast.rb +26 -0
  30. data/lib/flumtter/app/core/util.rb +107 -0
  31. data/lib/flumtter/app/core/windows/base.rb +16 -0
  32. data/lib/flumtter/app/core/windows/buf_window.rb +194 -0
  33. data/lib/flumtter/app/core/windows/dialog.rb +62 -0
  34. data/lib/flumtter/app/core/windows/dmbase.rb +28 -0
  35. data/lib/flumtter/app/core/windows/dynamic_view.rb +43 -0
  36. data/lib/flumtter/app/core/windows/favorite.rb +31 -0
  37. data/lib/flumtter/app/core/windows/follower.rb +20 -0
  38. data/lib/flumtter/app/core/windows/following.rb +20 -0
  39. data/lib/flumtter/app/core/windows/mention.rb +29 -0
  40. data/lib/flumtter/app/core/windows/popup.rb +35 -0
  41. data/lib/flumtter/app/core/windows/tweet.rb +31 -0
  42. data/lib/flumtter/app/core/windows/tweetbase.rb +24 -0
  43. data/lib/flumtter/app/core/windows/userbase.rb +43 -0
  44. data/lib/flumtter/app/main.rb +3 -0
  45. data/lib/flumtter/app/plugins/commands.rb +15 -0
  46. data/lib/flumtter/app/plugins/commands/account_changer.rb +9 -0
  47. data/lib/flumtter/app/plugins/commands/change_profile.rb +69 -0
  48. data/lib/flumtter/app/plugins/commands/conversation.rb +39 -0
  49. data/lib/flumtter/app/plugins/commands/delete.rb +26 -0
  50. data/lib/flumtter/app/plugins/commands/directmessage.rb +35 -0
  51. data/lib/flumtter/app/plugins/commands/directmessages.rb +33 -0
  52. data/lib/flumtter/app/plugins/commands/favorite.rb +22 -0
  53. data/lib/flumtter/app/plugins/commands/mention.rb +7 -0
  54. data/lib/flumtter/app/plugins/commands/new_tweet.rb +17 -0
  55. data/lib/flumtter/app/plugins/commands/reply.rb +26 -0
  56. data/lib/flumtter/app/plugins/commands/retweet.rb +30 -0
  57. data/lib/flumtter/app/plugins/commands/unfavorite.rb +26 -0
  58. data/lib/flumtter/app/plugins/commands/user.rb +77 -0
  59. data/lib/flumtter/app/plugins/commands/utility.rb +17 -0
  60. data/lib/flumtter/app/plugins/load.rb +16 -0
  61. data/lib/flumtter/app/plugins/pry.rb +12 -0
  62. data/lib/flumtter/app/plugins/timeline.rb +42 -0
  63. data/lib/flumtter/app/plugins/timeline/base.rb +74 -0
  64. data/lib/flumtter/app/plugins/timeline/deleted_tweet.rb +23 -0
  65. data/lib/flumtter/app/plugins/timeline/dm.rb +23 -0
  66. data/lib/flumtter/app/plugins/timeline/event.rb +11 -0
  67. data/lib/flumtter/app/plugins/timeline/fav.rb +43 -0
  68. data/lib/flumtter/app/plugins/timeline/tweet.rb +51 -0
  69. data/lib/flumtter/app/plugins/toast.rb +45 -0
  70. data/lib/flumtter/version.rb +3 -0
  71. metadata +213 -0
@@ -0,0 +1,23 @@
1
+ require_relative 'base'
2
+
3
+ module Flumtter
4
+ module TimeLine
5
+ class DeletedTweet < Base
6
+ class TweetNotFound < KeyError; end
7
+
8
+ def initialize(object, twitter)
9
+ object = @@elements.find{|e|e.is_a?(Twitter::Tweet) && e.id == object.id}
10
+ raise TweetNotFound if object.nil?
11
+ super(object, twitter)
12
+ end
13
+
14
+ def color
15
+ Setting.dig(:color, :timeline, :deletedtweet) || :white
16
+ end
17
+
18
+ def header
19
+ "DELETED ".ljust(Terminal.x, ?-)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'base'
2
+
3
+ module Flumtter
4
+ module TimeLine
5
+ class DirectMessage < Base
6
+ def color
7
+ Setting.dig(:color, :timeline, :directmessage) || :white
8
+ end
9
+
10
+ def user
11
+ "#{@object.sender.name} (@#{@object.sender.screen_name})"
12
+ end
13
+
14
+ def header
15
+ "#{index} ".ljust(Terminal.x, ?-, "@#{@object.sender.screen_name} => @#{@object.recipient.screen_name}")
16
+ end
17
+
18
+ def footer
19
+ created_at
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'base'
2
+
3
+ module Flumtter
4
+ module TimeLine
5
+ class Event < Base
6
+ def header
7
+ "#{index} ".ljust(Terminal.x, ?-, "<< @#{source_user} :(#{info})")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'event'
2
+
3
+ module Flumtter
4
+ module TimeLine
5
+ class FavBase < Event
6
+ def source_user
7
+ @object.source.screen_name
8
+ end
9
+
10
+ def info
11
+ @object.target_object.favorite_count
12
+ end
13
+
14
+ def user
15
+ "#{@object.target_object.user.name} (@#{@object.target_object.user.screen_name})"
16
+ end
17
+
18
+ def created_at
19
+ @object.target_object.created_at.strftime("%Y/%m/%d %H:%M:%S")
20
+ end
21
+
22
+ def body
23
+ @object.target_object.text.nl
24
+ end
25
+
26
+ def footer
27
+ "#{created_at}".ljust(Terminal.x, nil, @object.target_object.via)
28
+ end
29
+ end
30
+
31
+ class Favorite < FavBase
32
+ def color
33
+ Setting.dig(:color, :timeline, :fav) || :white
34
+ end
35
+ end
36
+
37
+ class UnFavorite < FavBase
38
+ def color
39
+ Setting.dig(:color, :timeline, :unfav) || :white
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,51 @@
1
+ require_relative 'event'
2
+
3
+ module Flumtter
4
+ module TimeLine
5
+ class Tweet < Base
6
+ def color
7
+ Setting.dig(:color, :timeline, :normal) || :white
8
+ end
9
+ end
10
+
11
+ class SelfTweet < Base
12
+ def color
13
+ Setting.dig(:color, :timeline, :self) || :white
14
+ end
15
+ end
16
+
17
+ class ReplyTweet < Base
18
+ def color
19
+ Setting.dig(:color, :timeline, :reply) || :white
20
+ end
21
+ end
22
+
23
+ class Retweet < Event
24
+ def source_user
25
+ @object.user.screen_name
26
+ end
27
+
28
+ def info
29
+ @object.retweeted_status.retweet_count
30
+ end
31
+
32
+ def color
33
+ Setting.dig(:color, :timeline, :retweet) || :white
34
+ end
35
+ end
36
+
37
+ class Quote < Event
38
+ def source_user
39
+ @object.user.screen_name
40
+ end
41
+
42
+ def info
43
+ @object.quoted_status.retweet_count
44
+ end
45
+
46
+ def color
47
+ Setting.dig(:color, :timeline, :quote) || :white
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,45 @@
1
+ module Flumtter
2
+ plugin do
3
+ def title(twitter)
4
+ "#{twitter.account.screen_name} Flumtter"
5
+ end
6
+
7
+ Client.on_event(:tweet) do |object, twitter|
8
+ type = object.type(twitter.account)
9
+ if type.include?(:reply_to_me)
10
+ Toast.new(object.text) do |t|
11
+ t.title title(twitter)
12
+ t.subtitle "Mentioned by #{object.user.screen_name}"
13
+ end
14
+ elsif type.include?(:retweet) && object.retweeted_status.user.id == twitter.account.id
15
+ Toast.new(object.text) do |t|
16
+ t.title title(twitter)
17
+ t.subtitle "Retweeted by #{object.user.screen_name}"
18
+ end
19
+ end
20
+ end
21
+
22
+ Client.on_event(:event) do |object, twitter|
23
+ type = object.type(twitter.account)
24
+ if type.include?(:follow)
25
+ Toast.new("Followed by #{object.source.screen_name}") do |t|
26
+ t.title title(twitter)
27
+ end
28
+ elsif type.include?(:favorite)
29
+ Toast.new(object.target_object.text) do |t|
30
+ t.title title(twitter)
31
+ t.subtitle "Favorited by #{object.source.screen_name}"
32
+ end
33
+ end
34
+ end
35
+
36
+ Client.on_event(:directmessage) do |object, twitter|
37
+ unless object.sender.id == twitter.account.id
38
+ Toast.new(object.text) do |t|
39
+ t.title title(twitter)
40
+ t.subtitle "Message by #{object.sender.screen_name}"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module Flumtter
2
+ VERSION = "5.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,213 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flumtter
3
+ version: !ruby/object:Gem::Version
4
+ version: 5.0.1
5
+ platform: ruby
6
+ authors:
7
+ - flum1025
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-02-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.10.4
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.10.4
55
+ - !ruby/object:Gem::Dependency
56
+ name: oauth
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.5.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.5.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: dispel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.8
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.8
83
+ - !ruby/object:Gem::Dependency
84
+ name: terminal-notifier
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.7.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.7.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: twitter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 6.1.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 6.1.0
111
+ description: Twitter Client on Terminal
112
+ email:
113
+ - flum.1025@gmail.com
114
+ executables:
115
+ - flumtter
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - CODE_OF_CONDUCT.md
121
+ - Gemfile
122
+ - Gemfile.lock
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - bin/console
127
+ - bin/setup
128
+ - exe/flumtter
129
+ - flumtter.gemspec
130
+ - lib/flumtter.rb
131
+ - lib/flumtter/app/core/account_selector.rb
132
+ - lib/flumtter/app/core/client.rb
133
+ - lib/flumtter/app/core/command.rb
134
+ - lib/flumtter/app/core/command/dm.rb
135
+ - lib/flumtter/app/core/command/tweet.rb
136
+ - lib/flumtter/app/core/command/user.rb
137
+ - lib/flumtter/app/core/command/userlist.rb
138
+ - lib/flumtter/app/core/core.rb
139
+ - lib/flumtter/app/core/curses.rb
140
+ - lib/flumtter/app/core/hash.rb
141
+ - lib/flumtter/app/core/initializer.rb
142
+ - lib/flumtter/app/core/keyboard.rb
143
+ - lib/flumtter/app/core/plugins.rb
144
+ - lib/flumtter/app/core/string.rb
145
+ - lib/flumtter/app/core/terminal.rb
146
+ - lib/flumtter/app/core/thread.rb
147
+ - lib/flumtter/app/core/toast.rb
148
+ - lib/flumtter/app/core/util.rb
149
+ - lib/flumtter/app/core/windows/base.rb
150
+ - lib/flumtter/app/core/windows/buf_window.rb
151
+ - lib/flumtter/app/core/windows/dialog.rb
152
+ - lib/flumtter/app/core/windows/dmbase.rb
153
+ - lib/flumtter/app/core/windows/dynamic_view.rb
154
+ - lib/flumtter/app/core/windows/favorite.rb
155
+ - lib/flumtter/app/core/windows/follower.rb
156
+ - lib/flumtter/app/core/windows/following.rb
157
+ - lib/flumtter/app/core/windows/mention.rb
158
+ - lib/flumtter/app/core/windows/popup.rb
159
+ - lib/flumtter/app/core/windows/tweet.rb
160
+ - lib/flumtter/app/core/windows/tweetbase.rb
161
+ - lib/flumtter/app/core/windows/userbase.rb
162
+ - lib/flumtter/app/main.rb
163
+ - lib/flumtter/app/plugins/commands.rb
164
+ - lib/flumtter/app/plugins/commands/account_changer.rb
165
+ - lib/flumtter/app/plugins/commands/change_profile.rb
166
+ - lib/flumtter/app/plugins/commands/conversation.rb
167
+ - lib/flumtter/app/plugins/commands/delete.rb
168
+ - lib/flumtter/app/plugins/commands/directmessage.rb
169
+ - lib/flumtter/app/plugins/commands/directmessages.rb
170
+ - lib/flumtter/app/plugins/commands/favorite.rb
171
+ - lib/flumtter/app/plugins/commands/mention.rb
172
+ - lib/flumtter/app/plugins/commands/new_tweet.rb
173
+ - lib/flumtter/app/plugins/commands/reply.rb
174
+ - lib/flumtter/app/plugins/commands/retweet.rb
175
+ - lib/flumtter/app/plugins/commands/unfavorite.rb
176
+ - lib/flumtter/app/plugins/commands/user.rb
177
+ - lib/flumtter/app/plugins/commands/utility.rb
178
+ - lib/flumtter/app/plugins/load.rb
179
+ - lib/flumtter/app/plugins/pry.rb
180
+ - lib/flumtter/app/plugins/timeline.rb
181
+ - lib/flumtter/app/plugins/timeline/base.rb
182
+ - lib/flumtter/app/plugins/timeline/deleted_tweet.rb
183
+ - lib/flumtter/app/plugins/timeline/dm.rb
184
+ - lib/flumtter/app/plugins/timeline/event.rb
185
+ - lib/flumtter/app/plugins/timeline/fav.rb
186
+ - lib/flumtter/app/plugins/timeline/tweet.rb
187
+ - lib/flumtter/app/plugins/toast.rb
188
+ - lib/flumtter/version.rb
189
+ homepage: https://github.com/flum1025/flumtter4
190
+ licenses:
191
+ - MIT
192
+ metadata: {}
193
+ post_install_message:
194
+ rdoc_options: []
195
+ require_paths:
196
+ - lib
197
+ required_ruby_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ required_rubygems_version: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ requirements: []
208
+ rubyforge_project:
209
+ rubygems_version: 2.5.1
210
+ signing_key:
211
+ specification_version: 4
212
+ summary: Twitter Client on Terminal
213
+ test_files: []