Class: PennMARC::Location
- Defined in:
- lib/pennmarc/helpers/location.rb
Overview
Methods that return Library and Location values from Alma enhanced MARC fields
Class Method Summary collapse
-
.library(record, location_map: Mappers.location) ⇒ Array<String>
Retrieves library location from enriched marc ‘itm’ or ‘hld’ fields, giving priority to the item location over the holdings location.
-
.location(record:, display_value:, location_map:) ⇒ Array<String>
Base method to retrieve location data from enriched marc ‘itm’ or ‘hld’ fields, giving priority to the item location over the holdings location.
-
.specific_location(record, location_map: Mappers.location) ⇒ Array<String>
Retrieves the specific location from enriched marc ‘itm’ or ‘hld’ fields, giving priority to the item location over the holdings location.
Methods included from Util
#datafield_and_linked_alternate, #join_and_squish, #join_subfields, #linked_alternate, #linked_alternate_not_6_or_8, #prefixed_subject_and_alternate, #remove_paren_value_from_subfield_i, #subfield_defined?, #subfield_in?, #subfield_not_in?, #subfield_undefined?, #subfield_value?, #subfield_value_in?, #subfield_value_not_in?, #subfield_values, #subfield_values_for, #substring_after, #substring_before, #translate_relator, #trim_trailing, #valid_subject_genre_source_code?
Class Method Details
.library(record, location_map: Mappers.location) ⇒ Array<String>
Retrieves library location from enriched marc ‘itm’ or ‘hld’ fields, giving priority to the item location over the holdings location. Returns item’s location if available. Otherwise, returns holding’s location. EnrichedMarc maps enriched marc fields and subfields created during Alma publishing.
15 16 17 |
# File 'lib/pennmarc/helpers/location.rb', line 15 def library(record, location_map: Mappers.location) location(record: record, location_map: location_map, display_value: 'library') end |
.location(record:, display_value:, location_map:) ⇒ Array<String>
Base method to retrieve location data from enriched marc ‘itm’ or ‘hld’ fields, giving priority to the item location over the holdings location. Returns item location if available. Otherwise, returns holdings location. EnrichedMarc maps enriched marc fields and subfields created during Alma publishing.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pennmarc/helpers/location.rb', line 41 def location(record:, display_value:, location_map:) # get enriched marc location tag and subfield code location_tag_and_subfield_code(record) => {tag:, subfield_code:} locations = record.fields(tag).flat_map { |field| field.filter_map { |subfield| # skip unless subfield code does not match enriched marc tag subfield code next unless subfield.code == subfield_code # skip if subfield value is 'web' # we don't facet for 'web' which is the 'Penn Library Web' location used in Voyager. # this location should eventually go away completely with data cleanup in Alma. next if subfield.value == 'web' # skip unless subfield value is a key in location_map # sometimes "happening locations" are mistakenly used in holdings records. # that's a data problem that should be fixed. # here, if we encounter a code we can't map, we ignore it, for faceting purposes next unless location_map.key?(subfield.value.to_sym) location_map[subfield.value.to_sym][display_value.to_sym] }.flatten.compact_blank }.uniq locations << 'Online library' if record.fields(PennMARC::EnrichedMarc::TAG_ELECTRONIC_INVENTORY).any? locations end |
.specific_location(record, location_map: Mappers.location) ⇒ Array<String>
Retrieves the specific location from enriched marc ‘itm’ or ‘hld’ fields, giving priority to the item location over the holdings location. Returns item library location if available. Otherwise, returns holdings library location. EnrichedMarc maps enriched marc fields and subfields created during Alma publishing.
28 29 30 |
# File 'lib/pennmarc/helpers/location.rb', line 28 def specific_location(record, location_map: Mappers.location) location(record: record, location_map: location_map, display_value: 'specific_location') end |