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
}