twterm 1.3.0 → 2.0.0.beta1
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 +14 -18
- data/bin/twterm +1 -1
- data/lib/twterm/app.rb +120 -30
- data/lib/twterm/client.rb +10 -13
- data/lib/twterm/completion_mamanger.rb +11 -6
- data/lib/twterm/direct_message.rb +6 -28
- data/lib/twterm/direct_message_composer.rb +10 -5
- data/lib/twterm/direct_message_manager.rb +5 -6
- data/lib/twterm/event/notification/abstract_notification.rb +27 -0
- data/lib/twterm/event/notification/error.rb +13 -0
- data/lib/twterm/event/notification/info.rb +13 -0
- data/lib/twterm/event/notification/success.rb +13 -0
- data/lib/twterm/event/notification/warning.rb +13 -0
- data/lib/twterm/event_dispatcher.rb +1 -1
- data/lib/twterm/extensions/array.rb +5 -0
- data/lib/twterm/extensions/enumerator/lazy.rb +3 -0
- data/lib/twterm/extensions/string.rb +0 -4
- data/lib/twterm/friendship.rb +1 -85
- data/lib/twterm/image/between.rb +31 -0
- data/lib/twterm/image/blank_line.rb +21 -0
- data/lib/twterm/image/bold.rb +31 -0
- data/lib/twterm/image/brackets.rb +21 -0
- data/lib/twterm/image/color.rb +45 -0
- data/lib/twterm/image/empty.rb +21 -0
- data/lib/twterm/image/horizontal_sequential_image.rb +48 -0
- data/lib/twterm/image/parens.rb +21 -0
- data/lib/twterm/image/string_image.rb +38 -0
- data/lib/twterm/image/vertical_sequential_image.rb +43 -0
- data/lib/twterm/image.rb +107 -0
- data/lib/twterm/key_mapper/abstract_key_mapper.rb +51 -0
- data/lib/twterm/key_mapper/app_key_mapper.rb +13 -0
- data/lib/twterm/key_mapper/cursor_key_mapper.rb +13 -0
- data/lib/twterm/key_mapper/general_key_mapper.rb +18 -0
- data/lib/twterm/key_mapper/no_such_command.rb +20 -0
- data/lib/twterm/key_mapper/no_such_key.rb +16 -0
- data/lib/twterm/key_mapper/status_key_mapper.rb +18 -0
- data/lib/twterm/key_mapper/tab_key_mapper.rb +31 -0
- data/lib/twterm/key_mapper.rb +127 -0
- data/lib/twterm/list.rb +0 -31
- data/lib/twterm/notifier.rb +7 -7
- data/lib/twterm/repository/abstract_entity_repository.rb +41 -0
- data/lib/twterm/repository/abstract_expirable_entity_repository.rb +35 -0
- data/lib/twterm/repository/abstract_repository.rb +64 -0
- data/lib/twterm/repository/direct_message_repository.rb +14 -0
- data/lib/twterm/repository/friendship_repository.rb +108 -0
- data/lib/twterm/repository/hashtag_repository.rb +39 -0
- data/lib/twterm/repository/list_repository.rb +14 -0
- data/lib/twterm/repository/status_repository.rb +36 -0
- data/lib/twterm/repository/user_repository.rb +22 -0
- data/lib/twterm/rest_client.rb +107 -63
- data/lib/twterm/screen.rb +21 -15
- data/lib/twterm/search_query_window.rb +139 -0
- data/lib/twterm/status.rb +14 -108
- data/lib/twterm/streaming_client.rb +13 -12
- data/lib/twterm/tab/base.rb +48 -8
- data/lib/twterm/tab/direct_message/conversation.rb +53 -52
- data/lib/twterm/tab/direct_message/conversation_list.rb +46 -45
- data/lib/twterm/tab/dumpable.rb +3 -3
- data/lib/twterm/tab/key_assignments_cheatsheet.rb +58 -57
- data/lib/twterm/tab/loadable.rb +20 -0
- data/lib/twterm/tab/new/list.rb +32 -43
- data/lib/twterm/tab/new/search.rb +31 -44
- data/lib/twterm/tab/new/start.rb +44 -55
- data/lib/twterm/tab/new/user.rb +15 -12
- data/lib/twterm/tab/rate_limit_status.rb +84 -0
- data/lib/twterm/tab/scrollable.rb +39 -19
- data/lib/twterm/tab/searchable.rb +133 -0
- data/lib/twterm/tab/statuses/base.rb +139 -129
- data/lib/twterm/tab/statuses/conversation.rb +26 -15
- data/lib/twterm/tab/statuses/favorites.rb +10 -8
- data/lib/twterm/tab/statuses/home.rb +10 -9
- data/lib/twterm/tab/statuses/list_timeline.rb +12 -8
- data/lib/twterm/tab/statuses/mentions.rb +17 -11
- data/lib/twterm/tab/statuses/search.rb +8 -5
- data/lib/twterm/tab/statuses/user_timeline.rb +11 -8
- data/lib/twterm/tab/user_list_management.rb +109 -0
- data/lib/twterm/tab/user_tab.rb +125 -126
- data/lib/twterm/tab/users/base.rb +39 -41
- data/lib/twterm/tab/users/followers.rb +9 -6
- data/lib/twterm/tab/users/friends.rb +9 -6
- data/lib/twterm/tab_manager.rb +64 -40
- data/lib/twterm/tweetbox.rb +18 -13
- data/lib/twterm/uri_opener.rb +2 -1
- data/lib/twterm/user.rb +2 -110
- data/lib/twterm/version.rb +1 -1
- data/lib/twterm/view.rb +30 -0
- data/lib/twterm.rb +3 -9
- data/spec/fixtures/status.json +107 -0
- data/spec/fixtures/user.json +102 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/supports/shared_examples/abstract_key_mapper.rb +17 -0
- data/spec/twterm/extension/enumerator/lazy_spec.rb +11 -0
- data/spec/twterm/friendship_spec.rb +0 -102
- data/spec/twterm/image/blank_line_spec.rb +11 -0
- data/spec/twterm/image/brackets_spec.rb +12 -0
- data/spec/twterm/image/color_spec.rb +22 -0
- data/spec/twterm/image/empry_spec.rb +11 -0
- data/spec/twterm/image/horizontal_sequential_image_spec.rb +15 -0
- data/spec/twterm/image/parens_spec.rb +12 -0
- data/spec/twterm/image/string_image_spec.rb +12 -0
- data/spec/twterm/image/vertical_sequential_image_spec.rb +14 -0
- data/spec/twterm/image_spec.rb +65 -0
- data/spec/twterm/key_mapper/abstract_key_mapper_spec.rb +21 -0
- data/spec/twterm/key_mapper/app_key_mapper_spec.rb +7 -0
- data/spec/twterm/key_mapper/status_key_mapper_spec.rb +7 -0
- data/spec/twterm/key_mapper/tab_key_mapper_spec.rb +7 -0
- data/spec/twterm/repository/friendship_repository_spec.rb +108 -0
- data/spec/twterm/status_spec.rb +58 -0
- data/spec/twterm/user_spec.rb +94 -0
- data/twterm.gemspec +13 -10
- metadata +129 -35
- data/lib/twterm/event/notification.rb +0 -33
- data/lib/twterm/extensions/integer.rb +0 -5
- data/lib/twterm/filter_query_window.rb +0 -91
- data/lib/twterm/filterable_list.rb +0 -41
- data/lib/twterm/history/base.rb +0 -21
- data/lib/twterm/history/hashtag.rb +0 -13
- data/lib/twterm/history/savable.rb +0 -37
- data/lib/twterm/history/screen_name.rb +0 -11
- data/lib/twterm/promise.rb +0 -143
@@ -1,37 +0,0 @@
|
|
1
|
-
module Twterm
|
2
|
-
module History
|
3
|
-
module Savable
|
4
|
-
include Base
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
unless File.exist?(file)
|
8
|
-
@history = []
|
9
|
-
return
|
10
|
-
end
|
11
|
-
|
12
|
-
begin
|
13
|
-
@history = YAML.load(File.read(file)) || []
|
14
|
-
rescue
|
15
|
-
@history = []
|
16
|
-
end
|
17
|
-
|
18
|
-
Scheduler.new(300) { save }
|
19
|
-
end
|
20
|
-
|
21
|
-
def add(item)
|
22
|
-
@history << item unless @history.include?(item)
|
23
|
-
@history = history.take(1000)
|
24
|
-
end
|
25
|
-
|
26
|
-
def save
|
27
|
-
File.open(file, 'w', 0600) { |f| f.write(history.to_yaml) }
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def file
|
33
|
-
fail NotImplementedError, 'file method must be implemented'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/lib/twterm/promise.rb
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
module Twterm
|
2
|
-
class Promise
|
3
|
-
def initialize
|
4
|
-
@state = :pending
|
5
|
-
@callbacks = []
|
6
|
-
|
7
|
-
Thread.new do
|
8
|
-
yield method(:resolve), method(:reject)
|
9
|
-
end if block_given?
|
10
|
-
end
|
11
|
-
|
12
|
-
def catch(on_rejected = nil, &block)
|
13
|
-
if on_rejected.is_a?(Proc) && block_given?
|
14
|
-
fail SyntaxError, 'both block arg and actual block given'
|
15
|
-
end
|
16
|
-
|
17
|
-
on_rejected ||= block
|
18
|
-
self.then(nil, on_rejected)
|
19
|
-
end
|
20
|
-
|
21
|
-
def reject(reason)
|
22
|
-
return if settled?
|
23
|
-
|
24
|
-
@state = :rejected
|
25
|
-
@reason = reason
|
26
|
-
|
27
|
-
callbacks.each do |cb|
|
28
|
-
cb.invoke_on_rejected(reason)
|
29
|
-
end
|
30
|
-
self
|
31
|
-
end
|
32
|
-
|
33
|
-
def rejected?
|
34
|
-
state.eql? :rejected
|
35
|
-
end
|
36
|
-
|
37
|
-
def resolve(value)
|
38
|
-
return if settled?
|
39
|
-
|
40
|
-
@state = :fulfilled
|
41
|
-
@value = value
|
42
|
-
|
43
|
-
callbacks.each do |cb|
|
44
|
-
cb.invoke_on_fulfilled(value)
|
45
|
-
end
|
46
|
-
self
|
47
|
-
end
|
48
|
-
|
49
|
-
def then(on_fulfilled = nil, on_rejected = nil, &block)
|
50
|
-
if (on_fulfilled.is_a?(Proc) || on_rejected.is_a?(Proc)) && block_given?
|
51
|
-
fail SyntaxError, 'both block arg and actual block given'
|
52
|
-
end
|
53
|
-
|
54
|
-
on_fulfilled ||= block
|
55
|
-
next_promise = Promise.new
|
56
|
-
callback = Callback.new(
|
57
|
-
self,
|
58
|
-
on_fulfilled.is_a?(Proc) ? on_fulfilled : nil,
|
59
|
-
on_rejected.is_a?(Proc) ? on_rejected : nil,
|
60
|
-
next_promise
|
61
|
-
)
|
62
|
-
@callbacks << callback
|
63
|
-
|
64
|
-
callback.invoke_on_fulfilled(@value) if fulfilled?
|
65
|
-
callback.invoke_on_rejected(@reason) if rejected?
|
66
|
-
|
67
|
-
next_promise
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.resolve(value)
|
71
|
-
Promise.new { |resolve, _| resolve.(value) }
|
72
|
-
end
|
73
|
-
|
74
|
-
private
|
75
|
-
|
76
|
-
attr_reader :callbacks, :errorbacks, :next_promises, :state
|
77
|
-
|
78
|
-
def fulfilled?
|
79
|
-
state.eql? :fulfilled
|
80
|
-
end
|
81
|
-
|
82
|
-
def pending?
|
83
|
-
state.eql? :pending
|
84
|
-
end
|
85
|
-
|
86
|
-
def rejected?
|
87
|
-
state.eql? :rejected
|
88
|
-
end
|
89
|
-
|
90
|
-
def settled?
|
91
|
-
!pending?
|
92
|
-
end
|
93
|
-
|
94
|
-
class Callback
|
95
|
-
def initialize(promise, on_fulfilled, on_rejected, next_promise)
|
96
|
-
@promise = promise
|
97
|
-
@on_fulfilled, @on_rejected = on_fulfilled, on_rejected
|
98
|
-
@next_promise = next_promise
|
99
|
-
end
|
100
|
-
|
101
|
-
def has_on_fulfilled?
|
102
|
-
!on_fulfilled.nil?
|
103
|
-
end
|
104
|
-
|
105
|
-
def has_on_rejected?
|
106
|
-
!on_rejected.nil?
|
107
|
-
end
|
108
|
-
|
109
|
-
def invoke_on_fulfilled(value)
|
110
|
-
if has_on_fulfilled?
|
111
|
-
new_value = on_fulfilled.(value)
|
112
|
-
next_promise.resolve(new_value)
|
113
|
-
else
|
114
|
-
next_promise.resolve(value)
|
115
|
-
end
|
116
|
-
rescue => reason
|
117
|
-
next_promise.reject(reason)
|
118
|
-
end
|
119
|
-
|
120
|
-
def invoke_on_rejected(reason)
|
121
|
-
unless has_on_rejected?
|
122
|
-
if has_on_fulfilled?
|
123
|
-
next_promise.reject(reason)
|
124
|
-
else
|
125
|
-
raise reason unless has_on_fulfilled?
|
126
|
-
end
|
127
|
-
return
|
128
|
-
end
|
129
|
-
|
130
|
-
begin
|
131
|
-
new_value = on_rejected.(reason)
|
132
|
-
next_promise.resolve(new_value)
|
133
|
-
rescue => reason
|
134
|
-
next_promise.reject(reason)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
private
|
139
|
-
|
140
|
-
attr_reader :promise, :on_fulfilled, :on_rejected, :next_promise
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|