twterm 2.5.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +62 -0
  3. data/.gitignore +1 -0
  4. data/Makefile +18 -0
  5. data/README.md +30 -4
  6. data/bin/twterm +1 -3
  7. data/default.nix +21 -0
  8. data/gemset.nix +5130 -0
  9. data/lib/twterm/app.rb +0 -18
  10. data/lib/twterm/client.rb +1 -6
  11. data/lib/twterm/color_manager.rb +8 -9
  12. data/lib/twterm/image.rb +26 -0
  13. data/lib/twterm/image/underlined.rb +31 -0
  14. data/lib/twterm/image_builder/user_name_image_builder.rb +1 -0
  15. data/lib/twterm/key_mapper.rb +6 -8
  16. data/lib/twterm/key_mapper/abstract_key_mapper.rb +2 -2
  17. data/lib/twterm/list.rb +36 -1
  18. data/lib/twterm/message_window.rb +4 -5
  19. data/lib/twterm/persistable_configuration_proxy.rb +6 -6
  20. data/lib/twterm/preferences.rb +8 -1
  21. data/lib/twterm/rest_client.rb +0 -33
  22. data/lib/twterm/screen.rb +54 -14
  23. data/lib/twterm/search_query_window.rb +4 -5
  24. data/lib/twterm/status.rb +10 -0
  25. data/lib/twterm/tab/abstract_tab.rb +33 -8
  26. data/lib/twterm/tab/new/index.rb +0 -10
  27. data/lib/twterm/tab/new/list.rb +3 -3
  28. data/lib/twterm/tab/new/search.rb +2 -2
  29. data/lib/twterm/tab/new/user.rb +2 -2
  30. data/lib/twterm/tab/preferences/control.rb +77 -0
  31. data/lib/twterm/tab/preferences/index.rb +6 -0
  32. data/lib/twterm/tab/status_tab.rb +10 -0
  33. data/lib/twterm/tab/statuses/abstract_statuses_tab.rb +4 -4
  34. data/lib/twterm/tab/statuses/home.rb +0 -3
  35. data/lib/twterm/tab/statuses/mentions.rb +1 -0
  36. data/lib/twterm/tab/user_tab.rb +0 -9
  37. data/lib/twterm/tab_manager.rb +77 -5
  38. data/lib/twterm/tweetbox.rb +2 -3
  39. data/lib/twterm/user.rb +1 -0
  40. data/lib/twterm/version.rb +1 -1
  41. data/nix/Gemfile +3 -0
  42. data/nix/Gemfile.lock +70 -0
  43. data/nix/gemset.nix +283 -0
  44. data/shell.nix +40 -0
  45. data/twterm.gemspec +13 -13
  46. metadata +42 -44
  47. data/.travis.yml +0 -12
  48. data/lib/twterm/direct_message.rb +0 -60
  49. data/lib/twterm/direct_message_composer.rb +0 -80
  50. data/lib/twterm/direct_message_manager.rb +0 -51
  51. data/lib/twterm/event/direct_message/fetched.rb +0 -10
  52. data/lib/twterm/event/notification/direct_message.rb +0 -30
  53. data/lib/twterm/event/status/timeline.rb +0 -10
  54. data/lib/twterm/repository/direct_message_repository.rb +0 -14
  55. data/lib/twterm/streaming_client.rb +0 -146
  56. data/lib/twterm/tab/direct_message/conversation.rb +0 -104
  57. data/lib/twterm/tab/direct_message/conversation_list.rb +0 -100
data/shell.nix ADDED
@@ -0,0 +1,40 @@
1
+ { pkgs ? import <nixpkgs> { }, ruby ? 2.7 }:
2
+
3
+ with pkgs;
4
+ let
5
+ mri =
6
+ if ruby == 2.5
7
+ then ruby_2_5
8
+ else if ruby == 2.6
9
+ then ruby_2_6
10
+ else if ruby == 2.7
11
+ then ruby_2_7
12
+ else if ruby == 3.0
13
+ then ruby_3_0
14
+ else abort "Unsupported Ruby version";
15
+ gems = bundlerEnv {
16
+ pname = "twterm";
17
+ gemdir = ./.;
18
+ ruby = mri;
19
+ };
20
+ in
21
+ mkShell rec {
22
+ buildInputs = [
23
+ bundix
24
+ bundler
25
+ gems
26
+ libffi
27
+ libidn
28
+ mri
29
+ ncurses
30
+ readline
31
+ ];
32
+ shellHook = ''
33
+ alias twterm='bundle exec bin/twterm'
34
+
35
+ bundle install -j=4 --path=vendor/bundle
36
+
37
+ ruby --version
38
+ bundle --version
39
+ '';
40
+ }
data/twterm.gemspec CHANGED
@@ -16,21 +16,21 @@ Gem::Specification.new do |spec|
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |i| i == 'Gemfile.lock' }
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ['lib']
19
- spec.required_ruby_version = '>= 2.1.0'
19
+ spec.required_ruby_version = spec.required_ruby_version = Gem::Requirement.new('~> 2.5')
20
20
 
21
- spec.add_dependency 'curses', '~> 1.2.2'
22
- spec.add_dependency 'concurrent-ruby', '~> 1.0.5'
23
- spec.add_dependency 'launchy', '~> 2.4.3'
21
+ spec.add_dependency 'curses', '~> 1.4.0'
22
+ spec.add_dependency 'concurrent-ruby', '~> 1.1.7'
23
+ spec.add_dependency 'launchy', '~> 2.5.0'
24
24
  spec.add_dependency 'oauth', '~> 0.5.1'
25
25
  spec.add_dependency 'terminal-notifier', '~> 2.0.0'
26
- spec.add_dependency 'toml-rb', '~> 0.3.14'
27
- spec.add_dependency 'twitter', '~> 6.2.0'
28
- spec.add_dependency 'twitter-text', '~> 2.1.0'
26
+ spec.add_dependency 'toml-rb', '~> 2.0.1'
27
+ spec.add_dependency 'twitter', '~> 7.0.0'
28
+ spec.add_dependency 'twitter-text', '~> 3.1.0'
29
29
 
30
- spec.add_development_dependency 'bundler', '~> 1.8'
31
- spec.add_development_dependency 'hashie', '~> 3.5.6'
32
- spec.add_development_dependency 'rake', '~> 12.0'
33
- spec.add_development_dependency 'rspec', '~> 3.7.0'
34
- spec.add_development_dependency 'rubocop', '~> 0.51.0'
35
- spec.add_development_dependency 'yard', '~> 0.9.12'
30
+ spec.add_development_dependency 'bundler', '~> 2.1.4'
31
+ spec.add_development_dependency 'hashie', '~> 4.1.0'
32
+ spec.add_development_dependency 'rake', '~> 13.0.3'
33
+ spec.add_development_dependency 'rspec', '~> 3.10.0'
34
+ spec.add_development_dependency 'rubocop', '~> 1.7.0'
35
+ spec.add_development_dependency 'yard', '~> 0.9.26'
36
36
  end
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.5.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Kameoka
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-22 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.2
19
+ version: 1.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.2
26
+ version: 1.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: concurrent-ruby
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.5
33
+ version: 1.1.7
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.5
40
+ version: 1.1.7
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: launchy
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.4.3
47
+ version: 2.5.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.4.3
54
+ version: 2.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: oauth
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,126 +86,126 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.3.14
89
+ version: 2.0.1
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.3.14
96
+ version: 2.0.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: twitter
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 6.2.0
103
+ version: 7.0.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 6.2.0
110
+ version: 7.0.0
111
111
  - !ruby/object:Gem::Dependency
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: 2.1.0
117
+ version: 3.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: 2.1.0
124
+ version: 3.1.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: bundler
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.8'
131
+ version: 2.1.4
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.8'
138
+ version: 2.1.4
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: hashie
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 3.5.6
145
+ version: 4.1.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 3.5.6
152
+ version: 4.1.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '12.0'
159
+ version: 13.0.3
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '12.0'
166
+ version: 13.0.3
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rspec
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 3.7.0
173
+ version: 3.10.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 3.7.0
180
+ version: 3.10.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rubocop
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 0.51.0
187
+ version: 1.7.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 0.51.0
194
+ version: 1.7.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: yard
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: 0.9.12
201
+ version: 0.9.26
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: 0.9.12
208
+ version: 0.9.26
209
209
  description: A full-featured TUI Twitter client
210
210
  email:
211
211
  - kameoka.ryota@gmail.com
@@ -214,14 +214,17 @@ executables:
214
214
  extensions: []
215
215
  extra_rdoc_files: []
216
216
  files:
217
+ - ".circleci/config.yml"
217
218
  - ".gitignore"
218
219
  - ".rspec"
219
- - ".travis.yml"
220
220
  - Gemfile
221
221
  - LICENSE
222
+ - Makefile
222
223
  - README.md
223
224
  - Rakefile
224
225
  - bin/twterm
226
+ - default.nix
227
+ - gemset.nix
225
228
  - lib/twterm.rb
226
229
  - lib/twterm/abstract_persistable_configuration.rb
227
230
  - lib/twterm/app.rb
@@ -234,19 +237,14 @@ files:
234
237
  - lib/twterm/completer/search_query_completer.rb
235
238
  - lib/twterm/completion_manager.rb
236
239
  - lib/twterm/config.rb
237
- - lib/twterm/direct_message.rb
238
- - lib/twterm/direct_message_composer.rb
239
- - lib/twterm/direct_message_manager.rb
240
240
  - lib/twterm/environment.rb
241
241
  - lib/twterm/event/abstract_event.rb
242
- - lib/twterm/event/direct_message/fetched.rb
243
242
  - lib/twterm/event/message/abstract_message.rb
244
243
  - lib/twterm/event/message/error.rb
245
244
  - lib/twterm/event/message/info.rb
246
245
  - lib/twterm/event/message/success.rb
247
246
  - lib/twterm/event/message/warning.rb
248
247
  - lib/twterm/event/notification/abstract_notification.rb
249
- - lib/twterm/event/notification/direct_message.rb
250
248
  - lib/twterm/event/notification/favorite.rb
251
249
  - lib/twterm/event/notification/follow.rb
252
250
  - lib/twterm/event/notification/list_member_added.rb
@@ -259,7 +257,6 @@ files:
259
257
  - lib/twterm/event/screen/resize.rb
260
258
  - lib/twterm/event/status/abstract_status_event.rb
261
259
  - lib/twterm/event/status/mention.rb
262
- - lib/twterm/event/status/timeline.rb
263
260
  - lib/twterm/event/status_deleted.rb
264
261
  - lib/twterm/event/status_garbage_collected.rb
265
262
  - lib/twterm/event/user_garbage_collected.rb
@@ -280,6 +277,7 @@ files:
280
277
  - lib/twterm/image/horizontal_sequential_image.rb
281
278
  - lib/twterm/image/parens.rb
282
279
  - lib/twterm/image/string_image.rb
280
+ - lib/twterm/image/underlined.rb
283
281
  - lib/twterm/image/vertical_sequential_image.rb
284
282
  - lib/twterm/image_builder/user_name_image_builder.rb
285
283
  - lib/twterm/key_mapper.rb
@@ -309,7 +307,6 @@ files:
309
307
  - lib/twterm/repository/abstract_entity_repository.rb
310
308
  - lib/twterm/repository/abstract_expirable_entity_repository.rb
311
309
  - lib/twterm/repository/abstract_repository.rb
312
- - lib/twterm/repository/direct_message_repository.rb
313
310
  - lib/twterm/repository/friendship_repository.rb
314
311
  - lib/twterm/repository/hashtag_repository.rb
315
312
  - lib/twterm/repository/list_repository.rb
@@ -320,11 +317,8 @@ files:
320
317
  - lib/twterm/screen.rb
321
318
  - lib/twterm/search_query_window.rb
322
319
  - lib/twterm/status.rb
323
- - lib/twterm/streaming_client.rb
324
320
  - lib/twterm/subscriber.rb
325
321
  - lib/twterm/tab/abstract_tab.rb
326
- - lib/twterm/tab/direct_message/conversation.rb
327
- - lib/twterm/tab/direct_message/conversation_list.rb
328
322
  - lib/twterm/tab/dumpable.rb
329
323
  - lib/twterm/tab/exceptions.rb
330
324
  - lib/twterm/tab/key_assignments_cheatsheet.rb
@@ -333,6 +327,7 @@ files:
333
327
  - lib/twterm/tab/new/list.rb
334
328
  - lib/twterm/tab/new/search.rb
335
329
  - lib/twterm/tab/new/user.rb
330
+ - lib/twterm/tab/preferences/control.rb
336
331
  - lib/twterm/tab/preferences/index.rb
337
332
  - lib/twterm/tab/preferences/notification_backend.rb
338
333
  - lib/twterm/tab/preferences/photo_viewer_backend.rb
@@ -361,6 +356,10 @@ files:
361
356
  - lib/twterm/utils.rb
362
357
  - lib/twterm/version.rb
363
358
  - lib/twterm/view.rb
359
+ - nix/Gemfile
360
+ - nix/Gemfile.lock
361
+ - nix/gemset.nix
362
+ - shell.nix
364
363
  - spec/fixtures/list.json
365
364
  - spec/fixtures/status.json
366
365
  - spec/fixtures/user.json
@@ -395,24 +394,23 @@ homepage: http://twterm.ryota-ka.me/
395
394
  licenses:
396
395
  - MIT
397
396
  metadata: {}
398
- post_install_message:
397
+ post_install_message:
399
398
  rdoc_options: []
400
399
  require_paths:
401
400
  - lib
402
401
  required_ruby_version: !ruby/object:Gem::Requirement
403
402
  requirements:
404
- - - ">="
403
+ - - "~>"
405
404
  - !ruby/object:Gem::Version
406
- version: 2.1.0
405
+ version: '2.5'
407
406
  required_rubygems_version: !ruby/object:Gem::Requirement
408
407
  requirements:
409
408
  - - ">="
410
409
  - !ruby/object:Gem::Version
411
410
  version: '0'
412
411
  requirements: []
413
- rubyforge_project:
414
- rubygems_version: 2.7.6
415
- signing_key:
412
+ rubygems_version: 3.1.2
413
+ signing_key:
416
414
  specification_version: 4
417
415
  summary: A full-featured TUI Twitter client
418
416
  test_files: []
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.1
5
- - 2.2
6
- - 2.3.0
7
- - 2.4.0
8
- - 2.5.0
9
-
10
- before_install: gem update --system
11
-
12
- script: bundle exec rubocop --parallel --fail-level warning && bundle exec rspec
@@ -1,60 +0,0 @@
1
- require 'twterm/user'
2
- require 'twterm/utils'
3
-
4
- module Twterm
5
- class DirectMessage
6
- attr_reader :id, :created_at, :recipient_id, :sender_id, :text
7
-
8
- def initialize(message)
9
- @id = message.id
10
- update!(message)
11
- end
12
-
13
- def ==(other)
14
- other.is_a?(self.class) && id == other.id
15
- end
16
-
17
- def date
18
- format = Time.now - @created_at < 86_400 ? '%H:%M:%S' : '%Y-%m-%d %H:%M:%S'
19
- @created_at.strftime(format)
20
- end
21
-
22
- def update!(message)
23
- @created_at = message.created_at.dup.localtime
24
- @recipient_id = message.recipient.id
25
- @sender_id = message.sender.id
26
- @text = message.text
27
-
28
- self
29
- end
30
-
31
- class Conversation
32
- include Utils
33
-
34
- attr_reader :collocutor_id, :messages
35
-
36
- def initialize(collocutor_id)
37
- @collocutor_id = collocutor_id
38
- @messages = []
39
- end
40
-
41
- def <<(message)
42
- @messages << message if messages.find { |m| m == message }.nil?
43
- @messages.sort_by!(&:created_at).reverse!
44
-
45
- self
46
- end
47
-
48
- def preview
49
- messages.sort_by(&:created_at).last.text.gsub("\n", ' ')
50
- end
51
-
52
- def updated_at
53
- updated_at = @messages.map(&:created_at).max
54
-
55
- format = Time.now - updated_at < 86_400 ? '%H:%M:%S' : '%Y-%m-%d %H:%M:%S'
56
- updated_at.strftime(format)
57
- end
58
- end
59
- end
60
- end