/// <summary>
        /// Re-Formats a Markdown table to nicely formatted output (size permitting)
        /// </summary>
        /// <param name="tableMarkdown"></param>
        /// <returns>formatted markdown, if it can't be formatted original is returned</returns>
        public string FormatMarkdownTable(string tableMarkdown)
        {
            var parser = new TableParser();
            var type   = parser.DetectTableType(tableMarkdown);

            if (type == MarkdownTableType.None)
            {
                return(null);
            }

            var tableData = ParseMarkdownToData(tableMarkdown);

            if (tableData == null)
            {
                return(tableMarkdown);
            }

            string output = null;

            switch (type)
            {
            case MarkdownTableType.Pipe:
                output = parser.ToPipeTableMarkdown(tableData);
                break;

            case MarkdownTableType.Grid:
                output = parser.ToGridTableMarkdown(tableData);
                break;

            case MarkdownTableType.Html:
                output = parser.ToTableHtml(tableData);
                break;
            }

            return(output);
        }