From: Jean-Christophe Beaupré Date: Tue, 9 Dec 2014 16:45:16 +0000 (-0500) Subject: csv: Clean `CsvDocument` a little bit. X-Git-Tag: v0.7~70^2~3 X-Git-Url: http://nitlanguage.org csv: Clean `CsvDocument` a little bit. Signed-off-by: Jean-Christophe Beaupré --- diff --git a/lib/csv/csv.nit b/lib/csv/csv.nit index 82fbb05..38680d0 100644 --- a/lib/csv/csv.nit +++ b/lib/csv/csv.nit @@ -15,30 +15,25 @@ # 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 diff --git a/src/metrics/mendel_metrics.nit b/src/metrics/mendel_metrics.nit index 6c63925..80c4ed8 100644 --- a/src/metrics/mendel_metrics.nit +++ b/src/metrics/mendel_metrics.nit @@ -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 diff --git a/src/metrics/metrics_base.nit b/src/metrics/metrics_base.nit index b55e1b8..c99ec62 100644 --- a/src/metrics/metrics_base.nit +++ b/src/metrics/metrics_base.nit @@ -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 diff --git a/src/rapid_type_analysis.nit b/src/rapid_type_analysis.nit index 32b13e3..b4cf4ab 100644 --- a/src/rapid_type_analysis.nit +++ b/src/rapid_type_analysis.nit @@ -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