Module: BerkeleyLibrary::TIND::Mapping::Util
Class Method Summary
collapse
-
.alma_datafield(tag, record) ⇒ Object
-
.collection_config_correct? ⇒ Boolean
-
.concatenation_symbol(str) ⇒ Object
-
.csv_rows(file) ⇒ Object
-
.datafield(tag, indicator, subfields) ⇒ Object
-
.from_xml(xml) ⇒ MARC::Record?
From DM - get testing MARC from xml file.
-
.indicator(str) ⇒ Object
-
.order_subfields(subfields, codes) ⇒ Object
-
.qualified_alma_record?(alma_record) ⇒ Boolean
-
.remove_extra_symbol(rules, val) ⇒ Object
-
.subfield(code, value) ⇒ Object
-
.subfield_hash(field) ⇒ Object
-
.symbols(rules) ⇒ Object
input an array of rules, example: [["a,b,c,d", "b", "--"],["o,p,q", "b", ""]].
-
.tag_symbol(tag) ⇒ Object
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
.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|
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
78
79
80
81
|
# File 'lib/berkeley_library/tind/mapping/util.rb', line 78
def from_xml(xml)
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
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
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
|
56
57
58
59
60
|
# File 'lib/berkeley_library/tind/mapping/util.rb', line 56
def (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
|