class ARBookFinder::Book

Attributes

ar_points[R]
ar_quiz_availability[R]
ar_quiz_number[R]
atos_book_level[R]
author[R]
cover[R]
interest_level[R]
language[R]
publishers[R]
rating[R]
series[R]
summary[R]
title[R]
topics[R]
type[R]
url[R]
word_count[R]

Public Class Methods

new(url) click to toggle source
# File lib/ar_book_finder/book.rb, line 11
def initialize(url)
  @url = url
  @publishers = []
end

Public Instance Methods

fetch() click to toggle source
# File lib/ar_book_finder/book.rb, line 16
def fetch
  BookDetailProcessor.new(@url).process
  load(BookDetailParser.new(Capybara.page.html).parse)
  self
end

Private Instance Methods

load(parsed_data) click to toggle source
# File lib/ar_book_finder/book.rb, line 23
def load(parsed_data)
  parsed_data.keys.each do |k|
    instance_variable_set("@#{k}", parsed_data[k]) unless [:ar_quiz_availability,
                                                           :topics,
                                                           :series,
                                                           :publishers].include?(k)
  end

  load_ar_quiz_availability(parsed_data[:ar_quiz_availability])
  load_topics(parsed_data[:topics])
  load_series(parsed_data[:series])
  load_publishers(parsed_data[:publishers])
end
load_ar_quiz_availability(ar_quiz_availability) click to toggle source
# File lib/ar_book_finder/book.rb, line 37
def load_ar_quiz_availability(ar_quiz_availability)
  @ar_quiz_availability = ar_quiz_availability.split(',').collect { |v| v.strip.gsub('  ', '') }
end
load_publishers(publishers) click to toggle source
# File lib/ar_book_finder/book.rb, line 51
def load_publishers(publishers)
  publishers.each { |p| @publishers << Publisher.new(p) }
end
load_series(series) click to toggle source
# File lib/ar_book_finder/book.rb, line 47
def load_series(series)
  @series = series.split(';').collect { |v| v.strip }
end
load_topics(topics) click to toggle source
# File lib/ar_book_finder/book.rb, line 41
def load_topics(topics)
  @topics = topics.split(';').collect do |topic|
    topic.split('-').collect { |v| v.strip }
  end
end