reddit-ruby 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 01e754fa54a6ee2a525bf32971f1ac71265cbf6b
4
- data.tar.gz: 7a02fda2801b73df4bb47911d3f60086126f8020
3
+ metadata.gz: 849504009e7932ba671b0d79e528ce1231a68944
4
+ data.tar.gz: f94ff358e3ec904787f1c69d2f79908c1edd068c
5
5
  SHA512:
6
- metadata.gz: 9f0a22f0be3d18a74385cd2c7e57a2022c71e72e2f7c67a392e49d5ab3f12f1f37df138ae01542cb93cf490b64a665cd41d4763136af7bf68bf5f2eec7679961
7
- data.tar.gz: 4f343fcce0dda6b13c48cf05045aaeeb2410650d8efd31ef174156b611353f73f0e3301583e841582c5b834822b1c3d7ce56ee02fb93bc4e0a6834ca41719eee
6
+ metadata.gz: 3a926c062d990ac65f112c8aa87acb40595e2fcc84418df7f8e2f3d142d81497b13144805caea89397bb66fb0065bed57062c08d6e413418dfc5f6e548e88b2e
7
+ data.tar.gz: cb25c2633fe581e890a24ec7119f4ad4c4871f801e7cf05245f13e095b87aafd21730402229bf9f68fd01c3a4e4d88efc2bb37b84d24eb52b1b20cd3c09f5012
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- reddit-ruby (1.0.8)
4
+ reddit-ruby (1.0.9)
5
5
  colorize
6
6
  nokogiri
7
7
 
@@ -13,7 +13,7 @@ GEM
13
13
  diff-lcs (1.3)
14
14
  method_source (0.9.0)
15
15
  mini_portile2 (2.3.0)
16
- nokogiri (1.8.1)
16
+ nokogiri (1.8.2)
17
17
  mini_portile2 (~> 2.3.0)
18
18
  pry (0.11.3)
19
19
  coderay (~> 1.1.0)
@@ -23,7 +23,7 @@ GEM
23
23
  rspec-core (~> 3.7.0)
24
24
  rspec-expectations (~> 3.7.0)
25
25
  rspec-mocks (~> 3.7.0)
26
- rspec-core (3.7.0)
26
+ rspec-core (3.7.1)
27
27
  rspec-support (~> 3.7.0)
28
28
  rspec-expectations (3.7.0)
29
29
  diff-lcs (>= 1.2.0, < 2.0)
@@ -4,4 +4,5 @@ require 'open-uri'
4
4
  require 'colorize'
5
5
 
6
6
  require_relative './reddit/scraper'
7
- require_relative './reddit/cli'
7
+ require_relative './reddit/cli'
8
+ require_relative './reddit/post'
@@ -1,8 +1,11 @@
1
1
  class Reddit::CLI
2
2
  def call
3
3
  @subreddit = ARGV[0] || "ruby"
4
+ Reddit::Scraper.scrape(@subreddit)
5
+ @posts = Reddit::Post.all
4
6
  puts "Here's the current hot list on r/#{@subreddit}"
5
- show_posts(@subreddit)
7
+ show_posts
8
+
6
9
  menu
7
10
  end
8
11
 
@@ -22,7 +25,6 @@ class Reddit::CLI
22
25
  puts ""
23
26
  puts "> Enter the number of the post you'd like more info on:"
24
27
  input = STDIN.gets.chomp.downcase
25
-
26
28
  if input.to_i > 0
27
29
  show_post(input.to_i-1)
28
30
  elsif input == "list"
@@ -37,32 +39,31 @@ class Reddit::CLI
37
39
 
38
40
  def get_score_text(index)
39
41
  post = @posts[index.to_i]
40
- upvotes = post[:upvotes]
41
- if post[:upvotes].to_i == 1
42
- score = post[:upvotes].to_i >= 0 ? 'upvote' : 'downvote'
42
+ upvotes = post.upvotes
43
+ if post.upvotes.to_i == 1
44
+ score = post.upvotes.to_i >= 0 ? 'upvote' : 'downvote'
43
45
  else
44
- score = post[:upvotes].to_i >= 0 ? 'upvotes' : 'downvotes'
46
+ score = post.upvotes.to_i >= 0 ? 'upvotes' : 'downvotes'
45
47
  end
46
48
  return "#{upvotes} #{score}"
47
49
  end
48
50
 
49
- def show_posts(subreddit)
50
- @posts = Reddit::Scraper.scrape(subreddit)
51
+ def show_posts
51
52
  @posts.each_with_index do |post, i|
52
53
  upvotes = get_score_text(i)
53
54
  index = "#{i + 1}"
54
- puts "#{index.bold}. #{upvotes} - #{post[:title]} by #{post[:author].bold}"
55
+ puts "#{index.bold}. #{upvotes} - #{post.title} by #{post.author.bold}"
55
56
  end
56
57
  end
57
58
 
58
59
  def show_post(index)
59
60
  post = @posts[index.to_i]
60
61
  puts ""
61
- puts "Title: #{post[:title]}"
62
- puts "Author: #{post[:author]}"
63
- puts "Score: #{post[:upvotes]}"
64
- puts "Comments: #{post[:comments]}"
65
- puts "Posted: #{post[:timestamp]}"
62
+ puts "Title: #{post.title}"
63
+ puts "Author: #{post.author}"
64
+ puts "Score: #{post.upvotes}"
65
+ puts "Comments: #{post.comments}"
66
+ puts "Posted: #{post.timestamp}"
66
67
  puts ""
67
68
  input = nil
68
69
  while input != "exit"
@@ -73,7 +74,7 @@ class Reddit::CLI
73
74
  puts ""
74
75
  input = STDIN.gets.chomp.downcase
75
76
  if input.to_i == 1
76
- openInBrowser(post[:url])
77
+ openInBrowser(post.url)
77
78
  elsif input.to_i == 2
78
79
  show_posts
79
80
  break
@@ -84,4 +85,4 @@ class Reddit::CLI
84
85
  end
85
86
  end
86
87
  end
87
- end
88
+ end
@@ -0,0 +1,20 @@
1
+ class Reddit::Post
2
+ attr_accessor :title, :author, :timestamp, :comments, :upvotes, :url
3
+
4
+ @@post = []
5
+
6
+ def initialize(title, author, timestamp, comments, upvotes, url)
7
+ @title = title
8
+ @author = author
9
+ @timestamp = timestamp
10
+ @comments = comments
11
+ @upvotes = upvotes
12
+ @url = url
13
+
14
+ @@post << self
15
+ end
16
+
17
+ def self.all
18
+ @@post
19
+ end
20
+ end
@@ -1,9 +1,7 @@
1
1
  class Reddit::Scraper
2
- attr_accessor :title, :author, :timestamp, :comments, :upvotes, :url
3
2
  def self.scrape(subreddit)
4
3
  url = "https://www.reddit.com/r/#{subreddit}"
5
4
  doc = Nokogiri::HTML(open(url, 'User-Agent' => 'ruby-reddit'))
6
- posts = []
7
5
  postsList = doc.css('#siteTable > div.thing.link').first(10)
8
6
  postsList.each do |post|
9
7
  title = post.css('.title a.title').text.strip
@@ -12,16 +10,8 @@ class Reddit::Scraper
12
10
  comments = post.attr('data-comments-count')
13
11
  upvotes = post.attr('data-score')
14
12
  url = post.css('a.comments').attr('href')
15
- newPost = {
16
- title: title,
17
- author: author,
18
- timestamp: timestamp,
19
- comments: comments,
20
- upvotes: upvotes,
21
- url: url,
22
- }
23
- posts << newPost
13
+
14
+ Reddit::Post.new(title, author, timestamp, comments, upvotes, url)
24
15
  end
25
- posts
26
16
  end
27
- end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Reddit
2
- VERSION = "1.0.8"
2
+ VERSION = "1.0.9"
3
3
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Logan McAnsh"]
9
9
  spec.email = ["logan@mcan.sh"]
10
10
 
11
- spec.summary = "Get the current hot posts from r/ruby"
12
- spec.description = "Get the current hot posts from r/ruby"
11
+ spec.summary = "Get the current hot posts from any subreddit"
12
+ spec.description = "Get the current hot posts from any subreddit"
13
13
  spec.homepage = "https://github.com/mcansh/ruby-reddit-cli-app"
14
14
  spec.license = "MIT"
15
15
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reddit-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Logan McAnsh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-09 00:00:00.000000000 Z
11
+ date: 2018-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description: Get the current hot posts from r/ruby
97
+ description: Get the current hot posts from any subreddit
98
98
  email:
99
99
  - logan@mcan.sh
100
100
  executables:
@@ -113,6 +113,7 @@ files:
113
113
  - bin/setup
114
114
  - lib/reddit.rb
115
115
  - lib/reddit/cli.rb
116
+ - lib/reddit/post.rb
116
117
  - lib/reddit/scraper.rb
117
118
  - lib/reddit/version.rb
118
119
  - license.markdown
@@ -139,8 +140,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
140
  version: '0'
140
141
  requirements: []
141
142
  rubyforge_project:
142
- rubygems_version: 2.5.2
143
+ rubygems_version: 2.6.13
143
144
  signing_key:
144
145
  specification_version: 4
145
- summary: Get the current hot posts from r/ruby
146
+ summary: Get the current hot posts from any subreddit
146
147
  test_files: []