/// <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);
        }
示例#2
0
 /// <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());
 }
示例#3
0
        /// <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();
            }
        }
示例#4
0
 /// <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>));
 }
示例#5
0
 /// <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());
 }
示例#6
0
 /// <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))
 {
 }
示例#7
0
 /// <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;
 }
示例#8
0
 /// <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))
 {
 }
示例#9
0
 /// <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))
 {
 }
示例#10
0
 /// <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;
 }
示例#11
0
 /// <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))
 {
 }