Skip to content

Commit cda9d24

Browse files
Merge pull request #53 from wdcossey/wdcossey/added-async-to-template
Added some `async` overloads to `IRazorEngineTemplate`
2 parents 0b1d02d + fbcb7bd commit cda9d24

File tree

4 files changed

+71
-8
lines changed

4 files changed

+71
-8
lines changed

RazorEngineCore/IRazorEngineTemplate.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,33 @@ namespace RazorEngineCore
55
public interface IRazorEngineTemplate
66
{
77
dynamic Model { get; set; }
8+
89
void WriteLiteral(string literal = null);
10+
11+
Task WriteLiteralAsync(string literal = null);
12+
913
void Write(object obj = null);
14+
15+
Task WriteAsync(object obj = null);
16+
1017
void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount);
18+
19+
Task BeginWriteAttributeAsync(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount);
20+
1121
void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral);
22+
23+
Task WriteAttributeValueAsync(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral);
24+
1225
void EndWriteAttribute();
26+
27+
Task EndWriteAttributeAsync();
28+
29+
void Execute();
30+
1331
Task ExecuteAsync();
32+
1433
string Result();
34+
35+
Task<string> ResultAsync();
1536
}
1637
}

RazorEngineCore/RazorEngineCompiledTemplate.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public async Task<string> RunAsync(object model = null)
101101

102102
await instance.ExecuteAsync();
103103

104-
return instance.Result();
104+
return await instance.ResultAsync();
105105
}
106106
}
107107
}

RazorEngineCore/RazorEngineCompiledTemplateT.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public async Task<string> RunAsync(Action<T> initializer)
9696

9797
await instance.ExecuteAsync();
9898

99-
return instance.Result();
99+
return await instance.ResultAsync();
100100
}
101101
}
102102
}

RazorEngineCore/RazorEngineTemplateBase.cs

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,69 @@ public abstract class RazorEngineTemplateBase : IRazorEngineTemplate
1111

1212
public dynamic Model { get; set; }
1313

14-
public virtual void WriteLiteral(string literal = null)
14+
public void WriteLiteral(string literal = null)
15+
{
16+
WriteLiteralAsync(literal).GetAwaiter().GetResult();
17+
}
18+
19+
public virtual Task WriteLiteralAsync(string literal = null)
1520
{
1621
this.stringBuilder.Append(literal);
22+
return Task.CompletedTask;
23+
}
24+
25+
public void Write(object obj = null)
26+
{
27+
WriteAsync(obj).GetAwaiter().GetResult();
1728
}
1829

19-
public virtual void Write(object obj = null)
30+
public virtual Task WriteAsync(object obj = null)
2031
{
2132
this.stringBuilder.Append(obj);
33+
return Task.CompletedTask;
34+
}
35+
36+
public void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset,
37+
int attributeValuesCount)
38+
{
39+
BeginWriteAttributeAsync(name, prefix, prefixOffset, suffix, suffixOffset, attributeValuesCount).GetAwaiter().GetResult();
2240
}
2341

24-
public virtual void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount)
42+
public virtual Task BeginWriteAttributeAsync(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount)
2543
{
2644
this.attributeSuffix = suffix;
2745
this.stringBuilder.Append(prefix);
46+
return Task.CompletedTask;
47+
}
48+
49+
public void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength,
50+
bool isLiteral)
51+
{
52+
WriteAttributeValueAsync(prefix, prefixOffset, value, valueOffset, valueLength, isLiteral).GetAwaiter().GetResult();
2853
}
2954

30-
public virtual void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral)
55+
public virtual Task WriteAttributeValueAsync(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral)
3156
{
3257
this.stringBuilder.Append(prefix);
3358
this.stringBuilder.Append(value);
59+
return Task.CompletedTask;
3460
}
3561

36-
public virtual void EndWriteAttribute()
62+
public void EndWriteAttribute()
63+
{
64+
EndWriteAttributeAsync().GetAwaiter().GetResult();
65+
}
66+
67+
public virtual Task EndWriteAttributeAsync()
3768
{
3869
this.stringBuilder.Append(this.attributeSuffix);
3970
this.attributeSuffix = null;
71+
return Task.CompletedTask;
72+
}
73+
74+
public void Execute()
75+
{
76+
ExecuteAsync().GetAwaiter().GetResult();
4077
}
4178

4279
public virtual Task ExecuteAsync()
@@ -46,7 +83,12 @@ public virtual Task ExecuteAsync()
4683

4784
public virtual string Result()
4885
{
49-
return this.stringBuilder.ToString();
86+
return ResultAsync().GetAwaiter().GetResult();
87+
}
88+
89+
public virtual Task<string> ResultAsync()
90+
{
91+
return Task.FromResult<string>(this.stringBuilder.ToString());
5092
}
5193
}
5294
}

0 commit comments

Comments
 (0)