Exemple #1
0
		public static Highlight Get(Parser.ParserType type)
		{
			switch (type)
			{
				case Parser.ParserType.Columns: case Parser.ParserType.ExactColumns: return new HighlightColumns();
				case Parser.ParserType.CPlusPlus: return new HighlightCPlusPlus();
				case Parser.ParserType.CSharp: return new HighlightCSharp();
				case Parser.ParserType.HTML: case Parser.ParserType.XML: return new HighlightMarkup();
				case Parser.ParserType.JSON: return new HighlightJSON();
				case Parser.ParserType.SQL: return new HighlightSQL();
				default: return null;
			}
		}
		static public Result Run(Window parent, Parser.ParserType tableType)
		{
			var dialog = new ChooseTableTypeDialog(tableType) { Owner = parent };
			return dialog.ShowDialog() ? dialog.result : null;
		}
		ChooseTableTypeDialog(Parser.ParserType tableType)
		{
			InitializeComponent();
			TableType = tableType;
		}
		void Command_Content_Type(Parser.ParserType contentType) => ContentType = contentType;
Exemple #5
0
		public Table(string input, Parser.ParserType tableType = Parser.ParserType.None, bool hasHeaders = true) : this(GetInputRows(input, tableType), hasHeaders) { }
Exemple #6
0
		public string ToString(string ending, Parser.ParserType tableType = Parser.ParserType.Columns)
		{
			var result = new List<List<string>>();
			result.Add(Headers.ToList());
			result.AddRange(Rows.Select(row => row.Select(item => item.ToString()).ToList()));

			switch (tableType)
			{
				case Parser.ParserType.TSV: return string.Join("", result.Select(items => string.Join("\t", items.Select(item => ToTCSV(item, '\t'))) + ending));
				case Parser.ParserType.CSV: return string.Join("", result.Select(items => string.Join(",", items.Select(item => ToTCSV(item, ','))) + ending));
				case Parser.ParserType.Columns:
					{
						var newLineChars = new char[] { '\r', '\n' };
						result = result.Select(row => row.Select(value => value.Trim()).ToList()).ToList();
						var columnWidths = Enumerable.Range(0, Headers.Count).Select(column => result.Max(line => line[column].IndexOfAny(newLineChars) == -1 ? line[column].Length : 0)).ToList();
						return string.Join("", result.AsParallel().AsOrdered().Select(line => "║ " + string.Join(" │ ", Enumerable.Range(0, Headers.Count).Select(column => line[column] + new string(' ', Math.Max(columnWidths[column] - line[column].Length, 0)))) + " ║" + ending));
					}
				case Parser.ParserType.ExactColumns:
					{
						var newLineChars = new char[] { '\r', '\n' };
						result = result.Select(row => row.Select(value => $@"""{value.Replace(@"""", @"""""")}""").ToList()).ToList();
						var columnWidths = Enumerable.Range(0, Headers.Count).Select(column => result.Max(line => line[column].IndexOfAny(newLineChars) == -1 ? line[column].Length : 0)).ToList();
						return string.Join("", result.AsParallel().AsOrdered().Select(line => "║ " + string.Join(" │ ", Enumerable.Range(0, Headers.Count).Select(column => line[column] + new string(' ', Math.Max(columnWidths[column] - line[column].Length, 0)))) + " ║" + ending));
					}
				default: throw new ArgumentException("Invalid output type");
			}
		}
Exemple #7
0
		static List<List<string>> GetInputRows(string input, Parser.ParserType tableType)
		{
			switch (tableType)
			{
				case Parser.ParserType.TSV: return input.SplitTCSV('\t').Select(split => split.ToList()).ToList();
				case Parser.ParserType.CSV: return input.SplitTCSV(',').Select(split => split.ToList()).ToList();
				case Parser.ParserType.Columns: return SplitByDoublePipe(input).Select(line => line.Split('│').Select(item => item.Trim()).ToList()).ToList();
				case Parser.ParserType.ExactColumns: return SplitByDoublePipe(input).Select(line => line.Split('│').Select(item => TrimExactColumns(item)).ToList()).ToList();
				default: throw new ArgumentException("Invalid input type");
			}
		}