Class: Zypper::Onlinesearch::Data::Page::Opensuse

Inherits:
PageData
  • Object
show all
Defined in:
lib/zypper/onlinesearch/data.rb

Overview

Scraping class for openSUSE page.

Constant Summary collapse

URL =
"https://software.opensuse.org"
XPATH_NAME =
"//h1"
XPATH_SHORTDESC =
"//h1/following::p/strong"
XPATH_DESC =
'//*[@id="pkg-desc"]'
XPATH_SUPPORTED =
'//div[@id="other-distributions-listing"]/h4'
XPATH_SUPPORTED_DISTRO =
"./h4"
XPATH_SUPPORTED_LABEL =
'.//following-sibling::div[@class="card mb-2"][1]//a'
".//@href"
XPATH_SUPPORTED_VERSION =
'../..//div[@class="col-md-2"]'
XPATH_COMMUNITY =
'.//following-sibling::div[contains(@id,"community-packages")][1]//div/div/a'
".//@href"
XPATH_COMMUNITY_VERSION =
'../..//div[@class="col-md-2"]'
XPATH_EXPERIMENTAL =
'.//following-sibling::div[contains(@id,"experimental-packages")][1]//div/div/a'
".//@href"
XPATH_EXPERIMENTAL_VERSION =
'../..//div[@class="col-md-2"]'
XPATH_UNSUPPORTED =
'//div[@id="unsupported-distributions"]/h4'
XPATH_UNSUPPORTED_DISTRO =
"./h4"
XPATH_UNSUPPORTED_LABEL =
'.//following-sibling::div[@class="card mb-2" and count(preceding-sibling::h4)=_n_]//a'
".//@href"
XPATH_UNSUPPORTED_VERSION =
'../..//div[@class="col-md-2"]'

Constants inherited from PageData

PageData::ARCHS, PageData::FORMATS

Instance Method Summary collapse

Methods inherited from PageData

#expand_link, #initialize

Constructor Details

This class inherits a constructor from Zypper::Onlinesearch::PageData

Instance Method Details

#dataObject



158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/zypper/onlinesearch/data.rb', line 158

def data
  res = {}
  res[:name] = @page.xpath(XPATH_NAME).text
  res[:short_description] = @page.xpath(XPATH_SHORTDESC).text.strip
  res[:description] = @page.xpath(XPATH_DESC).text.chomp
  res[:versions] = []

  @page.xpath(XPATH_SUPPORTED).each do |ver|
    extract(ver, res, :supported, XPATH_SUPPORTED_LABEL, XPATH_SUPPORTED_VERSION, XPATH_SUPPORTED_LINK)
    extract(ver, res, :community, XPATH_COMMUNITY, XPATH_COMMUNITY_VERSION, XPATH_COMMUNITY_LINK)
    extract(ver, res, :experimental, XPATH_EXPERIMENTAL, XPATH_EXPERIMENTAL_VERSION, XPATH_EXPERIMENTAL_LINK)
  end

  @page.xpath(XPATH_UNSUPPORTED).each_with_index do |ver, i|
    extract(ver, res, :unsupported,
            XPATH_UNSUPPORTED_LABEL.gsub(/_n_/, i.next.to_s),
            XPATH_UNSUPPORTED_VERSION, XPATH_UNSUPPORTED_LINK)
  end

  res
end