mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-23 17:41:01 +01:00
39 lines
1.1 KiB
C#
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);
|
|
}
|
|
} |