Module: BerkeleyLibrary::TIND::Mapping::AdditionalDatafieldProcess

Included in:
DataFieldsCatalog, TindMarc
Defined in:
lib/berkeley_library/tind/mapping/additional_datafield_process.rb

Instance Method Summary collapse

Instance Method Details

#clean_subfields(fields) ⇒ Object

process 2: remove charaters in subfields defined in Config module



15
16
17
18
19
20
21
22
# File 'lib/berkeley_library/tind/mapping/additional_datafield_process.rb', line 15

def clean_subfields(fields)
  fields.each do |f|
    next unless field_in_tags?(f, Config.clean_tags)

    clean_subfields_in_field(f)
  end
  fields
end

#clean_subfields_in_field(field) ⇒ Object

clean subfields of a datafield



39
40
41
# File 'lib/berkeley_library/tind/mapping/additional_datafield_process.rb', line 39

def clean_subfields_in_field(field)
  field.subfields.each { |sf| clean_subfield(sf) }
end

#remove_repeated_fields(tag, fields) ⇒ Object

  1. Find all datafield with the tag, if more than one found, combine repeated datafields which have a same tag into one
  2. Find all 880 datafields with subfield6 referring to the tag, if more than one found, combine repeated datafields with one subfield 6, a related datafield will be modified to have the same sequence in subfield 6 as in this 880 subfield 6


29
30
31
32
33
34
35
36
# File 'lib/berkeley_library/tind/mapping/additional_datafield_process.rb', line 29

def remove_repeated_fields(tag, fields)
  repeated_fields = fields_on_tag(tag, fields)
  remove_repeated(repeated_fields, fields)

  repeated_880_fields = fields_880_on_subfield6_referredtag(tag, fields)
  remove_repeated(repeated_880_fields, fields)
  fields
end

#remove_repeats(fields) ⇒ Object

process 1: remove and combine repeated fields - defined in Config module



9
10
11
12
# File 'lib/berkeley_library/tind/mapping/additional_datafield_process.rb', line 9

def remove_repeats(fields)
  Config.no_duplicated_tags.each { |tag| remove_repeated_fields(tag, fields) }
  fields
end