mirror of https://github.com/ogoun/Zero.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.5 KiB
64 lines
2.5 KiB
using DOM.DSL.Contracts;
|
|
using System;
|
|
using System.Linq;
|
|
using ZeroLevel.Services.PlainTextTables;
|
|
|
|
namespace DOM.DSL.Services
|
|
{
|
|
internal static class SpecialTableBuilderFactory
|
|
{
|
|
public static ISpecialTableBuilder CreateSpecialTableBuilder(string command)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(command)) return null;
|
|
ISpecialTableBuilder result = null;
|
|
var args = command.Split(',').Select(s => s.Trim()).ToArray();
|
|
switch (args[0])
|
|
{
|
|
case "plaintext":
|
|
// (Borders, 1-0-1-0, 0, 96)
|
|
var options = new TextTableRenderOptions();
|
|
if (args.Length > 1) // Style
|
|
{
|
|
if (Enum.TryParse(args[1], out options.Style) == false)
|
|
options.Style = TextTableStyle.Borders;
|
|
}
|
|
if (args.Length > 2) // Paddings
|
|
{
|
|
var paddings = args[2].Split(' ');
|
|
int buffer;
|
|
for (int i = 0; i < paddings.Length; i++)
|
|
{
|
|
if (true == int.TryParse(paddings[i].Trim(), out buffer))
|
|
{
|
|
switch (i)
|
|
{
|
|
case 0: options.PaddingLeft = buffer; break;
|
|
case 1: options.PaddingTop = buffer; break;
|
|
case 2: options.PaddingRight = buffer; break;
|
|
case 3: options.PaddingBottom = buffer; break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (args.Length > 3) // Cell width
|
|
{
|
|
int buffer;
|
|
if (true == int.TryParse(args[3].Trim(), out buffer))
|
|
{
|
|
options.MaxCellWidth = buffer;
|
|
}
|
|
}
|
|
if (args.Length > 4) // Table width
|
|
{
|
|
int buffer;
|
|
if (true == int.TryParse(args[4].Trim(), out buffer))
|
|
{
|
|
options.MaxTableWidth = buffer;
|
|
}
|
|
}
|
|
return new PlainTextTableBuilder(options);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
} |