Class: PennMARC::Language
- Defined in:
- lib/pennmarc/helpers/language.rb
Overview
should we consider values in the 041 field?
Logic for extracting and translating Language values for a record. Penn practice is to verify the value present in the 008 control field as a three letter code. This code is then mapped to a display-friendly value using the a provided mapping hash.
Constant Summary collapse
- UNDETERMINED_CODE =
Used when no value is present in the control field - still mapped
:und
Class Method Summary collapse
-
.search(record, language_map: Mappers.language) ⇒ String
Get language values for searching and faceting of a record.
-
.show(record) ⇒ Array<String>
Get language values for display from the 546 field and related 880.
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
.search(record, language_map: Mappers.language) ⇒ String
Get language values for searching and faceting of a record. The value is extracted from a defined position in the 008 control field. Language facet and search values will typically be the same.
30 31 32 33 34 |
# File 'lib/pennmarc/helpers/language.rb', line 30 def search(record, language_map: Mappers.language) control_field = record['008']&.value language_code = control_field[35..37] language_map[language_code.to_sym || UNDETERMINED_CODE] end |
.show(record) ⇒ Array<String>
Get language values for display from the 546 field and related 880.
17 18 19 20 21 22 |
# File 'lib/pennmarc/helpers/language.rb', line 17 def show(record) values = record.fields('546').map do |field| join_subfields field, &subfield_not_in?(%w[6 8]) end values + linked_alternate(record, '546', &subfield_not_in?(%w[6 8])) end |