Class: Gh::Trending::Parsers::DevelopersParser

Inherits:
Parser
  • Object
show all
Defined in:
lib/gh_trending/parsers/developers_parser.rb

Overview

Parses the trending developers page

Constant Summary collapse

LIST_WITH_DEVS_NODES_HTML_CLASS =
'ol.list-style-none'.freeze
ANCHOR_WITH_HOT_REPOSITORY =
'a.repo-snipit'.freeze
SPAN_WITH_FULL_NAME =
'span.text-gray'.freeze
REGEXP_FOR_FULLNAME =
/\((.+)\)/

Instance Attribute Summary

Attributes inherited from Parser

#agent

Instance Method Summary collapse

Methods inherited from Parser

#initialize

Constructor Details

This class inherits a constructor from Gh::Trending::Parsers::Parser

Instance Method Details

#parse(parser_args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/gh_trending/parsers/developers_parser.rb', line 11

def parse(parser_args)
  url = build_request_url_with(parser_args)
  page = agent.get(url)
  parsed_page = page.at(LIST_WITH_DEVS_NODES_HTML_CLASS)

  if parsed_page.nil?
    changed_page = :front_page_with_devs
    raise Gh::Trending::Parsers::HtmlChangedError.new(changed_page)
  end

  devs = parsed_page.search('li')
  build_developers_from_node devs
end

#resource_urlObject



25
26
27
# File 'lib/gh_trending/parsers/developers_parser.rb', line 25

def resource_url
  'https://github.com/trending/developers'.freeze
end