redcli 0.1.1 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/redcli/application.rb +39 -5
- data/lib/redcli/version.rb +1 -1
- data/test/redcli/application_test.rb +15 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba8f3497d57378e2dc84be412bb42882f29118be
|
4
|
+
data.tar.gz: 1ca176d79ce680e771ebcad072d7586aa4574a8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36c4b9d33dd4edc8fce3bb8e88070d7ac69a447b76b92575d98086e282415e869964ff45822332a5a20dd556a589cac0f14b47874e929659b6e7903d4b12123e
|
7
|
+
data.tar.gz: b0a8771b93804e0f2fb85cc46d602135cd10fdfabb06c247b57abbefb3edf68bd6d1f6b8b471e8745a68f8e9f3c7830bd5fb912714242d44c1bbd9ecc09d69c7
|
data/lib/redcli/application.rb
CHANGED
@@ -17,14 +17,30 @@ module Redcli
|
|
17
17
|
def run
|
18
18
|
@links = get_links
|
19
19
|
if @links
|
20
|
-
|
21
|
-
prompt_action
|
22
|
-
act_on_input
|
20
|
+
links
|
23
21
|
else
|
24
22
|
signal_failure
|
25
23
|
end
|
26
24
|
end
|
27
25
|
|
26
|
+
def links
|
27
|
+
display_links
|
28
|
+
prompt_links_input
|
29
|
+
act_on_input
|
30
|
+
end
|
31
|
+
|
32
|
+
def link(link_index)
|
33
|
+
@current_link = @links[link_index]
|
34
|
+
display_topic(link_index)
|
35
|
+
prompt_link_input
|
36
|
+
act_on_input
|
37
|
+
end
|
38
|
+
|
39
|
+
def open_current_link
|
40
|
+
url = @current_link["data"]["url"]
|
41
|
+
`open #{url}`
|
42
|
+
end
|
43
|
+
|
28
44
|
private
|
29
45
|
|
30
46
|
def url
|
@@ -44,20 +60,38 @@ module Redcli
|
|
44
60
|
end
|
45
61
|
|
46
62
|
def display_links
|
63
|
+
@stdout.puts "\n"
|
47
64
|
@links.each_with_index do |link, i|
|
48
65
|
title = link.fetch("data", { "title" => "No Title"}).fetch("title")
|
49
66
|
@stdout.puts "#{i+1}) #{title}".send(COLORS[i%2])
|
50
67
|
end
|
68
|
+
@stdout.puts "\n"
|
69
|
+
end
|
70
|
+
|
71
|
+
def display_topic(topic_index)
|
72
|
+
@stdout.puts "\n\n\n"
|
73
|
+
@stdout.puts @links[topic_index].fetch("data", { "selftext" => "No Information Available" }).fetch("selftext")
|
74
|
+
@stdout.puts "\n"
|
75
|
+
end
|
76
|
+
|
77
|
+
def prompt_links_input
|
78
|
+
@stdout.puts "(1-10) | (q)uit"
|
51
79
|
end
|
52
80
|
|
53
|
-
def
|
54
|
-
@stdout.puts "(q)uit"
|
81
|
+
def prompt_link_input
|
82
|
+
@stdout.puts "(b)ack | (q)uit | (o)pen in browser"
|
55
83
|
end
|
56
84
|
|
57
85
|
def act_on_input
|
58
86
|
input = @stdin.gets.chomp
|
59
87
|
if input =~ /q/
|
60
88
|
return
|
89
|
+
elsif input =~ /[0-9]/
|
90
|
+
link(input.to_i - 1)
|
91
|
+
elsif input =~ /b/
|
92
|
+
links
|
93
|
+
elsif input =~ /o/
|
94
|
+
open_current_link
|
61
95
|
end
|
62
96
|
end
|
63
97
|
|
data/lib/redcli/version.rb
CHANGED
@@ -17,10 +17,21 @@ class ApplicationTest < Minitest::Test
|
|
17
17
|
stdin = StringIO.new("q\n")
|
18
18
|
app = Redcli::Application.new(subreddit: 'test', stdout: stdout, stdin: stdin)
|
19
19
|
app.run
|
20
|
-
stdout.
|
21
|
-
assert_match /1\)/,
|
22
|
-
|
23
|
-
|
20
|
+
output = stdout.string.split("\n")
|
21
|
+
assert_match /1\)/, output[1]
|
22
|
+
assert_match /\(q\)uit/, output.last
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_viewing_a_subreddit_topic
|
27
|
+
VCR.use_cassette("test") do
|
28
|
+
stdout = StringIO.new
|
29
|
+
stdin = StringIO.new("1\nq\n")
|
30
|
+
app = Redcli::Application.new(subreddit: 'test', stdout: stdout, stdin: stdin)
|
31
|
+
app.run
|
32
|
+
last_line = stdout.string.split("\n").last
|
33
|
+
assert_match /\(b\)ack/, last_line
|
34
|
+
assert_match /\(q\)uit/, last_line
|
24
35
|
end
|
25
36
|
end
|
26
37
|
|