diff --git a/ICD.Common.Utils/Csv/CsvWriter.cs b/ICD.Common.Utils/Csv/CsvWriter.cs
index d07429c..1a79e00 100644
--- a/ICD.Common.Utils/Csv/CsvWriter.cs
+++ b/ICD.Common.Utils/Csv/CsvWriter.cs
@@ -11,33 +11,81 @@ namespace ICD.Common.Utils.Csv
private const string DOUBLE_QUOTE_MARK = "\"\"";
private readonly IcdTextWriter m_Writer;
-
- private readonly string m_Seperator;
- private readonly string m_LineTerminator;
- private readonly bool m_AlwaysEscape;
-
+ private readonly CsvWriterSettings m_Settings;
private bool m_NewLine;
+ #region Properties
+
+ private string Separator { get { return m_Settings.InsertSpaceAfterComma ? ", " : ","; } }
+
+ private string LineTerminator { get { return m_Settings.NewLineSequence; } }
+
+ #endregion
+
+ #region Constructors
+
///
/// Constructor.
///
- public CsvWriter(IcdTextWriter writer, bool spaceAfterComma, bool alwaysEscape, string newline, params string[] header)
+ public CsvWriter([NotNull] IcdTextWriter writer, [NotNull] CsvWriterSettings settings, [NotNull] params string[] header)
{
+ if (writer == null)
+ throw new ArgumentNullException("writer");
+
+ if (settings == null)
+ throw new ArgumentNullException("settings");
+
+ if (header == null)
+ throw new ArgumentNullException("header");
+
m_NewLine = true;
m_Writer = writer;
- m_Seperator = spaceAfterComma ? ", " : ",";
- m_AlwaysEscape = alwaysEscape;
- m_LineTerminator = newline;
+ m_Settings = settings;
- if(header.Any())
+ if (header.Any())
AppendRow(header);
}
+ ///
+ /// Deconstructor.
+ ///
~CsvWriter()
{
Dispose();
}
+ ///
+ /// Instantiates a new CsvWriter with the properties given in the CsvWriterSettings.
+ ///
+ ///
+ ///
+ ///
+ ///
+ [PublicAPI]
+ public static CsvWriter Create([NotNull] IcdTextWriter writer, [NotNull] CsvWriterSettings settings,
+ [NotNull] params string[] header)
+ {
+ if (writer == null)
+ throw new ArgumentNullException("writer");
+
+ if (settings == null)
+ throw new ArgumentNullException("settings");
+
+ if (header == null)
+ throw new ArgumentNullException("header");
+
+ return new CsvWriter(writer, settings, header);
+ }
+
+ #endregion
+
+ public void Dispose()
+ {
+ m_Writer.Dispose();
+ }
+
+ #region Methods
+
///
/// Calls ToString() for each item and adds the row to the builder.
///
@@ -82,9 +130,9 @@ namespace ICD.Common.Utils.Csv
value = value ?? string.Empty;
if (!m_NewLine)
- m_Writer.WrappedTextWriter.Write(m_Seperator);
+ m_Writer.WrappedTextWriter.Write(Separator);
- if (m_AlwaysEscape || value.Contains(","))
+ if (m_Settings.AlwaysEscapeEveryValue || value.Contains(","))
{
value = value.Replace(QUOTATION_MARK, DOUBLE_QUOTE_MARK);
@@ -107,31 +155,11 @@ namespace ICD.Common.Utils.Csv
[PublicAPI]
public void AppendNewline()
{
- m_Writer.WrappedTextWriter.Write(m_LineTerminator);
+ m_Writer.WrappedTextWriter.Write(LineTerminator);
m_NewLine = true;
}
- public void Dispose()
- {
- m_Writer.Dispose();
- }
-
- ///
- /// Instantiates a new CsvWriter with the properties given in the CsvWriterSettings.
- ///
- ///
- ///
- ///
- ///
- [PublicAPI]
- public static CsvWriter Create(IcdTextWriter writer, CsvWriterSettings settings, params string[] header)
- {
- return new CsvWriter(writer,
- settings.InsertSpaceAfterComma,
- settings.AlwaysEscapeEveryValue,
- settings.NewLineSequence,
- header);
- }
+ #endregion
}
-}
\ No newline at end of file
+}