twterm 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/twterm/environment.rb +4 -4
- data/lib/twterm/event/open_photo.rb +1 -1
- data/lib/twterm/event/status_deleted.rb +11 -0
- data/lib/twterm/photo_viewer.rb +3 -3
- data/lib/twterm/photo_viewer_backend/abstract_photo_viewer_backend.rb +2 -2
- data/lib/twterm/photo_viewer_backend/browser_backend.rb +2 -2
- data/lib/twterm/photo_viewer_backend/imgcat_backend.rb +2 -2
- data/lib/twterm/photo_viewer_backend/quick_look_backend.rb +2 -2
- data/lib/twterm/streaming_client.rb +1 -1
- data/lib/twterm/tab/key_assignments_cheatsheet.rb +1 -0
- data/lib/twterm/tab/status_tab.rb +1 -1
- data/lib/twterm/tab/statuses/abstract_statuses_tab.rb +2 -2
- data/lib/twterm/tab/user_tab.rb +44 -13
- data/lib/twterm/tweetbox.rb +19 -2
- data/lib/twterm/user.rb +4 -2
- data/lib/twterm/version.rb +1 -1
- metadata +3 -3
- data/lib/twterm/event/status/delete.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5059f1ee80a71d21c74f4131143a74c250a39db8f34ef758f594a07a9c05c980
|
4
|
+
data.tar.gz: 27dff9906c217a17b482c6c3df44e87bbac5df74b624a8d430f0baadbaa308a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 104eb1d6cbd160193ab940e7190126d8280a81247a68e404864f70a2aa5e06b2448075c3a53e360d8b76edc091fa375c3f09d63db7d85f8a0c9837689bbfbd21
|
7
|
+
data.tar.gz: d6b06359ee0330e8a3f4631286564dd49f7a56f3e0cf979bd98a2cb693380b4a981abda81343b73c43825489b26063c17f8f70add1d53ed0b6b6aaf65cb45026
|
data/lib/twterm/environment.rb
CHANGED
@@ -6,10 +6,10 @@ module Twterm
|
|
6
6
|
@uname = `uname`.strip
|
7
7
|
|
8
8
|
@terminal_notifier_available = TerminalNotifier.available?
|
9
|
-
@with_eog = system('which eog
|
10
|
-
@with_imgcat = system('which imgcat
|
11
|
-
@with_tmux = system('which tmux
|
12
|
-
@with_qlmanage = system('which qlmanage
|
9
|
+
@with_eog = system('which eog >/dev/null 2>&1')
|
10
|
+
@with_imgcat = system('which imgcat >/dev/null 2>&1')
|
11
|
+
@with_tmux = system('which tmux >/dev/null 2>&1') && !ENV['TMUX'].nil?
|
12
|
+
@with_qlmanage = system('which qlmanage >/dev/null 2>&1')
|
13
13
|
end
|
14
14
|
|
15
15
|
def darwin?
|
data/lib/twterm/photo_viewer.rb
CHANGED
@@ -25,11 +25,11 @@ module Twterm
|
|
25
25
|
|
26
26
|
attr_reader :backends, :preferences
|
27
27
|
|
28
|
-
# @param
|
28
|
+
# @param url [Addressable::URI]
|
29
29
|
# @return [void]
|
30
|
-
def view(
|
30
|
+
def view(url)
|
31
31
|
backends.each do |key, backend|
|
32
|
-
backend.view(
|
32
|
+
backend.view(url) if preferences[:photo_viewer_backend, key]
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -5,7 +5,7 @@ module Twterm
|
|
5
5
|
# @abstract
|
6
6
|
class AbstractPhotoViewerBackend
|
7
7
|
# @abstract
|
8
|
-
def view(
|
8
|
+
def view(_url)
|
9
9
|
raise NotImplementedError, '`view` method must be implemented'
|
10
10
|
end
|
11
11
|
|
@@ -18,7 +18,7 @@ module Twterm
|
|
18
18
|
system('stty -raw echo')
|
19
19
|
end
|
20
20
|
|
21
|
-
# @param url [
|
21
|
+
# @param url [#to_s]
|
22
22
|
# @yieldparam file [File]
|
23
23
|
def with_downloaded_file(url, &block)
|
24
24
|
uri = URI.parse(url)
|
@@ -9,12 +9,12 @@ module Twterm
|
|
9
9
|
class ImgcatBackend < AbstractPhotoViewerBackend
|
10
10
|
include Publisher
|
11
11
|
|
12
|
-
def view(
|
12
|
+
def view(url)
|
13
13
|
Curses.close_screen unless Curses.closed?
|
14
14
|
|
15
15
|
puts "\e[H\e[2JDownloading..."
|
16
16
|
|
17
|
-
with_downloaded_file(
|
17
|
+
with_downloaded_file(url) do |file|
|
18
18
|
begin
|
19
19
|
puts "\e[H\e[2JRendering..."
|
20
20
|
system "imgcat #{file.path}"
|
@@ -3,8 +3,8 @@ require 'twterm/photo_viewer_backend/abstract_photo_viewer_backend'
|
|
3
3
|
module Twterm
|
4
4
|
module PhotoViewerBackend
|
5
5
|
class QuickLookBackend < AbstractPhotoViewerBackend
|
6
|
-
def view(
|
7
|
-
with_downloaded_file(
|
6
|
+
def view(url)
|
7
|
+
with_downloaded_file(url) do |file|
|
8
8
|
`qlmanage -p #{file.path} 2>/dev/null`
|
9
9
|
end
|
10
10
|
end
|
@@ -84,7 +84,7 @@ module Twterm
|
|
84
84
|
when Twitter::Streaming::FriendList
|
85
85
|
user_stream_connected!
|
86
86
|
when Twitter::Streaming::DeletedTweet
|
87
|
-
publish(Event::
|
87
|
+
publish(Event::StatusDeleted.new(event.id))
|
88
88
|
end
|
89
89
|
end
|
90
90
|
rescue Twitter::Error::TooManyRequests
|
@@ -185,7 +185,7 @@ module Twterm
|
|
185
185
|
when Twitter::Entity::URI
|
186
186
|
publish(Event::OpenURI.new(item.expanded_url))
|
187
187
|
when Twitter::Media::Photo
|
188
|
-
publish(Event::OpenPhoto.new(item))
|
188
|
+
publish(Event::OpenPhoto.new(item.media_url_https))
|
189
189
|
when Twitter::Media::AnimatedGif, Twitter::Media::Video
|
190
190
|
url = item.video_info.variants.max { |v| v.bitrate }.url
|
191
191
|
publish(Event::OpenURI.new(url))
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'concurrent'
|
2
2
|
|
3
3
|
require 'twterm/event/open_uri'
|
4
|
-
require 'twterm/event/
|
4
|
+
require 'twterm/event/status_deleted'
|
5
5
|
require 'twterm/event/status_garbage_collected'
|
6
6
|
require 'twterm/image_builder/user_name_image_builder'
|
7
7
|
require 'twterm/publisher'
|
@@ -77,7 +77,7 @@ module Twterm
|
|
77
77
|
|
78
78
|
@status_ids = Concurrent::Array.new
|
79
79
|
|
80
|
-
subscribe(Event::
|
80
|
+
subscribe(Event::StatusDeleted) { |e| delete(e.status_id) }
|
81
81
|
subscribe(Event::StatusGarbageCollected) { |e| @status_ids.delete(e.id) }
|
82
82
|
end
|
83
83
|
|
data/lib/twterm/tab/user_tab.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
require 'twterm/event/open_photo'
|
1
2
|
require 'twterm/event/open_uri'
|
2
|
-
require 'twterm/publisher'
|
3
3
|
require 'twterm/image_builder/user_name_image_builder'
|
4
|
+
require 'twterm/publisher'
|
4
5
|
require 'twterm/tab/abstract_tab'
|
5
6
|
require 'twterm/tab/user_list_management'
|
6
7
|
|
@@ -44,18 +45,21 @@ module Twterm
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def items
|
47
|
-
items =
|
48
|
-
open_timeline_tab
|
49
|
-
show_friends
|
50
|
-
show_followers
|
51
|
-
show_likes
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
48
|
+
items = [
|
49
|
+
:open_timeline_tab,
|
50
|
+
:show_friends,
|
51
|
+
:show_followers,
|
52
|
+
:show_likes,
|
53
|
+
:profile_image,
|
54
|
+
(:profile_background_image unless user.profile_background_image.nil?),
|
55
|
+
:manage_lists,
|
56
|
+
(:compose_direct_message unless myself?),
|
57
|
+
(:open_website unless user.website.nil?),
|
58
|
+
(:toggle_follow unless myself?),
|
59
|
+
(:toggle_mute unless myself?),
|
60
|
+
(:toggle_block unless myself?),
|
61
|
+
:open_in_browser,
|
62
|
+
].compact
|
59
63
|
|
60
64
|
items
|
61
65
|
end
|
@@ -139,11 +143,26 @@ module Twterm
|
|
139
143
|
user_id == client.user_id
|
140
144
|
end
|
141
145
|
|
146
|
+
def open_in_browser
|
147
|
+
event = Event::OpenURI.new(user.url)
|
148
|
+
publish(event)
|
149
|
+
end
|
150
|
+
|
142
151
|
def open_list_management_tab
|
143
152
|
tab = Tab::UserListManagement.new(app, client, user_id)
|
144
153
|
app.tab_manager.add_and_show(tab)
|
145
154
|
end
|
146
155
|
|
156
|
+
def open_profile_background_image
|
157
|
+
event = Event::OpenPhoto.new(user.profile_background_image)
|
158
|
+
publish(event)
|
159
|
+
end
|
160
|
+
|
161
|
+
def open_profile_image
|
162
|
+
event = Event::OpenPhoto.new(user.profile_image)
|
163
|
+
publish(event)
|
164
|
+
end
|
165
|
+
|
147
166
|
def open_timeline_tab
|
148
167
|
tab = Tab::Statuses::UserTimeline.new(app, client, user_id)
|
149
168
|
app.tab_manager.add_and_show(tab)
|
@@ -161,10 +180,16 @@ module Twterm
|
|
161
180
|
compose_direct_message
|
162
181
|
when :manage_lists
|
163
182
|
open_list_management_tab
|
183
|
+
when :open_in_browser
|
184
|
+
open_in_browser
|
164
185
|
when :open_timeline_tab
|
165
186
|
open_timeline_tab
|
166
187
|
when :open_website
|
167
188
|
open_website
|
189
|
+
when :profile_background_image
|
190
|
+
open_profile_background_image
|
191
|
+
when :profile_image
|
192
|
+
open_profile_image
|
168
193
|
when :show_likes
|
169
194
|
show_likes
|
170
195
|
when :show_followers
|
@@ -291,10 +316,16 @@ module Twterm
|
|
291
316
|
else
|
292
317
|
Image.string('Mute this user')
|
293
318
|
end
|
319
|
+
when :open_in_browser
|
320
|
+
Image.string("Open this user in browser (#{user.url})")
|
294
321
|
when :open_timeline_tab
|
295
322
|
Image.number(user.statuses_count) - Image.whitespace - Image.plural(user.statuses_count, 'tweet')
|
296
323
|
when :open_website
|
297
324
|
Image.string("Open website (#{user.website})")
|
325
|
+
when :profile_background_image
|
326
|
+
Image.string('View profile background image')
|
327
|
+
when :profile_image
|
328
|
+
Image.string('View profile image')
|
298
329
|
when :show_likes
|
299
330
|
Image.number(user.favorites_count) - Image.whitespace - Image.plural(user.favorites_count, 'like')
|
300
331
|
when :show_followers
|
data/lib/twterm/tweetbox.rb
CHANGED
@@ -38,9 +38,9 @@ module Twterm
|
|
38
38
|
def reply(status)
|
39
39
|
screen_name = app.user_repository.find(status.user_id).screen_name
|
40
40
|
leading_text = "\e[1mReplying to @#{screen_name}\e[0m\n\n#{status.text}"
|
41
|
-
prompt =
|
41
|
+
prompt = { prompt: '> ', init_text: "@#{screen_name} " }
|
42
42
|
|
43
|
-
ask_and_post(leading_text, prompt, -> body {
|
43
|
+
ask_and_post(leading_text, prompt, -> body { body }, { in_reply_to_status_id: status.id })
|
44
44
|
end
|
45
45
|
|
46
46
|
private
|
@@ -51,6 +51,13 @@ module Twterm
|
|
51
51
|
app.completion_manager.set_default_mode!
|
52
52
|
|
53
53
|
thread = Thread.new do
|
54
|
+
if prompt.is_a?(Hash)
|
55
|
+
if prompt.include?(:init_text)
|
56
|
+
init_readline_text(prompt[:init_text])
|
57
|
+
end
|
58
|
+
prompt = prompt[:prompt] || '> '
|
59
|
+
end
|
60
|
+
|
54
61
|
raw_text = ''
|
55
62
|
|
56
63
|
loop do
|
@@ -102,6 +109,16 @@ module Twterm
|
|
102
109
|
ask(prompt, postprocessor) { |text| client.post(postprocessor.call(text), options) }
|
103
110
|
end
|
104
111
|
|
112
|
+
def init_readline_text(text)
|
113
|
+
old_pre_input_hook = Readline.pre_input_hook
|
114
|
+
Readline.pre_input_hook = lambda do
|
115
|
+
old_pre_input_hook.call if old_pre_input_hook
|
116
|
+
Readline.insert_text(text)
|
117
|
+
Readline.redisplay
|
118
|
+
Readline.pre_input_hook = old_pre_input_hook
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
105
122
|
def reset
|
106
123
|
reset_prog_mode
|
107
124
|
sleep 0.1
|
data/lib/twterm/user.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Twterm
|
2
2
|
class User
|
3
3
|
attr_reader :description, :favorites_count, :followers_count,
|
4
|
-
:friends_count, :id, :location, :name, :protected,
|
5
|
-
:screen_name, :statuses_count, :url, :verified, :website
|
4
|
+
:friends_count, :id, :location, :name, :protected, :profile_image,
|
5
|
+
:profile_background_image, :screen_name, :statuses_count, :url, :verified, :website
|
6
6
|
alias_method :protected?, :protected
|
7
7
|
alias_method :verified?, :verified
|
8
8
|
|
@@ -24,6 +24,8 @@ module Twterm
|
|
24
24
|
@followers_count = user.followers_count
|
25
25
|
@url = user.url
|
26
26
|
@verified = user.verified?
|
27
|
+
@profile_image = user.profile_image_uri_https
|
28
|
+
@profile_background_image = user.profile_banner_uri_https
|
27
29
|
|
28
30
|
self
|
29
31
|
end
|
data/lib/twterm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twterm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Kameoka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -258,9 +258,9 @@ files:
|
|
258
258
|
- lib/twterm/event/screen/refresh.rb
|
259
259
|
- lib/twterm/event/screen/resize.rb
|
260
260
|
- lib/twterm/event/status/abstract_status_event.rb
|
261
|
-
- lib/twterm/event/status/delete.rb
|
262
261
|
- lib/twterm/event/status/mention.rb
|
263
262
|
- lib/twterm/event/status/timeline.rb
|
263
|
+
- lib/twterm/event/status_deleted.rb
|
264
264
|
- lib/twterm/event/status_garbage_collected.rb
|
265
265
|
- lib/twterm/event/user_garbage_collected.rb
|
266
266
|
- lib/twterm/event_dispatcher.rb
|