diff --git a/DiscordChatExporter.Domain/DiscordChatExporter.Domain.csproj b/DiscordChatExporter.Domain/DiscordChatExporter.Domain.csproj index 4c9f7c79..a8424497 100644 --- a/DiscordChatExporter.Domain/DiscordChatExporter.Domain.csproj +++ b/DiscordChatExporter.Domain/DiscordChatExporter.Domain.csproj @@ -1,8 +1,12 @@ + + true + + - + @@ -11,9 +15,9 @@ - - - + + + \ No newline at end of file diff --git a/DiscordChatExporter.Domain/Exporting/Writers/Html/MessageGroupTemplate.cshtml b/DiscordChatExporter.Domain/Exporting/Writers/Html/MessageGroupTemplate.cshtml index 936e60ac..1946d0db 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/Html/MessageGroupTemplate.cshtml +++ b/DiscordChatExporter.Domain/Exporting/Writers/Html/MessageGroupTemplate.cshtml @@ -1,7 +1,8 @@ @using System @using System.Linq @using System.Threading.Tasks -@inherits MiniRazor.MiniRazorTemplateBase +@namespace DiscordChatExporter.Domain.Exporting.Writers.Html +@inherits MiniRazor.TemplateBase @{ string FormatDate(DateTimeOffset date) => Model.ExportContext.FormatDate(date); diff --git a/DiscordChatExporter.Domain/Exporting/Writers/Html/PostambleTemplate.cshtml b/DiscordChatExporter.Domain/Exporting/Writers/Html/PostambleTemplate.cshtml index 33e3e757..d8fd4531 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/Html/PostambleTemplate.cshtml +++ b/DiscordChatExporter.Domain/Exporting/Writers/Html/PostambleTemplate.cshtml @@ -1,4 +1,5 @@ -@inherits MiniRazor.MiniRazorTemplateBase +@namespace DiscordChatExporter.Domain.Exporting.Writers.Html +@inherits MiniRazor.TemplateBase @@ -7,4 +8,5 @@ + \ No newline at end of file diff --git a/DiscordChatExporter.Domain/Exporting/Writers/Html/PreambleTemplate.cshtml b/DiscordChatExporter.Domain/Exporting/Writers/Html/PreambleTemplate.cshtml index b086c9ab..e00d5b79 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/Html/PreambleTemplate.cshtml +++ b/DiscordChatExporter.Domain/Exporting/Writers/Html/PreambleTemplate.cshtml @@ -1,7 +1,8 @@ @using System @using System.Threading.Tasks @using Tyrrrz.Extensions -@inherits MiniRazor.MiniRazorTemplateBase +@namespace DiscordChatExporter.Domain.Exporting.Writers.Html +@inherits MiniRazor.TemplateBase @{ string FormatDate(DateTimeOffset date) => Model.ExportContext.FormatDate(date); diff --git a/DiscordChatExporter.Domain/Exporting/Writers/Html/TemplateBundle.cs b/DiscordChatExporter.Domain/Exporting/Writers/Html/TemplateBundle.cs deleted file mode 100644 index e08989f8..00000000 --- a/DiscordChatExporter.Domain/Exporting/Writers/Html/TemplateBundle.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System.Runtime.CompilerServices; -using System.Threading.Tasks; -using MiniRazor; -using Tyrrrz.Extensions; - -[assembly: InternalsVisibleTo(DiscordChatExporter.Domain.Exporting.Writers.Html.TemplateBundle.PreambleTemplateAssemblyName)] -[assembly: InternalsVisibleTo(DiscordChatExporter.Domain.Exporting.Writers.Html.TemplateBundle.MessageGroupTemplateAssemblyName)] -[assembly: InternalsVisibleTo(DiscordChatExporter.Domain.Exporting.Writers.Html.TemplateBundle.PostambleTemplateAssemblyName)] - -namespace DiscordChatExporter.Domain.Exporting.Writers.Html -{ - internal partial class TemplateBundle - { - public const string PreambleTemplateAssemblyName = "RazorAssembly_Preamble"; - public const string MessageGroupTemplateAssemblyName = "RazorAssembly_MessageGroup"; - public const string PostambleTemplateAssemblyName = "RazorAssembly_Postamble"; - - public MiniRazorTemplateDescriptor PreambleTemplate { get; } - - public MiniRazorTemplateDescriptor MessageGroupTemplate { get; } - - public MiniRazorTemplateDescriptor PostambleTemplate { get; } - - public TemplateBundle( - MiniRazorTemplateDescriptor preambleTemplate, - MiniRazorTemplateDescriptor messageGroupTemplate, - MiniRazorTemplateDescriptor postambleTemplate) - { - PreambleTemplate = preambleTemplate; - MessageGroupTemplate = messageGroupTemplate; - PostambleTemplate = postambleTemplate; - } - } - - internal partial class TemplateBundle - { - private static TemplateBundle? _lastBundle; - - // This is very CPU-heavy - private static async ValueTask CompileAsync() => await Task.Run(() => - { - var ns = typeof(TemplateBundle).Namespace!; - - var preambleTemplateSource = typeof(HtmlMessageWriter).Assembly - .GetManifestResourceString($"{ns}.PreambleTemplate.cshtml"); - - var messageGroupTemplateSource = typeof(HtmlMessageWriter).Assembly - .GetManifestResourceString($"{ns}.MessageGroupTemplate.cshtml"); - - var postambleTemplateSource = typeof(HtmlMessageWriter).Assembly - .GetManifestResourceString($"{ns}.PostambleTemplate.cshtml"); - - var engine = new MiniRazorTemplateEngine(); - - var preambleTemplate = engine.Compile(preambleTemplateSource, PreambleTemplateAssemblyName, ns); - var messageGroupTemplate = engine.Compile(messageGroupTemplateSource, MessageGroupTemplateAssemblyName, ns); - var postambleTemplate = engine.Compile(postambleTemplateSource, PostambleTemplateAssemblyName, ns); - - return new TemplateBundle(preambleTemplate, messageGroupTemplate, postambleTemplate); - }); - - public static async ValueTask ResolveAsync() => - _lastBundle ??= await CompileAsync(); - } -} \ No newline at end of file diff --git a/DiscordChatExporter.Domain/Exporting/Writers/HtmlMessageWriter.cs b/DiscordChatExporter.Domain/Exporting/Writers/HtmlMessageWriter.cs index 4cc05f9a..8c78f9b2 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/HtmlMessageWriter.cs +++ b/DiscordChatExporter.Domain/Exporting/Writers/HtmlMessageWriter.cs @@ -26,20 +26,18 @@ namespace DiscordChatExporter.Domain.Exporting.Writers public override async ValueTask WritePreambleAsync() { var templateContext = new LayoutTemplateContext(Context, _themeName, _messageCount); - var templateBundle = await TemplateBundle.ResolveAsync(); await _writer.WriteLineAsync( - await templateBundle.PreambleTemplate.RenderAsync(templateContext) + await PreambleTemplate.RenderAsync(templateContext) ); } private async ValueTask WriteMessageGroupAsync(MessageGroup messageGroup) { var templateContext = new MessageGroupTemplateContext(Context, messageGroup); - var templateBundle = await TemplateBundle.ResolveAsync(); await _writer.WriteLineAsync( - await templateBundle.MessageGroupTemplate.RenderAsync(templateContext) + await MessageGroupTemplate.RenderAsync(templateContext) ); } @@ -70,10 +68,9 @@ namespace DiscordChatExporter.Domain.Exporting.Writers await WriteMessageGroupAsync(MessageGroup.Join(_messageGroupBuffer)); var templateContext = new LayoutTemplateContext(Context, _themeName, _messageCount); - var templateBundle = await TemplateBundle.ResolveAsync(); await _writer.WriteLineAsync( - await templateBundle.PostambleTemplate.RenderAsync(templateContext) + await PostambleTemplate.RenderAsync(templateContext) ); }