twterm 2.3.0 → 2.4.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/README.md +1 -0
- data/lib/twterm.rb +4 -4
- data/lib/twterm/app.rb +4 -1
- data/lib/twterm/direct_message_composer.rb +2 -1
- data/lib/twterm/environment.rb +5 -0
- data/lib/twterm/event/{base.rb → abstract_event.rb} +1 -1
- data/lib/twterm/event/direct_message/fetched.rb +2 -2
- data/lib/twterm/event/message/abstract_message.rb +2 -2
- data/lib/twterm/event/notification/abstract_notification.rb +2 -2
- data/lib/twterm/event/open_photo.rb +13 -0
- data/lib/twterm/event/open_uri.rb +2 -2
- data/lib/twterm/event/screen/refresh.rb +13 -0
- data/lib/twterm/event/screen/resize.rb +2 -2
- data/lib/twterm/event/status/{base.rb → abstract_status_event.rb} +2 -2
- data/lib/twterm/event/status/delete.rb +2 -2
- data/lib/twterm/event/status/mention.rb +2 -2
- data/lib/twterm/event/status/timeline.rb +2 -2
- data/lib/twterm/event/status_garbage_collected.rb +2 -2
- data/lib/twterm/event/user_garbage_collected.rb +2 -2
- data/lib/twterm/event_dispatcher.rb +2 -2
- data/lib/twterm/photo_viewer.rb +36 -0
- data/lib/twterm/photo_viewer_backend/abstract_photo_viewer_backend.rb +46 -0
- data/lib/twterm/photo_viewer_backend/browser_backend.rb +16 -0
- data/lib/twterm/photo_viewer_backend/imgcat_backend.rb +33 -0
- data/lib/twterm/photo_viewer_backend/quick_look_backend.rb +13 -0
- data/lib/twterm/preferences.rb +10 -0
- data/lib/twterm/publisher.rb +2 -2
- data/lib/twterm/rest_client.rb +5 -5
- data/lib/twterm/screen.rb +8 -6
- data/lib/twterm/status.rb +7 -1
- data/lib/twterm/tab/{base.rb → abstract_tab.rb} +1 -1
- data/lib/twterm/tab/direct_message/conversation.rb +2 -2
- data/lib/twterm/tab/direct_message/conversation_list.rb +2 -2
- data/lib/twterm/tab/key_assignments_cheatsheet.rb +2 -2
- data/lib/twterm/tab/new/{start.rb → index.rb} +2 -2
- data/lib/twterm/tab/new/list.rb +2 -2
- data/lib/twterm/tab/new/search.rb +6 -3
- data/lib/twterm/tab/new/user.rb +8 -7
- data/lib/twterm/tab/preferences/index.rb +9 -3
- data/lib/twterm/tab/preferences/notification_backend.rb +2 -2
- data/lib/twterm/tab/preferences/photo_viewer_backend.rb +86 -0
- data/lib/twterm/tab/rate_limit_status.rb +1 -1
- data/lib/twterm/tab/status_tab.rb +4 -3
- data/lib/twterm/tab/statuses/{base.rb → abstract_statuses_tab.rb} +2 -2
- data/lib/twterm/tab/statuses/conversation.rb +2 -2
- data/lib/twterm/tab/statuses/favorites.rb +2 -2
- data/lib/twterm/tab/statuses/home.rb +2 -2
- data/lib/twterm/tab/statuses/list_timeline.rb +2 -2
- data/lib/twterm/tab/statuses/mentions.rb +2 -2
- data/lib/twterm/tab/statuses/search.rb +2 -2
- data/lib/twterm/tab/statuses/user_timeline.rb +2 -2
- data/lib/twterm/tab/user_list_management.rb +1 -1
- data/lib/twterm/tab/user_tab.rb +2 -2
- data/lib/twterm/tab/users/{base.rb → abstract_users_tab.rb} +2 -2
- data/lib/twterm/tab/users/followers.rb +2 -2
- data/lib/twterm/tab/users/friends.rb +2 -2
- data/lib/twterm/tab_manager.rb +2 -2
- data/lib/twterm/tweetbox.rb +20 -16
- data/lib/twterm/version.rb +1 -1
- data/spec/twterm/event_dispatcher_spec.rb +1 -1
- data/twterm.gemspec +1 -1
- metadata +20 -13
- data/lib/twterm/tab/favorites.rb +0 -7
@@ -1,18 +1,19 @@
|
|
1
1
|
require 'addressable/uri'
|
2
2
|
|
3
|
+
require 'twterm/event/open_photo'
|
3
4
|
require 'twterm/event/open_uri'
|
4
5
|
require 'twterm/hashtag'
|
5
6
|
require 'twterm/image'
|
6
7
|
require 'twterm/image_builder/user_name_image_builder'
|
7
8
|
require 'twterm/publisher'
|
8
|
-
require 'twterm/tab/
|
9
|
+
require 'twterm/tab/abstract_tab'
|
9
10
|
require 'twterm/tab/dumpable'
|
10
11
|
require 'twterm/tab/loadable'
|
11
12
|
require 'twterm/tab/scrollable'
|
12
13
|
|
13
14
|
module Twterm
|
14
15
|
module Tab
|
15
|
-
class StatusTab <
|
16
|
+
class StatusTab < AbstractTab
|
16
17
|
include Dumpable
|
17
18
|
include Publisher
|
18
19
|
include Tab::Scrollable
|
@@ -184,7 +185,7 @@ module Twterm
|
|
184
185
|
when Twitter::Entity::URI
|
185
186
|
publish(Event::OpenURI.new(item.expanded_url))
|
186
187
|
when Twitter::Media::Photo
|
187
|
-
publish(Event::
|
188
|
+
publish(Event::OpenPhoto.new(item))
|
188
189
|
when Twitter::Media::AnimatedGif, Twitter::Media::Video
|
189
190
|
url = item.video_info.variants.max { |v| v.bitrate }.url
|
190
191
|
publish(Event::OpenURI.new(url))
|
@@ -6,7 +6,7 @@ require 'twterm/event/status_garbage_collected'
|
|
6
6
|
require 'twterm/image_builder/user_name_image_builder'
|
7
7
|
require 'twterm/publisher'
|
8
8
|
require 'twterm/subscriber'
|
9
|
-
require 'twterm/tab/
|
9
|
+
require 'twterm/tab/abstract_tab'
|
10
10
|
require 'twterm/tab/loadable'
|
11
11
|
require 'twterm/tab/status_tab'
|
12
12
|
require 'twterm/utils'
|
@@ -14,7 +14,7 @@ require 'twterm/utils'
|
|
14
14
|
module Twterm
|
15
15
|
module Tab
|
16
16
|
module Statuses
|
17
|
-
class
|
17
|
+
class AbstractStatusesTab < AbstractTab
|
18
18
|
include Publisher
|
19
19
|
include Searchable
|
20
20
|
include Subscriber
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'concurrent'
|
2
2
|
|
3
3
|
require 'twterm/tab/dumpable'
|
4
|
-
require 'twterm/tab/statuses/
|
4
|
+
require 'twterm/tab/statuses/abstract_statuses_tab'
|
5
5
|
require 'twterm/tab/statuses/cacheable'
|
6
6
|
|
7
7
|
module Twterm
|
8
8
|
module Tab
|
9
9
|
module Statuses
|
10
|
-
class Conversation <
|
10
|
+
class Conversation < AbstractStatusesTab
|
11
11
|
include Cacheable
|
12
12
|
include Dumpable
|
13
13
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'twterm/subscriber'
|
2
2
|
require 'twterm/event/status/timeline'
|
3
|
-
require 'twterm/tab/statuses/
|
3
|
+
require 'twterm/tab/statuses/abstract_statuses_tab'
|
4
4
|
require 'twterm/utils'
|
5
5
|
|
6
6
|
module Twterm
|
7
7
|
module Tab
|
8
8
|
module Statuses
|
9
|
-
class Home <
|
9
|
+
class Home < AbstractStatusesTab
|
10
10
|
include Subscriber
|
11
11
|
include Utils
|
12
12
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'twterm/tab/statuses/
|
1
|
+
require 'twterm/tab/statuses/abstract_statuses_tab'
|
2
2
|
require 'twterm/tab/statuses/cacheable'
|
3
3
|
|
4
4
|
module Twterm
|
5
5
|
module Tab
|
6
6
|
module Statuses
|
7
|
-
class UserTimeline <
|
7
|
+
class UserTimeline < AbstractStatusesTab
|
8
8
|
include Cacheable
|
9
9
|
include Dumpable
|
10
10
|
|
data/lib/twterm/tab/user_tab.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'twterm/event/open_uri'
|
2
2
|
require 'twterm/publisher'
|
3
3
|
require 'twterm/image_builder/user_name_image_builder'
|
4
|
-
require 'twterm/tab/
|
4
|
+
require 'twterm/tab/abstract_tab'
|
5
5
|
require 'twterm/tab/user_list_management'
|
6
6
|
|
7
7
|
module Twterm
|
8
8
|
module Tab
|
9
|
-
class UserTab <
|
9
|
+
class UserTab < AbstractTab
|
10
10
|
include Dumpable
|
11
11
|
include Publisher
|
12
12
|
include Scrollable
|
@@ -2,13 +2,13 @@ require 'concurrent'
|
|
2
2
|
|
3
3
|
require 'twterm/event/user_garbage_collected'
|
4
4
|
require 'twterm/image_builder/user_name_image_builder'
|
5
|
-
require 'twterm/tab/
|
5
|
+
require 'twterm/tab/abstract_tab'
|
6
6
|
require 'twterm/tab/loadable'
|
7
7
|
|
8
8
|
module Twterm
|
9
9
|
module Tab
|
10
10
|
module Users
|
11
|
-
class
|
11
|
+
class AbstractUsersTab < AbstractTab
|
12
12
|
include Loadable
|
13
13
|
include Searchable
|
14
14
|
|
data/lib/twterm/tab_manager.rb
CHANGED
@@ -14,7 +14,7 @@ module Twterm
|
|
14
14
|
DUMPED_TABS_FILE = "#{ENV['HOME']}/.twterm/dumped_tabs"
|
15
15
|
|
16
16
|
def add(tab_to_add)
|
17
|
-
check_type Tab::
|
17
|
+
check_type Tab::AbstractTab, tab_to_add
|
18
18
|
|
19
19
|
@tabs.each.with_index do |tab, i|
|
20
20
|
next unless tab == tab_to_add
|
@@ -88,7 +88,7 @@ module Twterm
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def open_new
|
91
|
-
tab = Tab::New::
|
91
|
+
tab = Tab::New::Index.new(app, client)
|
92
92
|
add_and_show(tab)
|
93
93
|
end
|
94
94
|
|
data/lib/twterm/tweetbox.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
require 'twterm/publisher'
|
2
2
|
require 'twterm/event/message/error'
|
3
|
+
require 'twterm/event/screen/refresh'
|
3
4
|
|
4
5
|
module Twterm
|
5
6
|
class Tweetbox
|
6
7
|
class EmptyTextError < StandardError; end
|
7
|
-
class
|
8
|
-
|
8
|
+
class TextTooLongError < StandardError
|
9
|
+
def initialize(parse_result)
|
10
|
+
@parse_result = parse_result
|
11
|
+
end
|
12
|
+
|
13
|
+
def message
|
14
|
+
"Text is too long (weighted length: #{@parse_result[:weighted_length]} / 280)"
|
15
|
+
end
|
16
|
+
end
|
9
17
|
|
10
18
|
include Readline
|
11
19
|
include Curses
|
@@ -67,10 +75,8 @@ module Twterm
|
|
67
75
|
break
|
68
76
|
rescue EmptyTextError
|
69
77
|
break
|
70
|
-
rescue
|
71
|
-
puts
|
72
|
-
rescue TextTooLongError
|
73
|
-
puts "Text is too long (#{text_length(text)} / 140 characters)"
|
78
|
+
rescue TextTooLongError => e
|
79
|
+
puts e.message
|
74
80
|
end
|
75
81
|
|
76
82
|
puts "\n"
|
@@ -99,22 +105,20 @@ module Twterm
|
|
99
105
|
def reset
|
100
106
|
reset_prog_mode
|
101
107
|
sleep 0.1
|
102
|
-
|
108
|
+
publish(Event::Screen::Refresh.new)
|
103
109
|
end
|
104
110
|
|
105
111
|
def text_length(text)
|
106
|
-
Twitter::Validation.tweet_length(text)
|
112
|
+
Twitter::TwitterText::Validation.tweet_length(text)
|
107
113
|
end
|
108
114
|
|
109
115
|
def validate!(text)
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
fail TextTooLongError
|
117
|
-
end
|
116
|
+
raise EmptyTextError if text.empty?
|
117
|
+
|
118
|
+
result = Twitter::TwitterText::Validation.parse_tweet(text)
|
119
|
+
valid = result[:valid]
|
120
|
+
|
121
|
+
raise TextTooLongError.new(result) unless valid
|
118
122
|
end
|
119
123
|
end
|
120
124
|
end
|
data/lib/twterm/version.rb
CHANGED
data/twterm.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency 'terminal-notifier', '~> 2.0.0'
|
26
26
|
spec.add_dependency 'toml-rb', '~> 0.3.14'
|
27
27
|
spec.add_dependency 'twitter', '~> 6.2.0'
|
28
|
-
spec.add_dependency 'twitter-text', '1.
|
28
|
+
spec.add_dependency 'twitter-text', '~> 2.1.0'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler', '~> 1.8'
|
31
31
|
spec.add_development_dependency 'hashie', '~> 3.5.6'
|
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.4.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-04-
|
11
|
+
date: 2018-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -112,16 +112,16 @@ dependencies:
|
|
112
112
|
name: twitter-text
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
117
|
+
version: 2.1.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.
|
124
|
+
version: 2.1.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,7 +238,7 @@ files:
|
|
238
238
|
- lib/twterm/direct_message_composer.rb
|
239
239
|
- lib/twterm/direct_message_manager.rb
|
240
240
|
- lib/twterm/environment.rb
|
241
|
-
- lib/twterm/event/
|
241
|
+
- lib/twterm/event/abstract_event.rb
|
242
242
|
- lib/twterm/event/direct_message/fetched.rb
|
243
243
|
- lib/twterm/event/message/abstract_message.rb
|
244
244
|
- lib/twterm/event/message/error.rb
|
@@ -253,9 +253,11 @@ files:
|
|
253
253
|
- lib/twterm/event/notification/mention.rb
|
254
254
|
- lib/twterm/event/notification/quote.rb
|
255
255
|
- lib/twterm/event/notification/retweet.rb
|
256
|
+
- lib/twterm/event/open_photo.rb
|
256
257
|
- lib/twterm/event/open_uri.rb
|
258
|
+
- lib/twterm/event/screen/refresh.rb
|
257
259
|
- lib/twterm/event/screen/resize.rb
|
258
|
-
- lib/twterm/event/status/
|
260
|
+
- lib/twterm/event/status/abstract_status_event.rb
|
259
261
|
- lib/twterm/event/status/delete.rb
|
260
262
|
- lib/twterm/event/status/mention.rb
|
261
263
|
- lib/twterm/event/status/timeline.rb
|
@@ -297,6 +299,11 @@ files:
|
|
297
299
|
- lib/twterm/notification_backend/tmux_backend.rb
|
298
300
|
- lib/twterm/notification_dispatcher.rb
|
299
301
|
- lib/twterm/persistable_configuration_proxy.rb
|
302
|
+
- lib/twterm/photo_viewer.rb
|
303
|
+
- lib/twterm/photo_viewer_backend/abstract_photo_viewer_backend.rb
|
304
|
+
- lib/twterm/photo_viewer_backend/browser_backend.rb
|
305
|
+
- lib/twterm/photo_viewer_backend/imgcat_backend.rb
|
306
|
+
- lib/twterm/photo_viewer_backend/quick_look_backend.rb
|
300
307
|
- lib/twterm/preferences.rb
|
301
308
|
- lib/twterm/publisher.rb
|
302
309
|
- lib/twterm/repository/abstract_entity_repository.rb
|
@@ -315,25 +322,25 @@ files:
|
|
315
322
|
- lib/twterm/status.rb
|
316
323
|
- lib/twterm/streaming_client.rb
|
317
324
|
- lib/twterm/subscriber.rb
|
318
|
-
- lib/twterm/tab/
|
325
|
+
- lib/twterm/tab/abstract_tab.rb
|
319
326
|
- lib/twterm/tab/direct_message/conversation.rb
|
320
327
|
- lib/twterm/tab/direct_message/conversation_list.rb
|
321
328
|
- lib/twterm/tab/dumpable.rb
|
322
329
|
- lib/twterm/tab/exceptions.rb
|
323
|
-
- lib/twterm/tab/favorites.rb
|
324
330
|
- lib/twterm/tab/key_assignments_cheatsheet.rb
|
325
331
|
- lib/twterm/tab/loadable.rb
|
332
|
+
- lib/twterm/tab/new/index.rb
|
326
333
|
- lib/twterm/tab/new/list.rb
|
327
334
|
- lib/twterm/tab/new/search.rb
|
328
|
-
- lib/twterm/tab/new/start.rb
|
329
335
|
- lib/twterm/tab/new/user.rb
|
330
336
|
- lib/twterm/tab/preferences/index.rb
|
331
337
|
- lib/twterm/tab/preferences/notification_backend.rb
|
338
|
+
- lib/twterm/tab/preferences/photo_viewer_backend.rb
|
332
339
|
- lib/twterm/tab/rate_limit_status.rb
|
333
340
|
- lib/twterm/tab/scrollable.rb
|
334
341
|
- lib/twterm/tab/searchable.rb
|
335
342
|
- lib/twterm/tab/status_tab.rb
|
336
|
-
- lib/twterm/tab/statuses/
|
343
|
+
- lib/twterm/tab/statuses/abstract_statuses_tab.rb
|
337
344
|
- lib/twterm/tab/statuses/cacheable.rb
|
338
345
|
- lib/twterm/tab/statuses/conversation.rb
|
339
346
|
- lib/twterm/tab/statuses/favorites.rb
|
@@ -344,7 +351,7 @@ files:
|
|
344
351
|
- lib/twterm/tab/statuses/user_timeline.rb
|
345
352
|
- lib/twterm/tab/user_list_management.rb
|
346
353
|
- lib/twterm/tab/user_tab.rb
|
347
|
-
- lib/twterm/tab/users/
|
354
|
+
- lib/twterm/tab/users/abstract_users_tab.rb
|
348
355
|
- lib/twterm/tab/users/followers.rb
|
349
356
|
- lib/twterm/tab/users/friends.rb
|
350
357
|
- lib/twterm/tab_manager.rb
|