[![Gem Version](https://badge.fury.io/rb/exlibris-aleph.png)](http://badge.fury.io/rb/exlibris-aleph) [![Build Status](https://api.travis-ci.org/scotdalton/exlibris-aleph.png?branch=master)](https://travis-ci.org/scotdalton/exlibris-aleph) [![Dependency Status](https://gemnasium.com/scotdalton/exlibris-aleph.png)](https://gemnasium.com/scotdalton/exlibris-aleph) [![Code Climate](https://codeclimate.com/github/scotdalton/exlibris-aleph.png)](https://codeclimate.com/github/scotdalton/exlibris-aleph) [![Coverage Status](https://coveralls.io/repos/scotdalton/exlibris-aleph/badge.png?branch=master)](https://coveralls.io/r/scotdalton/exlibris-aleph) # Exlibris::Aleph Exlibris::Aleph offers a set of libraries for interacting with the ExLibris Aleph ILS. ## Config There are several configuration options - `base_url`: a String representing the base url for Aleph, e.g. http://aleph.library.edu - `rest_url`: a String representing rest url for the Aleph REST API, e.g. http://aleph.library.edu:1891 - `adms`: an Array of administrative library codes, e.g. ['ADM50', 'ADM51'] - `table_path`: the path to the Aleph tables on the system - `irrelevant_sub_libraries`: an Array or Sub Library codes to ignore An example: ```ruby Exlibris::Aleph.configure do |config| config.base_url = 'http://aleph.library.edu' config.rest_url = 'http://aleph.library.edu:1891' config.adms = ['ADM50', 'ADM51'] config.table_path = "/mnt/aleph_tab" end ``` ## Basic Concepts - `AdminLibrary`: an administrative library ```ruby admin_library = AdminLibrary.new('ADM50') # => Exlibris::Aleph::AdminLibrary admin_library.code # => 'ADM50' ``` - `SubLibrary`: a sub library ```ruby sub_library = SubLibrary.new('SUB', 'Sub Library', admin_library) # => Exlibris::Aleph::SubLibrary sub_library.code # => 'SUB' sub_library.display # => 'Sub Library' sub_library.admin_library # => Exlibris::Aleph::AdminLibrary ``` - `Collection`: a collection ```ruby collection = Collection.new('MAIN', 'Main Collection', sub_library) # => Exlibris::Aleph::Collection collection.code # => 'MAIN' collection.display # => 'Main Collection' collection.sub_library # => Exlibris::Aleph::SubLibrary ``` - `PickupLocation`: a pickup location - `Patron::Status`: a patron status ```ruby patron_status = Exlibris::Aleph::Patron::Status.new('01', 'Regular patron') # => Exlibris::Aleph::Patron::Status patron_status.code # => '01' patron_status.display # => 'Regular patron' ``` - `Item::Status`: an item status ```ruby item_status = Exlibris::Aleph::Item::Status.new('01', 'Regular loan') # => Exlibris::Aleph::Item::Status item_status.code # => '01' item_status.display # => 'Regular loan' ``` - `Item::ProcessingStatus`: an item circulation status ```ruby processing_status = Exlibris::Aleph::Item::ProcessingStatus.new('DP', 'Depository') # => Exlibris::Aleph::Item::ProcessingStatus processing_status.code # => 'DP' processing_status.display # => 'Depository' ``` - `Item::CirculationStatus` - `Item::CallNumber` ## Record The primary interface for an Aleph record An example: ```ruby record_id = '000000001' admin_library = Exlibris::Aleph::AdminLibrary.new('BIB01') # => Exlibris::Aleph::AdminLibrary record = Exlibris::Aleph::Record.new(record_id, admin_library) # => Exlibris::Aleph::Record bibliographic_metadata = record.metadata # => Exlibris::Aleph::Record::Metadata bibliographic_marc_record = bibliographic_metadata.marc_record # => returns a MARC::Record holdings = record.holdings # => Exlibris::Aleph::Holdings holdings.each do |holding| holding.is_a?(Exlibris::Aleph::Holding) # => true holding_metadata = holding.metadata # => Exlibris::Aleph::Holding::Metadata holding_marc_record = holding_metadata.marc_record # => returns a MARC::Record end items = record.items # => Exlibris::Aleph::Items items.each do |item| item.is_a?(Exlibris::Aleph::Item) # => true item_collection = item.collection # => Exlibris::Aleph::Collection item_status = item.status # => Exlibris::Aleph::Item::Status item_processing_status = item.processing_status # => Exlibris::Aleph::Item::ProcessingStatus item_circulation_status = item.circulation_status # => Exlibris::Aleph::Item::CirculationStatus item_call_number = item.call_number # => Exlibris::Aleph::Item::CallNumber item_opac_note = item.opac_note # => Exlibris::Aleph::Item::OpacNote item_queue = item.queue # => Exlibris::Aleph::Item::Queue item_on_shelf = item.on_shelf? # => true end ``` ## Patron The primary interface for an Aleph patron An example: ```ruby patron_id = 'N1234567890' patron = Exlibris::Aleph::Patron.new(patron_id) # => Exlibris::Aleph::Patron address = patron.address # => Exlibris::Aleph::Patron::Address record_id = 'BIB01000000001' patron_record = patron.record(record_id) # => Exlibris::Aleph::Patron::Record patron_record_circulation_policy = patron_record.circulation_policy # => Exlibris::Aleph::Patron::Record::CirculationPolicy item_id = 'ADM5000000000101' patron_record_item = patron_record.item(item_id) # => Exlibris::Aleph::Patron::Record::Item patron_record_item_item = patron_record_item.item # => Exlibris::Aleph::Item patron_record_item_circulation_policy = patron_record_item.circulation_policy # => Exlibris::Aleph::Patron::Record::Item::CirculationPolicy ``` ## Tables `Tables` are accessed through the `TablesManager`.