This repository has been archived on 2024-06-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
thesis-src/ReportGeneration/ReportGeneration.Abstract/TableGeneratorBase.cs
T
Simon Gruber b17044f959 Cleanup
2024-01-08 16:21:10 +01:00

71 lines
1.6 KiB
C#

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