("language");
if (string.IsNullOrEmpty(language) || language?.ToLower() == "auto")
{
html.Append($"");
html.Append($"{scopeBody.Replace("\r\n", "\n").Replace("\n", SoftBreak)}");
}
else
{
html.Append($"");
html.Append($"{scopeBody.Replace("\r\n", "\n").Replace("\n", SoftBreak)}");
}
return new HandlerResult(html.ToString())
{
Instructions = [HandlerResultInstruction.DisallowNestedProcessing]
};
}
case "stripedtable":
case "table":
{
var html = new StringBuilder();
var hasBorder = function.Parameters.Get("hasBorder");
var isFirstRowHeader = function.Parameters.Get("isFirstRowHeader");
html.Append($"");
var lines = scopeBody.Split(['\n'], StringSplitOptions.RemoveEmptyEntries).Select(o => o.Trim())
.Where(o => o.Length > 0);
int rowNumber = 0;
foreach (var lineText in lines)
{
var columns = lineText.Split("||");
if (rowNumber == 0 && isFirstRowHeader)
{
html.Append($"");
}
else if (rowNumber == 1 && isFirstRowHeader || rowNumber == 0 && isFirstRowHeader == false)
{
html.Append($"");
}
html.Append($"");
foreach (var columnText in columns)
{
if (rowNumber == 0 && isFirstRowHeader)
{
html.Append($"| {columnText} | ");
}
else
{
html.Append($"{columnText} | ");
}
}
if (rowNumber == 0 && isFirstRowHeader)
{
html.Append($"");
}
html.Append($"
");
rowNumber++;
}
html.Append($"");
html.Append($"
");
return new HandlerResult(html.ToString());
}
case "bullets":
{
var html = new StringBuilder();
var type = function.Parameters.Get("type");
if (type == "unordered")
{
var lines = scopeBody.Split(['\n'], StringSplitOptions.RemoveEmptyEntries).Select(o => o.Trim())
.Where(o => o.Length > 0);
int currentLevel = 0;
foreach (var line in lines)
{
var newIndent = 0;
for (; newIndent < line.Length && line[newIndent] == '>'; newIndent++)
{
//计算行开头有多少个“>”.
}
newIndent++;
if (newIndent < currentLevel)
{
for (; currentLevel != newIndent; currentLevel--)
{
html.Append($"");
}
}
else if (newIndent > currentLevel)
{
for (; currentLevel != newIndent; currentLevel++)
{
html.Append($"");
}
}
html.Append($"- {line.Trim(['>'])}
");
}
for (; currentLevel > 0; currentLevel--)
{
html.Append($"
");
}
}
else if (type == "ordered")
{
var lines = scopeBody.Split(['\n'], StringSplitOptions.RemoveEmptyEntries).Select(o => o.Trim())
.Where(o => o.Length > 0);
var currentLevel = 0;
foreach (var line in lines)
{
var newIndent = 0;
for (; newIndent < line.Length && line[newIndent] == '>'; newIndent++)
{
//计算行开头有多少个“>”.
}
newIndent++;
if (newIndent < currentLevel)
{
for (; currentLevel != newIndent; currentLevel--)
{
html.Append($"");
}
}
else if (newIndent > currentLevel)
{
for (; currentLevel != newIndent; currentLevel++)
{
html.Append($"");
}
}
html.Append($"- {line.Trim(['>'])}
");
}
for (; currentLevel > 0; currentLevel--)
{
html.Append($"
");
}
}
return new HandlerResult(html.ToString());
}
case "definesnippet":
{
var html = new StringBuilder();
var name = function.Parameters.Get("name");
if (!state.Snippets.TryAdd(name, scopeBody))
{
state.Snippets[name] = scopeBody;
}
return new HandlerResult(html.ToString());
}
case "alert":
{
var html = new StringBuilder();
var titleText = function.Parameters.Get("titleText");
var style = function.Parameters.Get("styleName").ToLower();
style = style == "default" ? "" : $"alert-{style}";
if (!string.IsNullOrEmpty(titleText)) scopeBody = $"{titleText}
{scopeBody}";
html.Append($"{scopeBody}
");
return new HandlerResult(html.ToString());
}
case "order":
{
var html = new StringBuilder();
var direction = function.Parameters.Get("direction");
var lines = scopeBody.Split("\n").Select(o => o.Trim()).ToList();
html.Append(direction == "ascending"
? string.Join("\r\n", lines.OrderBy(o => o))
: string.Join("\r\n", lines.OrderByDescending(o => o)));
return new HandlerResult(html.ToString());
}
case "jumbotron":
{
var html = new StringBuilder();
var titleText = function.Parameters.Get("titleText", "");
html.Append($"");
if (!string.IsNullOrEmpty(titleText)) html.Append($"
{titleText}
");
html.Append($"
{scopeBody}
");
html.Append($"
");
return new HandlerResult(html.ToString());
}
case "foreground":
{
var html = new StringBuilder();
var style = BGFGStyle.GetForegroundStyle(function.Parameters.Get("styleName", "default")).Swap();
html.Append($"{scopeBody}
");
return new HandlerResult(html.ToString());
}
case "background":
{
var html = new StringBuilder();
var style = BGFGStyle.GetBackgroundStyle(function.Parameters.Get("styleName", "default"));
html.Append(
$"{scopeBody}
");
return new HandlerResult(html.ToString());
}
case "collapse":
{
var html = new StringBuilder();
var linkText = function.Parameters.Get("linktext");
var uid = "A" + Guid.NewGuid().ToString().Replace("-", "");
html.Append(
$"{linkText}");
html.Append($"");
return new HandlerResult(html.ToString());
}
case "callout":
{
var html = new StringBuilder();
string titleText = function.Parameters.Get("titleText");
string style = function.Parameters.Get("styleName").ToLower();
style = style == "default" ? "" : style;
html.Append($"");
if (string.IsNullOrWhiteSpace(titleText) == false) html.Append($"
{titleText}
");
html.Append($"{scopeBody}");
html.Append($"");
return new HandlerResult(html.ToString());
}
case "card":
{
var html = new StringBuilder();
var titleText = function.Parameters.Get("titleText");
var style = BGFGStyle.GetBackgroundStyle(function.Parameters.Get("styleName", "default"));
html.Append($"");
if (string.IsNullOrEmpty(titleText) == false)
html.Append($"");
html.Append("
");
html.Append($"
{scopeBody}
");
html.Append("
");
html.Append("
");
return new HandlerResult(html.ToString());
}
}
return new HandlerResult() { Instructions = [HandlerResultInstruction.Skip] };
}
}
}