twterm 1.3.0 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -18
  3. data/bin/twterm +1 -1
  4. data/lib/twterm/app.rb +120 -30
  5. data/lib/twterm/client.rb +10 -13
  6. data/lib/twterm/completion_mamanger.rb +11 -6
  7. data/lib/twterm/direct_message.rb +6 -28
  8. data/lib/twterm/direct_message_composer.rb +10 -5
  9. data/lib/twterm/direct_message_manager.rb +5 -6
  10. data/lib/twterm/event/notification/abstract_notification.rb +27 -0
  11. data/lib/twterm/event/notification/error.rb +13 -0
  12. data/lib/twterm/event/notification/info.rb +13 -0
  13. data/lib/twterm/event/notification/success.rb +13 -0
  14. data/lib/twterm/event/notification/warning.rb +13 -0
  15. data/lib/twterm/event_dispatcher.rb +1 -1
  16. data/lib/twterm/extensions/array.rb +5 -0
  17. data/lib/twterm/extensions/enumerator/lazy.rb +3 -0
  18. data/lib/twterm/extensions/string.rb +0 -4
  19. data/lib/twterm/friendship.rb +1 -85
  20. data/lib/twterm/image/between.rb +31 -0
  21. data/lib/twterm/image/blank_line.rb +21 -0
  22. data/lib/twterm/image/bold.rb +31 -0
  23. data/lib/twterm/image/brackets.rb +21 -0
  24. data/lib/twterm/image/color.rb +45 -0
  25. data/lib/twterm/image/empty.rb +21 -0
  26. data/lib/twterm/image/horizontal_sequential_image.rb +48 -0
  27. data/lib/twterm/image/parens.rb +21 -0
  28. data/lib/twterm/image/string_image.rb +38 -0
  29. data/lib/twterm/image/vertical_sequential_image.rb +43 -0
  30. data/lib/twterm/image.rb +107 -0
  31. data/lib/twterm/key_mapper/abstract_key_mapper.rb +51 -0
  32. data/lib/twterm/key_mapper/app_key_mapper.rb +13 -0
  33. data/lib/twterm/key_mapper/cursor_key_mapper.rb +13 -0
  34. data/lib/twterm/key_mapper/general_key_mapper.rb +18 -0
  35. data/lib/twterm/key_mapper/no_such_command.rb +20 -0
  36. data/lib/twterm/key_mapper/no_such_key.rb +16 -0
  37. data/lib/twterm/key_mapper/status_key_mapper.rb +18 -0
  38. data/lib/twterm/key_mapper/tab_key_mapper.rb +31 -0
  39. data/lib/twterm/key_mapper.rb +127 -0
  40. data/lib/twterm/list.rb +0 -31
  41. data/lib/twterm/notifier.rb +7 -7
  42. data/lib/twterm/repository/abstract_entity_repository.rb +41 -0
  43. data/lib/twterm/repository/abstract_expirable_entity_repository.rb +35 -0
  44. data/lib/twterm/repository/abstract_repository.rb +64 -0
  45. data/lib/twterm/repository/direct_message_repository.rb +14 -0
  46. data/lib/twterm/repository/friendship_repository.rb +108 -0
  47. data/lib/twterm/repository/hashtag_repository.rb +39 -0
  48. data/lib/twterm/repository/list_repository.rb +14 -0
  49. data/lib/twterm/repository/status_repository.rb +36 -0
  50. data/lib/twterm/repository/user_repository.rb +22 -0
  51. data/lib/twterm/rest_client.rb +107 -63
  52. data/lib/twterm/screen.rb +21 -15
  53. data/lib/twterm/search_query_window.rb +139 -0
  54. data/lib/twterm/status.rb +14 -108
  55. data/lib/twterm/streaming_client.rb +13 -12
  56. data/lib/twterm/tab/base.rb +48 -8
  57. data/lib/twterm/tab/direct_message/conversation.rb +53 -52
  58. data/lib/twterm/tab/direct_message/conversation_list.rb +46 -45
  59. data/lib/twterm/tab/dumpable.rb +3 -3
  60. data/lib/twterm/tab/key_assignments_cheatsheet.rb +58 -57
  61. data/lib/twterm/tab/loadable.rb +20 -0
  62. data/lib/twterm/tab/new/list.rb +32 -43
  63. data/lib/twterm/tab/new/search.rb +31 -44
  64. data/lib/twterm/tab/new/start.rb +44 -55
  65. data/lib/twterm/tab/new/user.rb +15 -12
  66. data/lib/twterm/tab/rate_limit_status.rb +84 -0
  67. data/lib/twterm/tab/scrollable.rb +39 -19
  68. data/lib/twterm/tab/searchable.rb +133 -0
  69. data/lib/twterm/tab/statuses/base.rb +139 -129
  70. data/lib/twterm/tab/statuses/conversation.rb +26 -15
  71. data/lib/twterm/tab/statuses/favorites.rb +10 -8
  72. data/lib/twterm/tab/statuses/home.rb +10 -9
  73. data/lib/twterm/tab/statuses/list_timeline.rb +12 -8
  74. data/lib/twterm/tab/statuses/mentions.rb +17 -11
  75. data/lib/twterm/tab/statuses/search.rb +8 -5
  76. data/lib/twterm/tab/statuses/user_timeline.rb +11 -8
  77. data/lib/twterm/tab/user_list_management.rb +109 -0
  78. data/lib/twterm/tab/user_tab.rb +125 -126
  79. data/lib/twterm/tab/users/base.rb +39 -41
  80. data/lib/twterm/tab/users/followers.rb +9 -6
  81. data/lib/twterm/tab/users/friends.rb +9 -6
  82. data/lib/twterm/tab_manager.rb +64 -40
  83. data/lib/twterm/tweetbox.rb +18 -13
  84. data/lib/twterm/uri_opener.rb +2 -1
  85. data/lib/twterm/user.rb +2 -110
  86. data/lib/twterm/version.rb +1 -1
  87. data/lib/twterm/view.rb +30 -0
  88. data/lib/twterm.rb +3 -9
  89. data/spec/fixtures/status.json +107 -0
  90. data/spec/fixtures/user.json +102 -0
  91. data/spec/spec_helper.rb +7 -0
  92. data/spec/supports/shared_examples/abstract_key_mapper.rb +17 -0
  93. data/spec/twterm/extension/enumerator/lazy_spec.rb +11 -0
  94. data/spec/twterm/friendship_spec.rb +0 -102
  95. data/spec/twterm/image/blank_line_spec.rb +11 -0
  96. data/spec/twterm/image/brackets_spec.rb +12 -0
  97. data/spec/twterm/image/color_spec.rb +22 -0
  98. data/spec/twterm/image/empry_spec.rb +11 -0
  99. data/spec/twterm/image/horizontal_sequential_image_spec.rb +15 -0
  100. data/spec/twterm/image/parens_spec.rb +12 -0
  101. data/spec/twterm/image/string_image_spec.rb +12 -0
  102. data/spec/twterm/image/vertical_sequential_image_spec.rb +14 -0
  103. data/spec/twterm/image_spec.rb +65 -0
  104. data/spec/twterm/key_mapper/abstract_key_mapper_spec.rb +21 -0
  105. data/spec/twterm/key_mapper/app_key_mapper_spec.rb +7 -0
  106. data/spec/twterm/key_mapper/status_key_mapper_spec.rb +7 -0
  107. data/spec/twterm/key_mapper/tab_key_mapper_spec.rb +7 -0
  108. data/spec/twterm/repository/friendship_repository_spec.rb +108 -0
  109. data/spec/twterm/status_spec.rb +58 -0
  110. data/spec/twterm/user_spec.rb +94 -0
  111. data/twterm.gemspec +13 -10
  112. metadata +129 -35
  113. data/lib/twterm/event/notification.rb +0 -33
  114. data/lib/twterm/extensions/integer.rb +0 -5
  115. data/lib/twterm/filter_query_window.rb +0 -91
  116. data/lib/twterm/filterable_list.rb +0 -41
  117. data/lib/twterm/history/base.rb +0 -21
  118. data/lib/twterm/history/hashtag.rb +0 -13
  119. data/lib/twterm/history/savable.rb +0 -37
  120. data/lib/twterm/history/screen_name.rb +0 -11
  121. 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
@@ -1,11 +0,0 @@
1
- module Twterm
2
- module History
3
- class ScreenName
4
- include Singleton, Base
5
-
6
- def history
7
- User.all.map(&:screen_name)
8
- end
9
- end
10
- end
11
- end
@@ -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