示例#1
0
        //public static DataColumn GetDataColumn(this DataTable table, String needle)
        //{
        //    foreach (DataColumn dc in table.Columns)
        //    {
        //      //  dc.Caption
        //    }

        //}


        /// <summary>
        /// Sets the column width according to markdown rendering
        /// </summary>
        /// <param name="dt">The dt.</param>
        /// <param name="rowCheckLimit">The row check limit.</param>
        /// <param name="cellMargin">Extra characters to add on content right</param>
        /// <returns></returns>
        public static DataTable setColumnWidths(this DataTable dt, Int32 rowCheckLimit = 100, Int32 cellMargin = 2)
        {
            Int32 prittyIndex = 0;

            foreach (DataRow dr in dt.Rows)
            {
                prittyIndex++;
                foreach (DataColumn dc in dt.Columns)
                {
                    dataValueFormatInfo dcf = new dataValueFormatInfo(dc);

                    String content = dc.markdownFieldForColumn(dr, dcf.directAppend, dcf);
                    dc.SetWidth(Math.Max(dc.GetWidth(), content.Length + cellMargin));
                }
                if (prittyIndex > rowCheckLimit)
                {
                    break;
                }
            }
            return(dt);
        }
示例#2
0
        /// <summary>
        /// DataTable to markdown convertor
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static string markdownTable(this DataTable table, Boolean prittyOutput = true)
        {
            String output      = "";
            String underline   = "|";
            String headingline = "|";
            String dcCaption   = "";

            List <DataColumn> skipEscape = new List <DataColumn>();

            dataValueFormatDictionary dcfs = new dataValueFormatDictionary();

            String sep = "|";

            foreach (DataColumn dc in table.Columns)
            {
                dcCaption = dc.GetHeading();
                if (dcCaption.StartsWith("_"))
                {
                    skipEscape.Add(dc);
                    dcCaption  = dcCaption.TrimStart('_');
                    dc.Caption = dcCaption;
                }

                dataValueFormatInfo dcf = new dataValueFormatInfo(dc);
                if (dcf.directAppend)
                {
                    skipEscape.Add(dc);
                }
                dcfs.Add(dc.ColumnName, dcf);

                Tuple <String, String> adds = getTableColumnHead(dcf.position, dcCaption);

                headingline = headingline + adds.Item1;
                underline   = underline + adds.Item2;
            }

            if (prittyOutput)
            {
                table = table.Copy();
                table.setColumnWidths(100);
            }

            underline   = underline + "|";
            headingline = headingline + "|";

            output = output + headingline.Replace("||", "|") + Environment.NewLine;
            output = output + underline.Replace("||", "|") + Environment.NewLine;

            //output = output + Environment.NewLine;

            foreach (DataRow dr in table.Rows)
            {
                String rowline = "|";
                foreach (DataColumn dc in table.Columns)
                {
                    String content = dc.markdownFieldForColumn(dr, skipEscape.Contains(dc), dcfs[dc.ColumnName]);
                    content = content.Replace(Environment.NewLine, "");

                    rowline = rowline.add(content, "|"); // imbSciStringExtensions.add(rowline, content, "|");
                }
                rowline = rowline + "|" + Environment.NewLine;
                output  = output + rowline;
            }

            if (table.ExtraLinesCount() > 0)
            {
                output += Environment.NewLine;
                var lines = table.GetExtraDesc();
                foreach (String ln in lines)
                {
                    output = output + "> " + ln + Environment.NewLine;
                }
                output += Environment.NewLine;
            }

            return(output);
        }
示例#3
0
        public static String markdownFieldForColumn(this DataColumn dc, DataRow dr, Boolean skipEscape, dataValueFormatInfo dcf)
        {
            String content = "";
            Object value   = dr[dc];

            content = value.toStringSafe("  ", dcf.valueFormat);

            if (value is Int32)
            {
                if ((((Int32)value) == Int32.MaxValue) || (((Int32)value) == Int32.MinValue))
                {
                    content = "-";
                }
            }

            if (!skipEscape)
            {
                content = content.markdownEscape();
            }

            // filter out table crushers
            content = content.Replace("|", " : ");
            content = content.Replace(Environment.NewLine, "");

            switch (dcf.importance)
            {
            case dataPointImportance.important:
                content = "**" + content + "**";
                break;

            case dataPointImportance.alarm:
                content = "`**" + content + "**`";
                break;

            case dataPointImportance.normal:

                break;
            }

            //if (dc.GetEncodeMode() != toDosCharactersMode.none)
            //{
            //    content = content.toDosCharacters(dc.GetEncodeMode());
            //}

            Int32 columnWidth = dc.GetWidth();

            if (columnWidth > 0)
            {
                if (content.Length < columnWidth)
                {
                    content = content.PadRight(columnWidth);
                }
            }

            String wrapTag = dc.GetWrapTag();

            if (!wrapTag.isNullOrEmpty())
            {
                content = "<span>" + content + "</span>";
            }

            // content = content.add(content, "|");

            return(content);
        }