misc/jenkins: fix checklicense.sh
[nit.git] / lib / csv.nit
index e04109a..82fbb05 100644 (file)
@@ -17,7 +17,9 @@ module csv
 
 # A CSV document representation
 class CSVDocument
-       var header: Array[String] writable = new Array[String]
+       super Streamable
+
+       var header: Array[String] = new Array[String] is writable
        var lines: Array[Array[String]] = new Array[Array[String]]
 
        fun set_header(values: Object...) do
@@ -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