Class: RubyHackernews::EntryParser

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-hackernews/services/parsers/entry_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(first_line, second_line) ⇒ EntryParser

Returns a new instance of EntryParser.



5
6
7
8
# File 'lib/ruby-hackernews/services/parsers/entry_parser.rb', line 5

def initialize(first_line, second_line)
  @first_line  = first_line
  @second_line = second_line
end

Instance Method Details

#parseObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ruby-hackernews/services/parsers/entry_parser.rb', line 10

def parse
  first_line_title = @first_line.search("[@class='title']")
  number_segment = nil
  link_segment = nil
  if(first_line_title.length > 1)
    number_segment = first_line_title[0]
    link_segment = first_line_title[1]
  else
    link_segment = first_line_title[0]
  end
  number   = number_segment.inner_html.sub(".","").to_i if number_segment
  link     = LinkInfoParser.new(link_segment).parse
  voting   = VotingInfoParser.new(@first_line.search("td/center/a"), @second_line.search("[@class='subtext']")[0]).parse
  user     = UserInfoParser.new(@second_line).parse
  comments = CommentsInfoParser.new(@second_line).parse
  time     = TimeInfoParser.new(@second_line).parse
  return Entry.new(number, link, voting, user, comments, time)
end