csv: Clean `CsvDocument` a little bit.
authorJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Tue, 9 Dec 2014 16:45:16 +0000 (11:45 -0500)
committerJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Tue, 9 Dec 2014 16:45:16 +0000 (11:45 -0500)
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>

lib/csv/csv.nit
src/metrics/mendel_metrics.nit
src/metrics/metrics_base.nit
src/rapid_type_analysis.nit

index 82fbb05..38680d0 100644 (file)
 # CSV output facilities
 module csv
 
-# A CSV document representation
-class CSVDocument
+# A CSV document representation.
+class CsvDocument
        super Streamable
 
        var header: Array[String] = new Array[String] is writable
-       var lines: Array[Array[String]] = new Array[Array[String]]
+       var records: Array[Array[String]] = new Array[Array[String]]
 
        fun set_header(values: Object...) do
                header.clear
-               for value in values do
-                       header.add(value.to_s)
-               end
+               for value in values do header.add(value.to_s)
        end
 
-       fun add_line(values: Object...) do
-               if values.length != header.length then
-                       print "CSV error: header declares {header.length} columns, line contains {values.length} values"
-                       abort
-               end
-               var line = new Array[String]
-               for value in values do
-                       line.add(value.to_s)
+       fun add_record(values: Object...) do
+               assert values.length == header.length else
+                       sys.stderr.write "CSV error: Header declares {header.length} columns, record contains {values.length} values.\n"
                end
-               lines.add(line)
+               var record = new Array[String]
+               for value in values do record.add(value.to_s)
+               records.add(record)
        end
 
        private fun write_line_to(line: Collection[String], stream: OStream)
@@ -56,12 +51,11 @@ class CSVDocument
                stream.write("\n")
        end
 
-       redef fun write_to(stream)
-       do
+       redef fun write_to(stream) do
                write_line_to(header, stream)
-               for line in lines do write_line_to(line, stream)
+               for record in records do write_line_to(record, stream)
        end
 
-       # deprecated alias for `write_to_file`
+       # Deprecated alias for `write_to_file`.
        fun save(file: String) do write_to_file(file)
 end
index 6c63925..80c4ed8 100644 (file)
@@ -102,7 +102,7 @@ private class MendelMetricsPhase
                end
 
                if csv then
-                       var csvh = new CSVDocument
+                       var csvh = new CsvDocument
                        csvh.header = ["povr", "ovr", "pext", "ext", "pspe", "spe", "prep", "rep", "eq"]
                        for mclass in mclasses do
                                var povr = mclass.is_pure_overrider(vis).object_id
@@ -114,7 +114,7 @@ private class MendelMetricsPhase
                                var prep = mclass.is_pure_replacer(vis).object_id
                                var rep = mclass.is_replacer(vis).object_id
                                var eq = mclass.is_equal(vis).object_id
-                               csvh.add_line(povr, ovr, pext, ext, pspe, spe, prep, rep, eq)
+                               csvh.add_record(povr, ovr, pext, ext, pspe, spe, prep, rep, eq)
                        end
                        csvh.save("{out}/inheritance_behaviour.csv")
                end
index b55e1b8..c99ec62 100644 (file)
@@ -367,8 +367,8 @@ class MetricSet
        end
 
        # Export the metric set in CSV format
-       fun to_csv: CSVDocument do
-               var csv = new CSVDocument
+       fun to_csv: CsvDocument do
+               var csv = new CsvDocument
 
                # set csv headers
                csv.header.add("entry")
@@ -390,7 +390,7 @@ class MetricSet
                                        line.add("n/a")
                                end
                        end
-                       csv.lines.add(line)
+                       csv.records.add(line)
                end
                return csv
        end
index 32b13e3..b4cf4ab 100644 (file)
@@ -111,7 +111,7 @@ class RapidTypeAnalysis
        # Return a ready-to-save CSV document objet that agregates informations about live types.
        # Each discovered type is listed in a line, with its status: resolution, liveness, cast-liveness.
        # Note: types are listed in an alphanumeric order to improve human reading.
-       fun live_types_to_csv: CSVDocument
+       fun live_types_to_csv: CsvDocument
        do
                # Gather all kind of type
                var typeset = new HashSet[MType]
@@ -121,7 +121,7 @@ class RapidTypeAnalysis
                typeset.add_all(live_open_cast_types)
                var types = typeset.to_a
                (new CachedAlphaComparator).sort(types)
-               var res = new CSVDocument
+               var res = new CsvDocument
                res.header = ["Type", "Resolution", "Liveness", "Cast-liveness"]
                for t in types do
                        var reso
@@ -130,7 +130,7 @@ class RapidTypeAnalysis
                        if t isa MClassType and (live_types.has(t) or live_open_types.has(t)) then live = "LIVE" else live = "DEAD"
                        var cast
                        if live_cast_types.has(t) or live_open_cast_types.has(t) then cast = "CAST LIVE" else cast = "CAST DEAD"
-                       res.add_line(t, reso, live, cast)
+                       res.add_record(t, reso, live, cast)
                end
                return res
        end