lib/exlibris/aleph/holdings.rb
module Exlibris
module Aleph
class Holdings
extend Forwardable
def_delegators :to_a, :each, :size
include Enumerable
attr_reader :record_id
def initialize(record_id)
@record_id = record_id
end
def to_a
@array ||= ids.map { |id| Holding.new(record_id, id) }
end
private
def client
@client ||= API::Client::Record::Holdings.new(record_id)
end
def root
@root ||= client.root
end
def holdings_root
@holdings_root ||= root['holdings']
end
def holdings
@holdings ||= holdings_root['holding'] unless holdings_root.nil?
end
def ids
@ids ||= begin
if holdings.nil?
[]
else
holdings.map do |holding|
href = (holdings.size > 1) ? holding['href'] : holding[1]
href.split('/').pop
end
end
end
end
end
end
end