Module: BerkeleyLibrary::TIND::Mapping::TindControlSubfield

Included in:
TindFieldFromLeader, TindFieldFromMultipleMap
Defined in:
lib/berkeley_library/tind/mapping/tind_control_subfield.rb

Instance Method Summary collapse

Instance Method Details

#extract_value(rule, value) ⇒ Object



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

def extract_value(rule, value)
  pos = rule.position_from_to
  return nil unless pos

  value[pos[0]..pos[1]]
end

#extracted_field(rule, sub_value) ⇒ Object

return a mapped datafield based on rule and extract value



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/berkeley_library/tind/mapping/tind_control_subfield.rb', line 16

def extracted_field(rule, sub_value)
  subname = rule.subfield_key
  destiantion_tag = rule.tag_destination
  indicator = rule.indicator
  return nil unless subname && destiantion_tag && indicator

  new_sub_value = clean_subfield_value(destiantion_tag, sub_value)
  return nil unless new_sub_value

  new_sub_value = clean_subfield_value(destiantion_tag, sub_value)
  subfields = [Util.subfield(subname, new_sub_value)]
  Util.datafield(destiantion_tag, indicator, subfields)
end

#extracted_fields_from_leader(leader_rules, leader_value) ⇒ Object

pass in rules, a string value; return datafields based on rules



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/berkeley_library/tind/mapping/tind_control_subfield.rb', line 31

def extracted_fields_from_leader(leader_rules, leader_value)
  new_fls = []
  leader_rules.each do |rule|
    sub_value = extract_value(rule, leader_value)
    next unless sub_value

    newfield = extracted_field(rule, sub_value)
    new_fls << newfield if newfield
  end
  new_fls
end