Class: RubyHackernews::CommentService
- Inherits:
-
Object
- Object
- RubyHackernews::CommentService
show all
- Includes:
- MechanizeContext
- Defined in:
- lib/ruby-hackernews/services/comment_service.rb
Instance Method Summary
collapse
#[], #agent, agent=, #authenticated?, #require_authentication
Instance Method Details
#find_by_id(id) ⇒ Object
17
18
19
20
21
22
23
24
25
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 17
def find_by_id(id)
page = agent.get(ConfigurationService.base_url + "item?id=#{id}")
= (page.search("table")[2].search("tr").first)
.instance_variable_set(:@absolute_link, "item?id=#{id}")
(page.search("table")[3]).each do |c|
<< c
end
return
end
|
6
7
8
9
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 6
def (page)
table = page.search("table")[3]
return (table)
end
|
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 27
def (table)
= []
target =
current_level = 0
trs = table.search("table/tr").select do |tr|
tr.search("span.comment").inner_html != "[deleted]"
end
trs.each do |tr|
= (tr)
level = tr.search("img[@src='s.gif']").first['width'].to_i / 40
difference = current_level - level
(difference + 1).times do
target = target.kind_of?(Comment) && target.parent ? target.parent :
end
current_level = level
target <<
target =
end
return
end
|
48
49
50
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 48
def (pages = 1, url = ConfigurationService.)
(pages,url)[:comments]
end
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 52
def (pages = 1, url = ConfigurationService.)
parser = EntryPageParser.new(agent.get(url))
= []
next_url = nil
pages.times do
lines = parser.get_lines
lines.each do |line|
<< (line)
end
next_url = parser.get_next_url || break
parser = EntryPageParser.new(agent.get(next_url))
end
return {:comments => , :next_url => next_url}
end
|
11
12
13
14
15
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 11
def (user)
page = agent.get(ConfigurationService.base_url + "threads?id=#{user.name}")
table = page.search("table")[2]
return (table)
end
|
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 67
def (element)
text_html = element.search("span.comment").first.search("font").children.map { |x| x.inner_text }.join("\n")
= element.search("span.comhead").first
voting = VotingInfoParser.new(element.search("td/center/a"), ).parse
user_info = UserInfoParser.new().parse
reply_link = element.search("td[@class='default']/p//u//a").first
reply_url = reply_link['href'] if reply_link
absolute_link_group = .search("a")
absolute_url = absolute_link_group.count == 2 ? absolute_link_group[1]['href'] : nil
parent_link = .search("a[text()*='parent']").first
parent_url = parent_link['href'] if parent_link
return Comment.new(text_html, voting, user_info, reply_url, absolute_url, parent_url)
end
|
81
82
83
84
85
86
87
|
# File 'lib/ruby-hackernews/services/comment_service.rb', line 81
def (page_url, )
require_authentication
form = agent.get(page_url).forms.first
form.text =
form.submit
return true
end
|