Sha256: 3fdff345e86371268136ea9617967c56856efe67d4c4204aa185da2901309dd7

Contents?: true

Size: 833 Bytes

Versions: 2

Compression:

Stored size: 833 Bytes

Contents

module Alma
  class BibItemSet
    extend Forwardable

    # Let BibItemSet respond to the Enumerable duck type
    # by delegating responsibility for #each to items
    include Enumerable
    attr_accessor :items
    def_delegators :items, :each

    def_delegators :items,:[], :[]=, :empty?, :size

    attr_reader :raw_response, :total_record_count
    def_delegators :raw_response, :response, :request

    def initialize(response)
      @raw_response = response
      parsed = JSON.parse(response.body)
      @total_record_count = parsed["total_record_count"]
      @items = parsed.fetch("item",[]).map {|item| BibItem.new(item)}
    end

    def grouped_by_library
      group_by(&:library)
    end

    def filter_missing_and_lost
      clone = dup
      clone.items = reject(&:missing_or_lost?)
      clone
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alma-0.2.8 lib/alma/bib_item_set.rb
alma-0.2.6 lib/alma/bib_item_set.rb