Browse Source

Use Scriban on TemplateRenderer

pull/3792/head
Halil İbrahim Kalkan 6 years ago
parent
commit
24365e4979
  1. 4
      framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj
  2. 1
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateRenderer.cs
  3. 11
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateRenderer.cs
  4. 4
      framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/TemplateRenderer_Tests.cs

4
framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj

@ -14,6 +14,10 @@
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Scriban" Version="2.1.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup>

1
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateRenderer.cs

@ -8,6 +8,7 @@ namespace Volo.Abp.TextTemplating
{
Task<string> RenderAsync(
[NotNull] string templateName,
[CanBeNull] object model = null,
[CanBeNull] string cultureName = null
);
}

11
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateRenderer.cs

@ -1,5 +1,6 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
using Scriban;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.TextTemplating
@ -9,22 +10,26 @@ namespace Volo.Abp.TextTemplating
private readonly ITemplateContentProvider _templateContentProvider;
public TemplateRenderer(
ITemplateContentProvider templateContentProvider
)
ITemplateContentProvider templateContentProvider)
{
_templateContentProvider = templateContentProvider;
}
public virtual async Task<string> RenderAsync(
[NotNull] string templateName,
[CanBeNull] object model = null,
[CanBeNull] string cultureName = null)
{
Check.NotNullOrWhiteSpace(templateName, nameof(templateName));
return await _templateContentProvider.GetContentOrNullAsync(
var content = await _templateContentProvider.GetContentOrNullAsync(
templateName,
cultureName
);
var parsedTemplate = Template.Parse(content);
return await parsedTemplate.RenderAsync(model);
}
}
}

4
framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/TemplateRenderer_Tests.cs

@ -16,7 +16,9 @@ namespace Volo.Abp.TextTemplating
[Fact]
public async Task Should_Get_Rendered_Non_Localized_Template_Content()
{
var content = await _templateRenderer.RenderAsync(TestTemplates.ForgotPasswordEmail);
var content = await _templateRenderer.RenderAsync(
TestTemplates.ForgotPasswordEmail
);
content.ShouldBe("Please click to the following link to get an email to reset your password!");
}
}

Loading…
Cancel
Save