From fece3f556d8113f56181b35d655ed1acc65b113f Mon Sep 17 00:00:00 2001
From: Matthias Diener <mdiener@illinois.edu>
Date: Fri, 28 Aug 2020 13:58:39 -0500
Subject: [PATCH] change lineterminator

---
 pytools/__init__.py | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/pytools/__init__.py b/pytools/__init__.py
index 7ccb04a..44b3752 100644
--- a/pytools/__init__.py
+++ b/pytools/__init__.py
@@ -1561,16 +1561,31 @@ class Table:
 
         return "\n".join(lines)
 
-    def csv(self):
-        """Returns a string containing a CSV representation of the table."""
+    def csv(self, dialect='excel', **fmtparams):
+        """Returns a string containing a CSV representation of the table.
+
+        .. doctest ::
+
+            >>> tbl = Table()
+            >>> tbl.add_row([1, ","])
+            >>> tbl.add_row([10, 20])
+            >>> print(tbl.csv())
+            1,","
+            10,20
+        """
+
         import csv
         import io
 
+        # Default is '\r\n'
+        if not 'lineterminator' in fmtparams:
+            fmtparams['lineterminator'] = '\n'
+
         output = io.StringIO()
-        writer = csv.writer(output)
+        writer = csv.writer(output, dialect, **fmtparams)
         writer.writerows(self.rows)
 
-        return output.getvalue().rstrip('\n')
+        return output.getvalue().rstrip(fmtparams['lineterminator'])
 
     def latex(self, skip_lines=0, hline_after=None):
         if hline_after is None:
-- 
GitLab