Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,20 @@ protected override void Write(HtmlRenderer renderer, CodeBlock obj) {
}

private string ApplySyntaxHighlighting(string languageMoniker, string firstLine, string code) {
return ApplySyntaxHighlighting(languageMoniker, firstLine, code, true);
}

private string ApplySyntaxHighlighting(string languageMoniker, string firstLine, string code, bool useDefault)
{
var languageTypeAdapter = new LanguageTypeAdapter();
var language = languageTypeAdapter.Parse(languageMoniker, firstLine);

if (language == null) { //handle unrecognised language formats, e.g. when using mermaid diagrams
return code;
if (language == null)
{ //handle unrecognised language formats, e.g. when using mermaid diagrams
if (useDefault)
language = FakeIt();
else
return code;
}

var codeBuilder = new StringBuilder();
Expand All @@ -67,6 +76,41 @@ private string ApplySyntaxHighlighting(string languageMoniker, string firstLine,
return codeBuilder.ToString();
}

private ColorCode.ILanguage FakeIt()
{
return new fakeLan();
}

class fakeLan : ColorCode.ILanguage
{
public string Id => "default";
public string FirstLinePattern => "^.*$";
public string Name => "default";
public IList<LanguageRule> Rules
{
get
{
return new List<LanguageRule> {
new LanguageRule(".?", new Dictionary<int, string>{ {0,null } })
};
}
}
public string CssClassName => "default";
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "text":
case "txt":
case "csv":
return true;

default:
return false;
}
}
}

private static string GetCode(LeafBlock obj, out string firstLine) {
var code = new StringBuilder();
firstLine = null;
Expand Down