diff --git a/RazorEngineCore/IRazorEngineTemplate.cs b/RazorEngineCore/IRazorEngineTemplate.cs index 9afa415..f4d0985 100644 --- a/RazorEngineCore/IRazorEngineTemplate.cs +++ b/RazorEngineCore/IRazorEngineTemplate.cs @@ -5,12 +5,33 @@ namespace RazorEngineCore public interface IRazorEngineTemplate { dynamic Model { get; set; } + void WriteLiteral(string literal = null); + + Task WriteLiteralAsync(string literal = null); + void Write(object obj = null); + + Task WriteAsync(object obj = null); + void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount); + + Task BeginWriteAttributeAsync(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount); + void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral); + + Task WriteAttributeValueAsync(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral); + void EndWriteAttribute(); + + Task EndWriteAttributeAsync(); + + void Execute(); + Task ExecuteAsync(); + string Result(); + + Task ResultAsync(); } } \ No newline at end of file diff --git a/RazorEngineCore/RazorEngineCompiledTemplate.cs b/RazorEngineCore/RazorEngineCompiledTemplate.cs index 071b70a..48461fe 100644 --- a/RazorEngineCore/RazorEngineCompiledTemplate.cs +++ b/RazorEngineCore/RazorEngineCompiledTemplate.cs @@ -101,7 +101,7 @@ public async Task RunAsync(object model = null) await instance.ExecuteAsync(); - return instance.Result(); + return await instance.ResultAsync(); } } } \ No newline at end of file diff --git a/RazorEngineCore/RazorEngineCompiledTemplateT.cs b/RazorEngineCore/RazorEngineCompiledTemplateT.cs index 56dd41b..3e2d392 100644 --- a/RazorEngineCore/RazorEngineCompiledTemplateT.cs +++ b/RazorEngineCore/RazorEngineCompiledTemplateT.cs @@ -96,7 +96,7 @@ public async Task RunAsync(Action initializer) await instance.ExecuteAsync(); - return instance.Result(); + return await instance.ResultAsync(); } } } \ No newline at end of file diff --git a/RazorEngineCore/RazorEngineTemplateBase.cs b/RazorEngineCore/RazorEngineTemplateBase.cs index f42ae46..b54e570 100644 --- a/RazorEngineCore/RazorEngineTemplateBase.cs +++ b/RazorEngineCore/RazorEngineTemplateBase.cs @@ -11,32 +11,69 @@ public abstract class RazorEngineTemplateBase : IRazorEngineTemplate public dynamic Model { get; set; } - public virtual void WriteLiteral(string literal = null) + public void WriteLiteral(string literal = null) + { + WriteLiteralAsync(literal).GetAwaiter().GetResult(); + } + + public virtual Task WriteLiteralAsync(string literal = null) { this.stringBuilder.Append(literal); + return Task.CompletedTask; + } + + public void Write(object obj = null) + { + WriteAsync(obj).GetAwaiter().GetResult(); } - public virtual void Write(object obj = null) + public virtual Task WriteAsync(object obj = null) { this.stringBuilder.Append(obj); + return Task.CompletedTask; + } + + public void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, + int attributeValuesCount) + { + BeginWriteAttributeAsync(name, prefix, prefixOffset, suffix, suffixOffset, attributeValuesCount).GetAwaiter().GetResult(); } - public virtual void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount) + public virtual Task BeginWriteAttributeAsync(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount) { this.attributeSuffix = suffix; this.stringBuilder.Append(prefix); + return Task.CompletedTask; + } + + public void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, + bool isLiteral) + { + WriteAttributeValueAsync(prefix, prefixOffset, value, valueOffset, valueLength, isLiteral).GetAwaiter().GetResult(); } - public virtual void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral) + public virtual Task WriteAttributeValueAsync(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral) { this.stringBuilder.Append(prefix); this.stringBuilder.Append(value); + return Task.CompletedTask; } - public virtual void EndWriteAttribute() + public void EndWriteAttribute() + { + EndWriteAttributeAsync().GetAwaiter().GetResult(); + } + + public virtual Task EndWriteAttributeAsync() { this.stringBuilder.Append(this.attributeSuffix); this.attributeSuffix = null; + return Task.CompletedTask; + } + + public void Execute() + { + ExecuteAsync().GetAwaiter().GetResult(); } public virtual Task ExecuteAsync() @@ -46,7 +83,12 @@ public virtual Task ExecuteAsync() public virtual string Result() { - return this.stringBuilder.ToString(); + return ResultAsync().GetAwaiter().GetResult(); + } + + public virtual Task ResultAsync() + { + return Task.FromResult(this.stringBuilder.ToString()); } } } \ No newline at end of file