Module: BerkeleyLibrary::TIND::Mapping::Util

Class Method Summary collapse

Methods included from AlmaBase

#base_save, #base_tind_record

Class Method Details

.alma_datafield(tag, record) ⇒ Object



62
63
64
65
# File 'lib/berkeley_library/tind/mapping/util.rb', line 62

def alma_datafield(tag, record)
  record.fields.each { |f| return f if f.tag.to_s == tag }
  nil
end

.collection_config_correct?Boolean

Returns:

  • (Boolean)


83
84
85
86
87
# File 'lib/berkeley_library/tind/mapping/util.rb', line 83

def collection_config_correct?
  no_including = BerkeleyLibrary::TIND::Mapping::AlmaBase.including_origin_tags.empty?
  no_excluding = BerkeleyLibrary::TIND::Mapping::AlmaBase.excluding_origin_tags.empty?
  no_including || no_excluding
end

.concatenation_symbol(str) ⇒ Object



22
23
24
# File 'lib/berkeley_library/tind/mapping/util.rb', line 22

def concatenation_symbol(str)
  str ? str.gsub('a', ' ') : ' '
end

.csv_rows(file) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/berkeley_library/tind/mapping/util.rb', line 13

def csv_rows(file)
  rows = []
  CSV.foreach(file, headers: true, header_converters: :symbol, encoding: 'bom|utf-8') do |row|
    # puts row.headers
    rows << clr_row(row)
  end
  rows
end

.datafield(tag, indicator, subfields) ⇒ Object



36
37
38
39
40
# File 'lib/berkeley_library/tind/mapping/util.rb', line 36

def datafield(tag, indicator, subfields)
  datafield = ::MARC::DataField.new(tag, indicator[0], indicator[1])
  subfields.each { |sf| datafield.append(sf) }
  datafield
end

.from_xml(xml) ⇒ MARC::Record?

From DM - get testing MARC from xml file

Parameters:

  • xml (String)

    the XML to parse

Returns:

  • (MARC::Record, nil)

    the MARC record from the specified XML



78
79
80
81
# File 'lib/berkeley_library/tind/mapping/util.rb', line 78

def from_xml(xml)
  # noinspection RubyYardReturnMatch,RubyMismatchedReturnType
  all_from_xml(xml).first
end

.indicator(str) ⇒ Object



26
27
28
29
30
# File 'lib/berkeley_library/tind/mapping/util.rb', line 26

def indicator(str)
  return [] unless str

  str.strip.gsub('_', ' ').split(',')
end

.order_subfields(subfields, codes) ⇒ Object

subfield util



90
91
92
93
94
95
96
97
98
# File 'lib/berkeley_library/tind/mapping/util.rb', line 90

def order_subfields(subfields, codes)
  found_subfields = []
  codes.each do |code|
    sfs = subfields.select { |subfield| subfield.code == code }
    found_subfields.concat sfs
  end
  not_found_subfields = subfields - found_subfields
  found_subfields.concat not_found_subfields
end

.qualified_alma_record?(alma_record) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
70
71
72
73
# File 'lib/berkeley_library/tind/mapping/util.rb', line 67

def qualified_alma_record?(alma_record)
  f_245 = alma_datafield('245', alma_record)
  f_245_a = f_245['a'].downcase

  val = 'Host bibliographic record'.downcase
  !f_245_a.start_with? val
end

.remove_extra_symbol(rules, val) ⇒ Object



56
57
58
59
60
# File 'lib/berkeley_library/tind/mapping/util.rb', line 56

def remove_extra_symbol(rules, val)
  symbols = symbols(rules)
  symbols.each { |s| val = val.strip.delete_suffix(s) }
  val
end

.subfield(code, value) ⇒ Object



42
43
44
# File 'lib/berkeley_library/tind/mapping/util.rb', line 42

def subfield(code, value)
  ::MARC::Subfield.new(code, value)
end

.subfield_hash(field) ⇒ Object



46
47
48
49
# File 'lib/berkeley_library/tind/mapping/util.rb', line 46

def subfield_hash(field)
  code_value_arr = field.to_hash[field.tag]['subfields']
  {}.tap { |i| code_value_arr.each(&i.method(:update)) }
end

.symbols(rules) ⇒ Object

input an array of rules, example: [["a,b,c,d", "b", "--"],["o,p,q", "b", ""]]



52
53
54
# File 'lib/berkeley_library/tind/mapping/util.rb', line 52

def symbols(rules)
  rules.map { |rule| concatenation_symbol(rule[2]).strip }
end

.tag_symbol(tag) ⇒ Object



32
33
34
# File 'lib/berkeley_library/tind/mapping/util.rb', line 32

def tag_symbol(tag)
  "tag_#{tag}".to_sym
end