def self.encode(record)
directory = ''
fields = ''
offset = 0
for field in record.fields
field_data = ''
if field.class == MARC::DataField
warn("Warn: Missing indicator") unless field.indicator1 && field.indicator2
field_data = (field.indicator1 || " ") + (field.indicator2 || " ")
for s in field.subfields
field_data += SUBFIELD_INDICATOR + s.code + s.value
end
elsif field.class == MARC::ControlField
field_data = field.value
end
field_data += END_OF_FIELD
field_length = field_data.length()
directory += sprintf("%03s%04i%05i", field.tag, field_length,
offset)
fields += field_data
offset += field_length
end
base = record.leader + directory + END_OF_FIELD
marc = base + fields + END_OF_RECORD
marc[12..16] = sprintf("%05i", base.length())
marc[0..4] = sprintf("%05i", marc.length())
record.leader = marc[0..LEADER_LENGTH-1]
return marc
end