def initialize(tag, i1=' ', i2=' ', *subfields)
if tag.length < 3 and /^[0-9]*$/ =~ tag
@tag = "%03d" % tag
else
@tag = tag
end
@indicator1 = i1 == nil ? ' ' : i1
@indicator2 = i2 == nil ? ' ' : i2
@subfields = []
if MARC::ControlField.control_tag?(@tag)
raise MARC::Exception.new(),
"MARC::DataField objects can't have ControlField tag '" + @tag + "')"
end
subfields.each do |subfield|
case subfield
when MARC::Subfield
@subfields.push(subfield)
when Array
if subfield.length > 2
raise MARC::Exception.new(),
"arrays must only have 2 elements: " + subfield.to_s
end
@subfields.push(
MARC::Subfield.new(subfield[0],subfield[1]))
else
raise MARC::Exception.new(),
"invalid subfield type #{subfield.class}"
end
end
end