Sha256: beaa68160dad88402e33e81eca97a3b2a255f1dc567293f58dfec62ec4f25eef

Contents?: true

Size: 860 Bytes

Versions: 1

Compression:

Stored size: 860 Bytes

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 total_entries
			@total_entries ||= document.css(".buckets .count").text.to_i
		end
		
		def total_pages
			(total_entries.to_f / 5).ceil
		end
		
		private
		def username
			@options[:username]
		end
		
		def document
			@document ||= Nokogiri::HTML(@body)
		end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dribbble-bucket-api-0.0.3 lib/dribbble_bucket_api/bucket_index_parser.rb