Files
WireMock.Net-wiremock/src/WireMock.Net/Transformers/Handlebars/HandlebarsContext.cs
Stef Heyenrath 4aaed2a6ca Fix HandlebarsContext ParseAndEvaluate method (#1213)
* Fix HandlebarsContext ParseAndEvaluate method

* test

* xxx
2024-11-22 07:58:23 +01:00

39 lines
1.1 KiB
C#

// Copyright © WireMock.Net
using HandlebarsDotNet;
using HandlebarsDotNet.Helpers.Extensions;
using Stef.Validation;
using WireMock.Handlers;
namespace WireMock.Transformers.Handlebars;
internal class HandlebarsContext : IHandlebarsContext
{
public IHandlebars Handlebars { get; }
public IFileSystemHandler FileSystemHandler { get; }
public HandlebarsContext(IHandlebars handlebars, IFileSystemHandler fileSystemHandler)
{
Handlebars = Guard.NotNull(handlebars);
FileSystemHandler = Guard.NotNull(fileSystemHandler);
}
public string ParseAndRender(string text, object model)
{
var template = Handlebars.Compile(text);
return template(model);
}
public object? ParseAndEvaluate(string text, object model)
{
if (text.StartsWith("{{") && text.EndsWith("}}") &&
Handlebars.TryEvaluate(text, model, out var result) &&
result is not UndefinedBindingResult)
{
return result;
}
return ParseAndRender(text, model);
}
}