Skip to content

Commit

Permalink
Merge pull request #53 from wdcossey/wdcossey/added-async-to-template
Browse files Browse the repository at this point in the history
Added some `async` overloads to `IRazorEngineTemplate`
  • Loading branch information
adoconnection authored May 26, 2021
2 parents 0b1d02d + fbcb7bd commit cda9d24
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 8 deletions.
21 changes: 21 additions & 0 deletions RazorEngineCore/IRazorEngineTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<string> ResultAsync();
}
}
2 changes: 1 addition & 1 deletion RazorEngineCore/RazorEngineCompiledTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public async Task<string> RunAsync(object model = null)

await instance.ExecuteAsync();

return instance.Result();
return await instance.ResultAsync();
}
}
}
2 changes: 1 addition & 1 deletion RazorEngineCore/RazorEngineCompiledTemplateT.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public async Task<string> RunAsync(Action<T> initializer)

await instance.ExecuteAsync();

return instance.Result();
return await instance.ResultAsync();
}
}
}
54 changes: 48 additions & 6 deletions RazorEngineCore/RazorEngineTemplateBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -46,7 +83,12 @@ public virtual Task ExecuteAsync()

public virtual string Result()
{
return this.stringBuilder.ToString();
return ResultAsync().GetAwaiter().GetResult();
}

public virtual Task<string> ResultAsync()
{
return Task.FromResult<string>(this.stringBuilder.ToString());
}
}
}

0 comments on commit cda9d24

Please sign in to comment.