/// <summary> /// Parses a CSV text line and returns back again the complete line as CSV string. /// </summary> /// <param name="csvLineReader">The <see cref="CsvLineParser"/></param> /// <param name="line">A CSV formated text line</param> /// <returns> /// The complete row as CSV string if values are available; otherwise null. /// </returns> public static string Validate(this CsvLineParser csvLineReader, string line) { var csvLineBuilder = new CsvLineBuilder() { Configuration = csvLineReader.Configuration }; return((csvLineReader.Read(line, (i, s) => { csvLineBuilder.Append(s); }) > 0) ? csvLineBuilder.ToString() : null); }
/// <summary> /// Converts a list of string values to a CSV text line /// </summary> /// <param name="csvLineWriter">The <see cref="CsvLineBuilder"/></param> /// <param name="values">List of string values</param> /// <returns> /// A CSV formated text line /// </returns> public static string Write(this CsvLineBuilder csvLineWriter, IEnumerable <string> values) { if (values == null) { throw new ArgumentNullException(nameof(values)); } csvLineWriter.Clear(); foreach (string value in values) { csvLineWriter.Append(value); } return(csvLineWriter.ToString()); }
/// <summary> /// Reads all csv records out of the stream and gives back an enumerator of newly encoded csv strings. /// This method can be used as a line by line syntax checker. /// </summary> /// <param name="csvReader">The <see cref="CsvReader"/></param> /// <returns> /// An async enumerator of newly encoded csv strings /// </returns> public static async IAsyncEnumerable <string> ReadAllLinesAsync(this CsvReader csvReader) { var csvLineBuilder = new CsvLineBuilder() { Configuration = csvReader.Configuration }; while (await csvReader.ReadLineAsync((i, s) => { csvLineBuilder.Append(s); }) > 0) { yield return(csvLineBuilder.ToString()); csvLineBuilder.Clear(); } }
/// <summary> /// Converts a list of string values to a CSV text line /// </summary> /// <param name="csvLineWriter">The <see cref="CsvLineBuilder"/></param> /// <param name="values">List of string values</param> /// <returns> /// A CSV formated text line /// </returns> public static string Write(this CsvLineBuilder csvLineWriter, params string[] values) { return(csvLineWriter.Write(values as IEnumerable <string>)); }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> /// <param name="csvConverterResolver">Your own implementation of a value converter resolver</param> /// <param name="csvHeaders">List of csv headers</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder, ICsvConverterResolver csvConverterResolver, CsvHeaders csvHeaders) : base(csvHeaders, csvConverterResolver) { _csvLineBuilder = csvLineBuilder; Array.Resize(ref _csvValues, csvHeaders.Count()); }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> /// <param name="csvConverterResolver">Your own implementation of a value converter resolver</param> /// <param name="csvHeaders">List of csv headers</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder, ICsvConverterResolver csvConverterResolver, params string[] csvHeaders) : this(csvLineBuilder, csvConverterResolver, new CsvHeaders(csvHeaders)) { }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> /// <param name="csvConverterResolver">Your own implementation of a value converter resolver</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder, ICsvConverterResolver csvConverterResolver) : base(csvConverterResolver) { _csvLineBuilder = csvLineBuilder; }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> /// <param name="csvHeaders">List of csv headers</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder, IList <string> csvHeaders) : this(csvLineBuilder, new CsvHeaders(csvHeaders)) { }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> /// <param name="csvHeaders">List of csv headers</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder, params string[] csvHeaders) : this(csvLineBuilder, new CsvHeaders(csvHeaders)) { }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder) : base() { _csvLineBuilder = csvLineBuilder; }
/// <summary> /// Initializes a new instance of the <see cref="CsvLineTableWriter"/> class. /// </summary> /// <param name="csvLineBuilder">The <see cref="CsvLineBuilder"/> as string generator</param> /// <param name="csvConverterResolver">Your own implementation of a value converter resolver</param> /// <param name="csvHeaders">List of csv headers</param> public CsvLineTableWriter(CsvLineBuilder csvLineBuilder, ICsvConverterResolver csvConverterResolver, IList <string> csvHeaders) : this(csvLineBuilder, csvConverterResolver, new CsvHeaders(csvHeaders)) { }