ruby_reddit_api 0.2.1 → 0.2.2
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.
- data/README +1 -1
- data/features/step_definitions/submission_steps.rb +1 -0
- data/lib/ruby_reddit_api/comment.rb +32 -6
- metadata +3 -3
data/README
CHANGED
@@ -112,6 +112,7 @@ Then /^I should be able to indistinguish the submission$/ do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
Then /^I should be able to see the comments$/ do
|
115
|
+
@submission.instance_variable_set("@last_action", Time.now - 60) if @submission
|
115
116
|
comments = @submission.comments
|
116
117
|
comments.size.should > 0
|
117
118
|
end
|
@@ -3,14 +3,28 @@ module Reddit
|
|
3
3
|
class Comment < Thing
|
4
4
|
|
5
5
|
include JsonListing
|
6
|
-
attr_reader :body, :subreddit_id, :name, :created, :downs, :author, :created_utc, :body_html, :link_id, :parent_id, :likes, :num_comments, :subreddit, :ups, :debug, :kind
|
7
|
-
def initialize(json)
|
8
|
-
|
6
|
+
attr_reader :body, :subreddit_id, :name, :created, :downs, :author, :created_utc, :body_html, :link_id, :parent_id, :likes, :num_comments, :subreddit, :ups, :debug, :kind, :replies
|
7
|
+
def initialize(json, options={})
|
8
|
+
mode = options.fetch(:mode){ :json }
|
9
|
+
if mode == :json
|
10
|
+
parse(json)
|
11
|
+
end
|
12
|
+
|
13
|
+
if mode == :replies
|
14
|
+
json.keys.each do |key|
|
15
|
+
instance_variable_set("@#{key}", json[key])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
if replies.is_a?(Hash)
|
20
|
+
handle_replies(replies)
|
21
|
+
end
|
22
|
+
|
9
23
|
@debug = StringIO.new
|
10
24
|
end
|
11
25
|
|
12
26
|
def inspect
|
13
|
-
"<Reddit::Comment author='#{@author}' body='#{short_body}'>"
|
27
|
+
"<Reddit::Comment author='#{@author}' body='#{short_body}' replies='#{replies.size}' ups='#{ups}' downs='#{downs}'>"
|
14
28
|
end
|
15
29
|
|
16
30
|
# @return [String]
|
@@ -79,7 +93,7 @@ module Reddit
|
|
79
93
|
# Trimmed comment body suitable for #inspect
|
80
94
|
# @return [String]
|
81
95
|
def short_body
|
82
|
-
str = body.to_s
|
96
|
+
str = body.to_s.strip
|
83
97
|
if str.size > 15
|
84
98
|
str[0..15] + "..."
|
85
99
|
else
|
@@ -89,8 +103,20 @@ module Reddit
|
|
89
103
|
|
90
104
|
def add_distinction(verb)
|
91
105
|
resp=self.class.post("/api/distinguish/#{verb}", {:body => {:id => id, :uh => modhash, :r => subreddit, :executed => "distinguishing..."}, :headers => base_headers, :debug_output => @debug })
|
92
|
-
puts resp.headers
|
93
106
|
resp.code == 200
|
94
107
|
end
|
108
|
+
|
109
|
+
# Parse nested comment hashes into a Comment
|
110
|
+
# @param [Hash] JSON containing reply data
|
111
|
+
# @return [true]
|
112
|
+
def handle_replies(data)
|
113
|
+
dup = data.dup
|
114
|
+
_kind, data = dup["kind"], dup["data"]
|
115
|
+
modhash, children = data["modhash"], data["children"]
|
116
|
+
if children.is_a?(Array)
|
117
|
+
@replies = children.map{|reply| Comment.new(reply["data"], :mode => :replies) }
|
118
|
+
end
|
119
|
+
true
|
120
|
+
end
|
95
121
|
end
|
96
122
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- James Cook
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-10 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|