Sha256: 2f0fc02928836a06682bc8dedde020d3172993e84ac1f2ea0a49ad7b3e2c3faf
Contents?: true
Size: 1 KB
Versions: 3
Compression:
Stored size: 1 KB
Contents
require "nokogiri" require_relative "bucket" module DribbbleBucketApi class BucketIndexParser attr_reader :body def initialize(body, options = {}) @body = body @options = options end def buckets @buckets ||= document.css(".bucket-list > li").map do |bucket| # parse bucket data from HTML id = bucket["class"] =~ /^bucket\-(\d+)$/ && $1.to_i name = bucket.css(".bucket-title a").first.text # pass data into bucket object Bucket.new(id: id, name: name, username: username) end end def current_page @options[:page] || 1 end def next_page current_page + 1 if current_page < total_pages end def previous_page current_page - 1 if current_page > 1 end def total_entries @total_entries ||= document.css(".buckets .count").text.to_i end def total_pages total_entries > 0 ? (total_entries.to_f / 5).ceil : 0 end private def username @options[:username] end def document @document ||= Nokogiri::HTML(@body) end end end
Version data entries
3 entries across 3 versions & 1 rubygems