ayadn 1.8.2 → 2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/CHANGELOG.md +73 -52
- data/README.md +17 -3
- data/ayadn.gemspec +3 -4
- data/doc/01-index.md +6 -5
- data/doc/02-install.md +23 -1
- data/doc/03-first-steps.md +22 -28
- data/doc/04-options.md +1 -1
- data/doc/05-streams.md +29 -9
- data/doc/06-post.md +13 -5
- data/doc/07-actions.md +63 -1
- data/doc/08-listings.md +112 -4
- data/doc/09-accounts.md +17 -3
- data/doc/10-nicerank.md +5 -5
- data/doc/11-blacklist.md +8 -14
- data/doc/12-alias.md +1 -13
- data/doc/14-set.md +8 -110
- data/doc/15-nowplaying.md +16 -4
- data/doc/18-contact.md +14 -13
- data/doc/19-examples.md +2 -0
- data/lib/ayadn/action.rb +322 -183
- data/lib/ayadn/alias.rb +17 -45
- data/lib/ayadn/annotations.rb +1 -1
- data/lib/ayadn/api.rb +7 -8
- data/lib/ayadn/app.rb +99 -12
- data/lib/ayadn/authorize.rb +92 -57
- data/lib/ayadn/blacklist.rb +52 -62
- data/lib/ayadn/check.rb +81 -74
- data/lib/ayadn/cnx.rb +77 -26
- data/lib/ayadn/databases.rb +890 -105
- data/lib/ayadn/debug.rb +30 -89
- data/lib/ayadn/descriptions.rb +876 -329
- data/lib/ayadn/endpoints.rb +2 -2
- data/lib/ayadn/errors.rb +9 -9
- data/lib/ayadn/extend.rb +8 -1
- data/lib/ayadn/fileops.rb +10 -8
- data/lib/ayadn/mark.rb +79 -56
- data/lib/ayadn/migration.rb +427 -0
- data/lib/ayadn/nicerank.rb +74 -72
- data/lib/ayadn/nowplaying.rb +123 -60
- data/lib/ayadn/nowwatching.rb +26 -10
- data/lib/ayadn/pinboard.rb +12 -7
- data/lib/ayadn/post.rb +40 -37
- data/lib/ayadn/profile.rb +5 -2
- data/lib/ayadn/scroll.rb +20 -5
- data/lib/ayadn/search.rb +30 -22
- data/lib/ayadn/set.rb +146 -50
- data/lib/ayadn/settings.rb +66 -67
- data/lib/ayadn/status.rb +459 -234
- data/lib/ayadn/stream.rb +80 -46
- data/lib/ayadn/switch.rb +51 -47
- data/lib/ayadn/tvshow.rb +47 -15
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/view.rb +119 -60
- data/lib/ayadn/workers.rb +144 -92
- data/lib/ayadn.rb +7 -8
- data/spec/mock/ayadn/accounts.sqlite +0 -0
- data/spec/mock/ayadn.sqlite +0 -0
- data/spec/unit/annotations_spec.rb +12 -13
- data/spec/unit/api_spec.rb +3 -4
- data/spec/unit/blacklistworkers_spec.rb +18 -23
- data/spec/unit/databases_spec.rb +51 -36
- data/spec/unit/endpoints_spec.rb +5 -2
- data/spec/unit/extend_spec.rb +24 -0
- data/spec/unit/nicerank_spec.rb +13 -13
- data/spec/unit/post_spec.rb +47 -36
- data/spec/unit/set_spec.rb +67 -96
- data/spec/unit/view_spec.rb +12 -6
- data/spec/unit/workers_spec.rb +38 -12
- data/tags +1285 -0
- metadata +29 -39
- data/spec/mock/aliases.db +0 -0
- data/spec/mock/blacklist.db +0 -0
- data/spec/mock/bookmarks.db +0 -0
- data/spec/mock/channels.db +0 -0
- data/spec/mock/index.db +0 -0
- data/spec/mock/nicerank.db +0 -0
- data/spec/mock/pagination.db +0 -0
- data/spec/mock/users.db +0 -0
- data/spec/unit/status_spec.rb +0 -9
data/lib/ayadn/scroll.rb
CHANGED
@@ -6,7 +6,7 @@ module Ayadn
|
|
6
6
|
@api = api
|
7
7
|
@view = view
|
8
8
|
@view.hide_cursor
|
9
|
-
@chars = %w{ | /
|
9
|
+
@chars = %w{ - \\ | / }
|
10
10
|
at_exit { @view.show_cursor }
|
11
11
|
end
|
12
12
|
|
@@ -20,6 +20,7 @@ module Ayadn
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def scroll_it(target, options)
|
23
|
+
Settings.global[:scrolling] = true
|
23
24
|
options = check_raw(options)
|
24
25
|
orig_target = target
|
25
26
|
@nr = NiceRank.new
|
@@ -29,10 +30,12 @@ module Ayadn
|
|
29
30
|
stream['data'].empty? ? niceranks = {} : niceranks = @nr.get_ranks(stream)
|
30
31
|
Debug.stream stream, options, target
|
31
32
|
target = "explore:#{target}" if explore?(target) # explore but not global
|
33
|
+
clear() if Settings.options[:scroll][:spinner] == true
|
32
34
|
show_if_new(stream, options, target, niceranks)
|
33
35
|
target = orig_target if target =~ /explore/
|
34
36
|
options = save_then_return(stream, options, target)
|
35
37
|
countdown
|
38
|
+
print "..." if Settings.options[:scroll][:spinner] == true
|
36
39
|
rescue Interrupt
|
37
40
|
canceled
|
38
41
|
end
|
@@ -40,15 +43,18 @@ module Ayadn
|
|
40
43
|
end
|
41
44
|
|
42
45
|
def mentions(username, options)
|
46
|
+
Settings.global[:scrolling] = true
|
43
47
|
options = check_raw(options)
|
44
48
|
id = @api.get_user(username)['data']['id']
|
45
49
|
loop do
|
46
50
|
begin
|
47
51
|
stream = @api.get_mentions(username, options)
|
48
52
|
Debug.stream stream, options, username
|
53
|
+
clear() if Settings.options[:scroll][:spinner] == true
|
49
54
|
show_if_new(stream, options, "mentions:#{id}")
|
50
55
|
options = save_then_return(stream, options, "mentions:#{id}")
|
51
56
|
countdown
|
57
|
+
print "..." if Settings.options[:scroll][:spinner] == true
|
52
58
|
rescue Interrupt
|
53
59
|
canceled
|
54
60
|
end
|
@@ -56,15 +62,18 @@ module Ayadn
|
|
56
62
|
end
|
57
63
|
|
58
64
|
def posts(username, options)
|
65
|
+
Settings.global[:scrolling] = true
|
59
66
|
options = check_raw(options)
|
60
67
|
id = @api.get_user(username)['data']['id']
|
61
68
|
loop do
|
62
69
|
begin
|
63
70
|
stream = @api.get_posts(username, options)
|
64
71
|
Debug.stream stream, options, username
|
72
|
+
clear() if Settings.options[:scroll][:spinner] == true
|
65
73
|
show_if_new(stream, options, "posts:#{id}")
|
66
74
|
options = save_then_return(stream, options, "posts:#{id}")
|
67
75
|
countdown
|
76
|
+
print "..." if Settings.options[:scroll][:spinner] == true
|
68
77
|
rescue Interrupt
|
69
78
|
canceled
|
70
79
|
end
|
@@ -72,14 +81,17 @@ module Ayadn
|
|
72
81
|
end
|
73
82
|
|
74
83
|
def convo(post_id, options)
|
84
|
+
Settings.global[:scrolling] = true
|
75
85
|
options = check_raw(options)
|
76
86
|
loop do
|
77
87
|
begin
|
78
88
|
stream = @api.get_convo(post_id, options)
|
79
89
|
Debug.stream stream, options, post_id
|
90
|
+
clear() if Settings.options[:scroll][:spinner] == true
|
80
91
|
show_if_new(stream, options, "replies:#{post_id}")
|
81
92
|
options = save_then_return(stream, options, "replies:#{post_id}")
|
82
93
|
countdown
|
94
|
+
print "..." if Settings.options[:scroll][:spinner] == true
|
83
95
|
rescue Interrupt
|
84
96
|
canceled
|
85
97
|
end
|
@@ -87,13 +99,15 @@ module Ayadn
|
|
87
99
|
end
|
88
100
|
|
89
101
|
def messages(channel_id, options)
|
102
|
+
Settings.global[:scrolling] = true
|
90
103
|
options = check_raw(options)
|
91
104
|
loop do
|
92
105
|
begin
|
93
106
|
stream = @api.get_messages(channel_id, options)
|
94
107
|
Debug.stream stream, options, channel_id
|
108
|
+
clear() if Settings.options[:scroll][:spinner] == true
|
95
109
|
show_if_new(stream, options, "channel:#{channel_id}")
|
96
|
-
if Settings.options[:marker][:
|
110
|
+
if Settings.options[:marker][:messages] == true
|
97
111
|
unless resp['meta']['max_id'].nil?
|
98
112
|
marked = @api.update_marker("channel:#{channel_id}", stream['meta']['max_id'])
|
99
113
|
updated = JSON.parse(marked)
|
@@ -104,6 +118,7 @@ module Ayadn
|
|
104
118
|
end
|
105
119
|
options = save_then_return(stream, options, "channel:#{channel_id}")
|
106
120
|
countdown
|
121
|
+
print "..." if Settings.options[:scroll][:spinner] == true
|
107
122
|
rescue Interrupt
|
108
123
|
canceled
|
109
124
|
end
|
@@ -113,12 +128,12 @@ module Ayadn
|
|
113
128
|
private
|
114
129
|
|
115
130
|
def countdown
|
116
|
-
Settings.options[:
|
131
|
+
Settings.options[:scroll][:spinner] == true ? waiting : pause
|
117
132
|
end
|
118
133
|
|
119
134
|
def clear
|
120
135
|
print("\r")
|
121
|
-
print(" ".ljust(
|
136
|
+
print(" ".ljust(40))
|
122
137
|
print("\r")
|
123
138
|
end
|
124
139
|
|
@@ -208,7 +223,7 @@ module Ayadn
|
|
208
223
|
end
|
209
224
|
|
210
225
|
def canceled
|
211
|
-
|
226
|
+
Status.new.canceled
|
212
227
|
exit
|
213
228
|
end
|
214
229
|
end
|
data/lib/ayadn/search.rb
CHANGED
@@ -7,25 +7,29 @@ module Ayadn
|
|
7
7
|
@api = api
|
8
8
|
@view = view
|
9
9
|
@workers = workers
|
10
|
+
@check = Check.new
|
10
11
|
end
|
11
12
|
|
12
13
|
def hashtag(hashtag, options)
|
13
|
-
Settings.
|
14
|
+
Settings.global[:force] = true if options[:force]
|
14
15
|
@view.downloading(options)
|
15
16
|
stream = @api.get_hashtag(hashtag)
|
16
|
-
|
17
|
+
@check.no_data(stream, 'hashtag')
|
17
18
|
if options[:extract]
|
18
19
|
@view.all_hashtag_links(stream, hashtag)
|
19
20
|
else
|
20
21
|
@view.render(stream, options)
|
22
|
+
if Settings.options[:timeline][:compact] == true && !options[:raw]
|
23
|
+
puts "\n"
|
24
|
+
end
|
21
25
|
end
|
22
26
|
end
|
23
27
|
|
24
28
|
def find(words, options)
|
25
|
-
Settings.
|
29
|
+
Settings.global[:force] = true if options[:force]
|
26
30
|
@view.downloading(options)
|
27
31
|
stream = get_stream(words, options)
|
28
|
-
|
32
|
+
@check.no_data(stream, 'search')
|
29
33
|
if options[:users]
|
30
34
|
get_users(stream, options)
|
31
35
|
elsif options[:channels]
|
@@ -33,10 +37,30 @@ module Ayadn
|
|
33
37
|
else
|
34
38
|
get_generic(stream, words, options)
|
35
39
|
end
|
40
|
+
if Settings.options[:timeline][:compact] == true && !options[:raw]
|
41
|
+
puts "\n"
|
42
|
+
end
|
36
43
|
end
|
37
44
|
|
38
45
|
private
|
39
46
|
|
47
|
+
def get_stream words, options
|
48
|
+
if options[:users]
|
49
|
+
@api.search_users words, options
|
50
|
+
elsif options[:annotations]
|
51
|
+
@api.search_annotations words, options
|
52
|
+
elsif options[:channels]
|
53
|
+
@api.search_channels words, options
|
54
|
+
elsif options[:messages]
|
55
|
+
words = words.split(',')
|
56
|
+
channel_id = @workers.get_channel_id_from_alias(words[0])
|
57
|
+
words.shift
|
58
|
+
@api.search_messages channel_id, words.join(','), options
|
59
|
+
else
|
60
|
+
@api.get_search words, options
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
40
64
|
def get_generic stream, words, options
|
41
65
|
if options[:extract]
|
42
66
|
@view.all_search_links(stream, words)
|
@@ -52,26 +76,10 @@ module Ayadn
|
|
52
76
|
def get_users stream, options
|
53
77
|
sorted = stream['data'].sort_by {|obj| obj['counts']['followers']}
|
54
78
|
sorted.each do |obj|
|
55
|
-
puts @view.big_separator
|
79
|
+
puts @view.big_separator unless Settings.options[:timeline][:compact] == true
|
56
80
|
@view.show_userinfos(obj, nil, false)
|
57
81
|
end
|
58
|
-
|
59
|
-
|
60
|
-
def get_stream words, options
|
61
|
-
if options[:users]
|
62
|
-
@api.search_users words, options
|
63
|
-
elsif options[:annotations]
|
64
|
-
@api.search_annotations words, options
|
65
|
-
elsif options[:channels]
|
66
|
-
@api.search_channels words, options
|
67
|
-
elsif options[:messages]
|
68
|
-
words = words.split(',')
|
69
|
-
channel_id = @workers.get_channel_id_from_alias(words[0])
|
70
|
-
words.shift
|
71
|
-
@api.search_messages channel_id, words.join(','), options
|
72
|
-
else
|
73
|
-
@api.get_search words, options
|
74
|
-
end
|
82
|
+
puts "\n" if Settings.options[:timeline][:compact] == true
|
75
83
|
end
|
76
84
|
|
77
85
|
end
|
data/lib/ayadn/set.rb
CHANGED
@@ -8,7 +8,8 @@ module Ayadn
|
|
8
8
|
if args[0]
|
9
9
|
scroll_config.send(args[0], args[1])
|
10
10
|
else
|
11
|
-
|
11
|
+
Status.new.error_missing_parameters
|
12
|
+
exit
|
12
13
|
end
|
13
14
|
scroll_config.save
|
14
15
|
end
|
@@ -20,7 +21,8 @@ module Ayadn
|
|
20
21
|
unless args.length != 2
|
21
22
|
movie_config.send(args[0], args[1])
|
22
23
|
else
|
23
|
-
|
24
|
+
Status.new.error_missing_parameters
|
25
|
+
exit
|
24
26
|
end
|
25
27
|
movie_config.save
|
26
28
|
end
|
@@ -32,7 +34,8 @@ module Ayadn
|
|
32
34
|
unless args.length != 2
|
33
35
|
tvshow_config.send(args[0], args[1])
|
34
36
|
else
|
35
|
-
|
37
|
+
Status.new.error_missing_parameters
|
38
|
+
exit
|
36
39
|
end
|
37
40
|
tvshow_config.save
|
38
41
|
end
|
@@ -44,11 +47,37 @@ module Ayadn
|
|
44
47
|
unless args.length != 2
|
45
48
|
marker_config.send(args[0], args[1])
|
46
49
|
else
|
47
|
-
|
50
|
+
Status.new.error_missing_parameters
|
51
|
+
exit
|
48
52
|
end
|
49
53
|
marker_config.save
|
50
54
|
end
|
51
55
|
|
56
|
+
desc "channels ITEM TRUE/FALSE", "Set values for stream markers"
|
57
|
+
map "channel" => :channels
|
58
|
+
def channels(*args)
|
59
|
+
channels_config = SetChannels.new
|
60
|
+
unless args.length != 2
|
61
|
+
channels_config.send(args[0], args[1])
|
62
|
+
else
|
63
|
+
Status.new.error_missing_parameters
|
64
|
+
exit
|
65
|
+
end
|
66
|
+
channels_config.save
|
67
|
+
end
|
68
|
+
|
69
|
+
desc "blacklist ITEM TRUE/FALSE", "Set values for the blacklist"
|
70
|
+
def blacklist(*args)
|
71
|
+
blacklist_config = SetBlacklist.new
|
72
|
+
unless args.length != 2
|
73
|
+
blacklist_config.send(args[0], args[1])
|
74
|
+
else
|
75
|
+
Status.new.error_missing_parameters
|
76
|
+
exit
|
77
|
+
end
|
78
|
+
blacklist_config.save
|
79
|
+
end
|
80
|
+
|
52
81
|
desc "nicerank ITEM VALUE", "Set NiceRank filter values"
|
53
82
|
long_desc Descriptions.set_nicerank
|
54
83
|
def nicerank *args
|
@@ -56,7 +85,8 @@ module Ayadn
|
|
56
85
|
if args[0]
|
57
86
|
nicerank_config.send(args[0], args[1])
|
58
87
|
else
|
59
|
-
|
88
|
+
Status.new.error_missing_parameters
|
89
|
+
exit
|
60
90
|
end
|
61
91
|
nicerank_config.save
|
62
92
|
end
|
@@ -69,13 +99,14 @@ module Ayadn
|
|
69
99
|
begin
|
70
100
|
timeline_config.send(args[0], args[1])
|
71
101
|
rescue NoMethodError, ArgumentError
|
72
|
-
|
102
|
+
Status.new.error_missing_parameters
|
73
103
|
exit
|
74
104
|
rescue => e
|
75
105
|
raise e
|
76
106
|
end
|
77
107
|
else
|
78
|
-
|
108
|
+
Status.new.error_missing_parameters
|
109
|
+
exit
|
79
110
|
end
|
80
111
|
timeline_config.save
|
81
112
|
end
|
@@ -89,13 +120,14 @@ module Ayadn
|
|
89
120
|
begin
|
90
121
|
counts_config.send(args[0], args[1])
|
91
122
|
rescue NoMethodError, ArgumentError
|
92
|
-
|
123
|
+
Status.new.error_missing_parameters
|
93
124
|
exit
|
94
125
|
rescue => e
|
95
126
|
raise e
|
96
127
|
end
|
97
128
|
else
|
98
|
-
|
129
|
+
Status.new.error_missing_parameters
|
130
|
+
exit
|
99
131
|
end
|
100
132
|
counts_config.save
|
101
133
|
end
|
@@ -111,13 +143,14 @@ module Ayadn
|
|
111
143
|
begin
|
112
144
|
color_config.send(args[0], args[1])
|
113
145
|
rescue NoMethodError, ArgumentError
|
114
|
-
|
146
|
+
Status.new.error_missing_parameters
|
115
147
|
exit
|
116
148
|
rescue => e
|
117
149
|
raise e
|
118
150
|
end
|
119
151
|
else
|
120
|
-
|
152
|
+
Status.new.error_missing_parameters
|
153
|
+
exit
|
121
154
|
end
|
122
155
|
color_config.save
|
123
156
|
end
|
@@ -130,13 +163,14 @@ module Ayadn
|
|
130
163
|
begin
|
131
164
|
backup_config.send(args[0], args[1])
|
132
165
|
rescue NoMethodError, ArgumentError
|
133
|
-
|
166
|
+
Status.new.error_missing_parameters
|
134
167
|
exit
|
135
168
|
rescue => e
|
136
169
|
raise e
|
137
170
|
end
|
138
171
|
else
|
139
|
-
|
172
|
+
Status.new.error_missing_parameters
|
173
|
+
exit
|
140
174
|
end
|
141
175
|
backup_config.save
|
142
176
|
end
|
@@ -145,7 +179,7 @@ module Ayadn
|
|
145
179
|
long_desc Descriptions.set_defaults
|
146
180
|
def defaults
|
147
181
|
Settings.restore_defaults
|
148
|
-
|
182
|
+
Status.new.done
|
149
183
|
end
|
150
184
|
|
151
185
|
desc "formats ITEM VALUE", "Set values for formatting fields"
|
@@ -156,13 +190,14 @@ module Ayadn
|
|
156
190
|
command = args.shift
|
157
191
|
formats_config.send(command, args)
|
158
192
|
rescue NoMethodError, ArgumentError
|
159
|
-
|
193
|
+
Status.new.error_missing_parameters
|
160
194
|
exit
|
161
195
|
rescue => e
|
162
196
|
raise e
|
163
197
|
end
|
164
198
|
else
|
165
|
-
|
199
|
+
Status.new.error_missing_parameters
|
200
|
+
exit
|
166
201
|
end
|
167
202
|
formats_config.save
|
168
203
|
end
|
@@ -178,7 +213,8 @@ module Ayadn
|
|
178
213
|
when "false", "0", "no"
|
179
214
|
false
|
180
215
|
else
|
181
|
-
|
216
|
+
Status.new.error_missing_parameters
|
217
|
+
exit
|
182
218
|
end
|
183
219
|
end
|
184
220
|
|
@@ -187,15 +223,7 @@ module Ayadn
|
|
187
223
|
if x >= min && x <= max
|
188
224
|
x
|
189
225
|
else
|
190
|
-
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
def self.cache_range value
|
195
|
-
if value >= 1 && value <= 168
|
196
|
-
value.round
|
197
|
-
else
|
198
|
-
abort(Status.cache_range)
|
226
|
+
Status.new.must_be_integer
|
199
227
|
end
|
200
228
|
end
|
201
229
|
|
@@ -212,7 +240,7 @@ module Ayadn
|
|
212
240
|
if value > 0 and value < 5
|
213
241
|
value
|
214
242
|
else
|
215
|
-
|
243
|
+
Status.new.threshold
|
216
244
|
end
|
217
245
|
end
|
218
246
|
|
@@ -224,8 +252,9 @@ module Ayadn
|
|
224
252
|
def self.color(color)
|
225
253
|
colors_list = %w{red green magenta cyan yellow blue white black}
|
226
254
|
unless colors_list.include?(color.to_s)
|
227
|
-
|
228
|
-
|
255
|
+
Status.new.error_missing_parameters
|
256
|
+
Status.new.valid_colors(colors_list)
|
257
|
+
exit
|
229
258
|
else
|
230
259
|
return color.to_sym
|
231
260
|
end
|
@@ -242,6 +271,8 @@ module Ayadn
|
|
242
271
|
Settings.get_token()
|
243
272
|
Settings.init_config()
|
244
273
|
Logs.create_logger()
|
274
|
+
@thor = Thor::Shell::Color.new
|
275
|
+
@status = Status.new
|
245
276
|
end
|
246
277
|
|
247
278
|
def save
|
@@ -250,9 +281,11 @@ module Ayadn
|
|
250
281
|
end
|
251
282
|
|
252
283
|
def log
|
253
|
-
|
254
|
-
|
255
|
-
|
284
|
+
@status.say do
|
285
|
+
@thor.say_status(:updated, "'#{@input}' in '#{@category}'", :cyan)
|
286
|
+
@thor.say_status(:content, "'#{@output}'", :green)
|
287
|
+
end
|
288
|
+
Logs.rec.info "new value for '#{@input}' in '#{@category}' => '#{@output}'"
|
256
289
|
end
|
257
290
|
|
258
291
|
end
|
@@ -266,13 +299,19 @@ module Ayadn
|
|
266
299
|
|
267
300
|
def table(args)
|
268
301
|
type = args.shift.downcase
|
269
|
-
value = args[0].to_i
|
270
302
|
if type == 'width'
|
303
|
+
value = args[0].to_i
|
271
304
|
@input = 'table width'
|
272
305
|
@output = Validators.width_range(value)
|
273
306
|
Settings.options[:formats][:table][:width] = @output
|
307
|
+
elsif type == 'borders' || type == 'border'
|
308
|
+
value = args[0]
|
309
|
+
@input = 'table borders'
|
310
|
+
@output = Validators.boolean(value)
|
311
|
+
Settings.options[:formats][:table][:borders] = @output
|
274
312
|
else
|
275
|
-
|
313
|
+
@status.error_missing_parameters
|
314
|
+
exit
|
276
315
|
end
|
277
316
|
end
|
278
317
|
|
@@ -288,7 +327,8 @@ module Ayadn
|
|
288
327
|
@output = Validators.boolean(value)
|
289
328
|
Settings.options[:formats][:list][:reverse] = @output
|
290
329
|
else
|
291
|
-
|
330
|
+
@status.error_missing_parameters
|
331
|
+
exit
|
292
332
|
end
|
293
333
|
end
|
294
334
|
|
@@ -315,6 +355,18 @@ module Ayadn
|
|
315
355
|
Settings.options[:scroll][:timer] = @output
|
316
356
|
end
|
317
357
|
|
358
|
+
def date(value)
|
359
|
+
@input = 'date'
|
360
|
+
@output = Validators.boolean(value)
|
361
|
+
Settings.options[:scroll][:date] = @output
|
362
|
+
end
|
363
|
+
|
364
|
+
def spinner(value)
|
365
|
+
@input = 'spinner'
|
366
|
+
@output = Validators.boolean(value)
|
367
|
+
Settings.options[:scroll][:spinner] = @output
|
368
|
+
end
|
369
|
+
|
318
370
|
end
|
319
371
|
|
320
372
|
class SetMovie < SetBase
|
@@ -360,10 +412,14 @@ module Ayadn
|
|
360
412
|
Settings.options[:nicerank][:filter] = @output
|
361
413
|
end
|
362
414
|
|
363
|
-
def
|
364
|
-
|
415
|
+
def active value
|
416
|
+
filter(value)
|
417
|
+
end
|
418
|
+
|
419
|
+
def unranked value
|
420
|
+
@input = 'unranked'
|
365
421
|
@output = Validators.boolean(value)
|
366
|
-
Settings.options[:nicerank][:
|
422
|
+
Settings.options[:nicerank][:unranked] = @output
|
367
423
|
end
|
368
424
|
|
369
425
|
def threshold value
|
@@ -372,12 +428,6 @@ module Ayadn
|
|
372
428
|
Settings.options[:nicerank][:threshold] = @output
|
373
429
|
end
|
374
430
|
|
375
|
-
def cache value
|
376
|
-
@input = 'cache'
|
377
|
-
@output = Validators.cache_range(value.to_i)
|
378
|
-
Settings.options[:nicerank][:cache] = @output
|
379
|
-
end
|
380
|
-
|
381
431
|
end
|
382
432
|
|
383
433
|
class SetBackup < SetBase
|
@@ -395,7 +445,7 @@ module Ayadn
|
|
395
445
|
@input = meth.to_s
|
396
446
|
@output = validate(options)
|
397
447
|
case @input
|
398
|
-
when '
|
448
|
+
when 'posts', 'messages', 'lists'
|
399
449
|
Settings.options[:backup][meth.to_sym] = @output
|
400
450
|
else
|
401
451
|
super
|
@@ -419,7 +469,7 @@ module Ayadn
|
|
419
469
|
@input = meth.to_s
|
420
470
|
@output = validate(options)
|
421
471
|
case @input
|
422
|
-
when '
|
472
|
+
when 'messages'
|
423
473
|
Settings.options[:marker][meth.to_sym] = @output
|
424
474
|
else
|
425
475
|
super
|
@@ -428,6 +478,54 @@ module Ayadn
|
|
428
478
|
|
429
479
|
end
|
430
480
|
|
481
|
+
class SetChannels < SetBase
|
482
|
+
|
483
|
+
def initialize
|
484
|
+
super
|
485
|
+
@category = 'channels'
|
486
|
+
end
|
487
|
+
|
488
|
+
def validate(value)
|
489
|
+
Validators.boolean(value)
|
490
|
+
end
|
491
|
+
|
492
|
+
def method_missing(meth, options)
|
493
|
+
@input = meth.to_s
|
494
|
+
@output = validate(options)
|
495
|
+
case @input
|
496
|
+
when 'links'
|
497
|
+
Settings.options[:channels][meth.to_sym] = @output
|
498
|
+
else
|
499
|
+
super
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
end
|
504
|
+
|
505
|
+
class SetBlacklist < SetBase
|
506
|
+
|
507
|
+
def initialize
|
508
|
+
super
|
509
|
+
@category = 'blacklist'
|
510
|
+
end
|
511
|
+
|
512
|
+
def validate(value)
|
513
|
+
Validators.boolean(value)
|
514
|
+
end
|
515
|
+
|
516
|
+
def method_missing(meth, options)
|
517
|
+
@input = meth.to_s
|
518
|
+
@output = validate(options)
|
519
|
+
case @input
|
520
|
+
when 'active', 'activated'
|
521
|
+
Settings.options[:blacklist][meth.to_sym] = @output
|
522
|
+
else
|
523
|
+
super
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
end
|
528
|
+
|
431
529
|
class SetCounts < SetBase
|
432
530
|
|
433
531
|
def initialize
|
@@ -467,10 +565,8 @@ module Ayadn
|
|
467
565
|
@input = meth.to_s
|
468
566
|
@output = validate(options)
|
469
567
|
case @input
|
470
|
-
when 'directed', '
|
568
|
+
when 'directed', 'source', 'symbols', 'name', 'date', 'debug', 'compact'
|
471
569
|
Settings.options[:timeline][meth.to_sym] = @output
|
472
|
-
when 'deleted', 'annotations'
|
473
|
-
abort(Status.not_mutable)
|
474
570
|
else
|
475
571
|
super
|
476
572
|
end
|
@@ -493,7 +589,7 @@ module Ayadn
|
|
493
589
|
@input = meth.to_s.capitalize
|
494
590
|
@output = validate(options)
|
495
591
|
case meth.to_s
|
496
|
-
when 'id', 'index', 'username', 'name', 'date', 'link', 'dots', 'hashtags', 'mentions', 'source', 'symbols', 'unread', 'debug'
|
592
|
+
when 'id', 'index', 'username', 'name', 'date', 'link', 'dots', 'hashtags', 'mentions', 'source', 'symbols', 'unread', 'debug', 'excerpt'
|
497
593
|
Settings.options[:colors][meth.to_sym] = @output
|
498
594
|
when 'hashtag', 'mention', 'symbol'
|
499
595
|
Settings.options[:colors]["#{meth}s".to_sym] = @output
|