forked from zzzprojects/System.Linq.Dynamic.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHtmlHelpers.cs
More file actions
130 lines (97 loc) · 3.52 KB
/
HtmlHelpers.cs
File metadata and controls
130 lines (97 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Mvc;
using MarkdownSharp;
namespace DynamicLinqWebDocs.Infrastructure
{
public static class HtmlHelpers
{
public static HtmlString FormatMarkdown(this HtmlHelper helper, string value)
{
return FormatMarkdown(value);
}
public static HtmlString FormatMarkdown(this HtmlHelper helper, string format, params object[] args)
{
return FormatMarkdown(String.Format(format, args));
}
public static HtmlString FormatCodeBlock(this HtmlHelper helper, string value)
{
var pre = new TagBuilder("pre");
pre.AddCssClass("sunlight-highlight-csharp");
pre.SetInnerText(value);
return new HtmlString(pre.ToString());
}
static HtmlString FormatMarkdown(string value)
{
if (String.IsNullOrWhiteSpace(value)) return null;
var md = new Markdown();
//if (convertToCode) value = ConvertToCode(value);
var result = md.Transform(value);
return new HtmlString(result);
}
public static HtmlString InlineCodeList(this HtmlHelper helper, params string[] items)
{
var ul = new TagBuilder("ul");
ul.AddCssClass("list-inline");
var sb = new StringBuilder();
foreach(var item in items)
{
sb.AppendFormat("<li><code>{0}</code></li>", item);
}
ul.InnerHtml = sb.ToString();
return new HtmlString(ul.ToString());
}
public static IDisposable BeginNote(this HtmlHelper helper)
{
return new HtmlBootstrapNote(helper.ViewContext);
}
class HtmlBootstrapNote : IDisposable
{
readonly TextWriter _writer;
public HtmlBootstrapNote(ViewContext context)
{
_writer = context.Writer;
_writer.WriteLine("<div class=\"panel panel-default\"><div class=\"panel-heading\">Note</div><div class=\"panel-body\">");
}
public void Dispose()
{
_writer.WriteLine("</div></div>");
}
}
public static HtmlString IsActive(this HtmlHelper html, string url)
{
return IsActive(html, url, false);
}
public static HtmlString IsActive(this HtmlHelper html, string url, bool startsWith)
{
var request = html.ViewContext.RequestContext.HttpContext.Request.Url;
bool isActive;
if (startsWith)
{
isActive = request.AbsolutePath.StartsWith(url, StringComparison.InvariantCultureIgnoreCase);
}
else
{
isActive = request.AbsolutePath.Equals(url, StringComparison.InvariantCultureIgnoreCase);
}
return isActive ? new HtmlString("active") : null;
}
//static string ConvertToCode(string value)
//{
// var sb = new StringBuilder();
// if (value.Length > 0) sb.Append(" ");
// for( int i = 0; i < value.Length; i++)
// {
// sb.Append(value[i]);
// //only add space if we're not at the end
// if (value[i] == '\n' && i != value.Length - 1)
// {
// sb.Append(" ");
// }
// }
// return sb.ToString();
//}
}
}