using ReportGenerator.Generator.Interface; using System.Text; namespace ReportGenerator.Generator.Abstract; public abstract class TableGeneratorBase : StreamWriterBase, ITableGenerator { /// public int Columns { get; } /// protected TableGeneratorBase(int columns) => Columns = columns; /// protected TableGeneratorBase(int columns, Stream stream) : base(stream) => Columns = columns; /// protected TableGeneratorBase(int columns, Stream stream, Encoding encoding) : base(stream, encoding) => Columns = columns; #region Header /// public virtual ITableGenerator AppendHeader(string content) => AppendHeader(Enumerable.Range(0, Columns).Select(_ => content)); /// public abstract ITableGenerator AppendHeader(IEnumerable row); /// public virtual ITableGenerator AppendHeader(IEnumerable> rows) { foreach (var row in rows) { AppendHeader(row); } return this; } #endregion #region Row /// public virtual ITableGenerator AppendRow(string content) => AppendRow(Enumerable.Range(0, Columns).Select(_ => content)); /// public abstract ITableGenerator AppendRow(IEnumerable row); /// public virtual ITableGenerator AppendRows(IEnumerable> rows) { foreach (var row in rows) { AppendRow(row); } return this; } #endregion }