class See5::InputFileWriter
Writes names and data files suitable for See5
, Cubist, or GritBot.
Public Class Methods
new(data:, schema: nil, names_io: nil, data_io: nil)
click to toggle source
# File lib/see5/input_file_writer.rb, line 13 def initialize(data:, schema: nil, names_io: nil, data_io: nil) @data = data @schema = schema # TODO: automatic schema from data objects' attributes @names_io = names_io @data_io = data_io end
write_files(data:, schema: nil, names_io: nil, data_io: nil)
click to toggle source
# File lib/see5/input_file_writer.rb, line 8 def self.write_files(data:, schema: nil, names_io: nil, data_io: nil) new(data: data, schema: schema, names_io: names_io, data_io: data_io) .write_files end
Public Instance Methods
write_data_file()
click to toggle source
# File lib/see5/input_file_writer.rb, line 32 def write_data_file # TODO: missing or N/A @data.each do |record| data_io.write(row(record)) data_io.write("\n") end end
write_files()
click to toggle source
# File lib/see5/input_file_writer.rb, line 20 def write_files write_names_file write_data_file names_io.close data_io.close end
write_names_file()
click to toggle source
# File lib/see5/input_file_writer.rb, line 28 def write_names_file names_io.write(@schema.names_file_contents) end
Private Instance Methods
data_io()
click to toggle source
# File lib/see5/input_file_writer.rb, line 57 def data_io @data_io ||= File.open("/tmp/ruby-see5.data", "w") end
names_io()
click to toggle source
# File lib/see5/input_file_writer.rb, line 53 def names_io @names_io ||= File.open("/tmp/ruby-see5.names", "w") end
row(record)
click to toggle source
# File lib/see5/input_file_writer.rb, line 42 def row(record) @schema.attributes.map do |attr, _vals| if record.is_a?(Hash) record[attr] else # assume some kind of OpenStruct- or ActiveModel-like object record.send(attr) end end.join(",") end