def self.create(name, schema, options = {})
date = Date.today
record_size = 1+schema.columns.inject(0) { |size, column| size + column.size }
data = ''
data << [0xf5].pack('C')
data << [date.year % 100, date.month, date.day].pack('CCC')
data << [0].pack('L')
data << [32+schema.columns.size*32+1].pack('v')
data << [record_size].pack('v')
data << [].pack('x2')
data << [].pack('x')
data << [].pack('x')
data << [].pack('x4')
data << [].pack('x8')
data << [0].pack('c')
data << [options[:language]].pack('C')
data << [].pack('x2')
offset = 1
data << schema.columns.collect do |column|
s = ''
s << [column.name.to_s[0..9]].pack('a11')
s << [column.type].pack('a')
s << [offset].pack('L')
s << [column.size].pack('C')
s << [column.decimal || 0].pack('C')
s << [].pack('x2')
s << [].pack('x')
s << [].pack('x2')
s << [].pack('x')
s << [].pack('x7')
s << [].pack('x')
offset += column.size
s
end.join
data << [13].pack('C')
data << [26].pack('C')
File.open("#{name}.dbf", 'wb') do |f|
f.write data
end
end