module Ghtrend
Constants
- VERSION
Public Class Methods
trend()
click to toggle source
# File lib/ghtrend.rb, line 6 def self.trend doc = Oga.parse_html(Net::HTTP.get URI.parse('https://github.com/trending')) doc.css('li.repo-list-item').map do |repo| { name: repo_name(repo), url: URI.join('https://github.com/', repo_path(repo)).to_s, description: repo_description(repo), meta: repo_meta(repo), } end end
Private Class Methods
repo_description(node)
click to toggle source
# File lib/ghtrend.rb, line 28 def self.repo_description(node) node.css('.repo-list-description').map { |e| trim(e.text) }.join(' ').force_encoding('UTF-8') end
repo_meta(node)
click to toggle source
# File lib/ghtrend.rb, line 32 def self.repo_meta(node) node.css('.repo-list-meta').text.split('•').map { |s| trim(s) }.slice(0, 2).join(', ') end
repo_name(node)
click to toggle source
# File lib/ghtrend.rb, line 20 def self.repo_name(node) node.css('.repo-list-name > a').map { |e| trim(e.text) }.join end
repo_path(node)
click to toggle source
# File lib/ghtrend.rb, line 24 def self.repo_path(node) node.at_css('.repo-list-name > a').get('href') end
trim(s)
click to toggle source
# File lib/ghtrend.rb, line 36 def self.trim(s) s.gsub(/\n[ ]*/, '').chomp end