3 #edit is a wrapper method to loop until done
8 puts "Subfield Editing"
9 puts "To denote which subfield you want to edit put it in the form of 245a.\nIn the case of repeating fields or subfields you will be prompted\nto choose the one you wish to edit. "
12 fs = ask("What field and subfield would you like to edit (in form 245a) or quit?\n> "){|q| q.readline = true}
13 if fs == 'q' || fs == 'quit'
17 if !(fs =~/\d\d\d\w/ )
18 puts "That's not a valid value"
21 self.change_subfield(fs)
25 #edit_subfield is passed to a MARC::Record object and give a subfield
26 def change_subfield(fs)
27 field_subfield = subfield_parse(fs)
28 field = field_subfield[0]
29 subfield = field_subfield[1]
31 fields = self.find_all {|f| f.tag == field}
34 subfields << field.find_all {|s| s.code == subfield}
37 if subfields.length > 1
39 for subfield in subfields
40 puts "#{i}\t#{subfield}"
43 num_to_change = ask("Which subfield do you want to change?"){|q| q.readline = true}
44 subfield_to_change = subfields[num_to_change.to_i]
45 elsif subfields.length == 1
46 subfield_to_change = subfields[0]
47 elsif subfields.empty?
48 puts "No such subfield!"
56 puts subfield_to_change.value
57 edit = ask("Your edit:\t"){|q| q.readline = true}
58 subfield_to_change.value = edit
63 #subfield_parse method for getting from '245a' to ['245','a']
64 def subfield_parse(combined)
66 field_subfield << combined[0, 3]
67 field_subfield << combined[3,1]