mirror of
https://github.com/4sval/FModel.git
synced 2026-04-02 07:05:13 -05:00
55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
using System.Reflection;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Xml;
|
|
using ICSharpCode.AvalonEdit.Highlighting;
|
|
using ICSharpCode.AvalonEdit.Highlighting.Xshd;
|
|
|
|
namespace FModel.Extensions;
|
|
|
|
public static class AvalonExtensions
|
|
{
|
|
private static readonly IHighlightingDefinition _jsonHighlighter = LoadHighlighter("Json.xshd");
|
|
private static readonly IHighlightingDefinition _iniHighlighter = LoadHighlighter("Ini.xshd");
|
|
private static readonly IHighlightingDefinition _xmlHighlighter = LoadHighlighter("Xml.xshd");
|
|
private static readonly IHighlightingDefinition _cppHighlighter = LoadHighlighter("Cpp.xshd");
|
|
private static readonly IHighlightingDefinition _changelogHighlighter = LoadHighlighter("Changelog.xshd");
|
|
private static readonly IHighlightingDefinition _verseHighlighter = LoadHighlighter("Verse.xshd");
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
private static IHighlightingDefinition LoadHighlighter(string resourceName)
|
|
{
|
|
var executingAssembly = Assembly.GetExecutingAssembly();
|
|
using var stream = executingAssembly.GetManifestResourceStream($"{executingAssembly.GetName().Name}.Resources.{resourceName}");
|
|
using var reader = new XmlTextReader(stream);
|
|
return HighlightingLoader.Load(reader, HighlightingManager.Instance);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static IHighlightingDefinition HighlighterSelector(string ext)
|
|
{
|
|
switch (ext)
|
|
{
|
|
case "ini":
|
|
case "csv":
|
|
return _iniHighlighter;
|
|
case "xml":
|
|
case "tps":
|
|
return _xmlHighlighter;
|
|
case "h":
|
|
case "cpp":
|
|
return _cppHighlighter;
|
|
case "changelog":
|
|
return _changelogHighlighter;
|
|
case "verse":
|
|
return _verseHighlighter;
|
|
case "bat":
|
|
case "txt":
|
|
case "pem":
|
|
case "po":
|
|
return null;
|
|
default:
|
|
return _jsonHighlighter;
|
|
}
|
|
}
|
|
}
|