X-Git-Url: http://nitlanguage.org diff --git a/lib/csv.nit b/lib/csv.nit index e04109a..9b4da2f 100644 --- a/lib/csv.nit +++ b/lib/csv.nit @@ -17,6 +17,8 @@ module csv # A CSV document representation class CSVDocument + super Streamable + var header: Array[String] writable = new Array[String] var lines: Array[Array[String]] = new Array[Array[String]] @@ -39,15 +41,27 @@ class CSVDocument lines.add(line) end - redef fun to_s do - var str = header.join(";") + "\n" - for line in lines do str += line.join(";") + "\n" - return str + private fun write_line_to(line: Collection[String], stream: OStream) + do + var i = line.iterator + if i.is_ok then + stream.write(i.item) + i.next + while i.is_ok do + stream.write(";") + stream.write(i.item) + i.next + end + end + stream.write("\n") end - fun save(file: String) do - var out = new OFStream.open(file) - out.write(self.to_s) - out.close + redef fun write_to(stream) + do + write_line_to(header, stream) + for line in lines do write_line_to(line, stream) end + + # deprecated alias for `write_to_file` + fun save(file: String) do write_to_file(file) end