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

Version Path
dribbble-bucket-api-0.0.6 lib/dribbble_bucket_api/bucket_index_parser.rb
dribbble-bucket-api-0.0.5 lib/dribbble_bucket_api/bucket_index_parser.rb
dribbble-bucket-api-0.0.4 lib/dribbble_bucket_api/bucket_index_parser.rb