Esempio n. 1
0
        public static string ToHtml(IPrintable printable)
        {
            Dictionary <string, IPrintable> map = printable.GetItems();
            string name = SecurityElement.Escape(printable.ToString());

            if (map == null || map.Count == 0)
            {
                return(name);
            }
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("<div>");
            //if (printable is ReflectionPrintable) sb.AppendFormat("<b>{0}</b><br />\n", name);
            foreach (var item in map)
            {
                string key      = SecurityElement.Escape(item.Key);
                string itemHtml = ToHtml(item.Value);
                if (!(item.Value is LeafPrintable))
                {
                    itemHtml = "\n" + string.Join("\n", itemHtml.Split('\n').Select(x => "  " + x));
                    sb.AppendFormat("<i>{0}</i>: <a href='#' onclick='toggle(this); return false;'>{1}</a>\n", key, SecurityElement.Escape(item.Value.ToString()));
                    sb.AppendFormat("<div class='hidden'>{0}</div>\n", itemHtml);
                }
                else
                {
                    sb.AppendFormat("<i>{0}</i>: {1}<br/>\n", key, itemHtml);
                }
            }
            sb.AppendLine("</div>");

            return(sb.ToString());
        }