Skip to content

Commit c6562e3

Browse files
committed
merge
2 parents 959a0ff + cda9d24 commit c6562e3

File tree

7 files changed

+86
-20
lines changed

7 files changed

+86
-20
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# RazorEngineCore
22
.NET5 Razor Template Engine. No legacy code.
3-
* .NET Standard 2.0
43
* .NET 5.0
4+
* .NET Standard 2.0
55
* .NET Framework 4.7.2
66
* Windows / Linux
7+
* Publish as single file supported
78

89
[![NuGet](https://img.shields.io/nuget/dt/RazorEngineCore.svg?style=flat-square)](https://www.nuget.org/packages/RazorEngineCore)
910
[![NuGet](https://img.shields.io/nuget/v/RazorEngineCore.svg?style=flat-square)](https://www.nuget.org/packages/RazorEngineCore)

RazorEngineCore/IRazorEngineTemplate.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,32 @@ namespace RazorEngineCore
55
public interface IRazorEngineTemplate
66
{
77
dynamic Model { get; set; }
8-
98
void WriteLiteral(string literal = null);
9+
10+
Task WriteLiteralAsync(string literal = null);
11+
1012
void Write(object obj = null);
13+
14+
Task WriteAsync(object obj = null);
15+
1116
void BeginWriteAttribute(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount);
17+
18+
Task BeginWriteAttributeAsync(string name, string prefix, int prefixOffset, string suffix, int suffixOffset, int attributeValuesCount);
19+
1220
void WriteAttributeValue(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral);
21+
22+
Task WriteAttributeValueAsync(string prefix, int prefixOffset, object value, int valueOffset, int valueLength, bool isLiteral);
23+
1324
void EndWriteAttribute();
14-
25+
26+
Task EndWriteAttributeAsync();
27+
28+
void Execute();
29+
1530
Task ExecuteAsync();
31+
1632
string Result();
33+
34+
Task<string> ResultAsync();
1735
}
1836
}

RazorEngineCore/RazorEngine.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,9 @@ private MemoryStream CreateAndCompileToStream(string templateSource, RazorEngine
109109

110110
if (!emitResult.Success)
111111
{
112-
List<Diagnostic> errors = emitResult.Diagnostics.ToList();
113-
114-
RazorEngineCompilationException exception = new RazorEngineCompilationException($"Unable to compile template: {errors.FirstOrDefault()}")
112+
RazorEngineCompilationException exception = new RazorEngineCompilationException()
115113
{
116-
Errors = errors,
114+
Errors = emitResult.Diagnostics.ToList(),
117115
GeneratedCode = razorCSharpDocument.GeneratedCode
118116
};
119117

RazorEngineCore/RazorEngineCompilationException.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Linq;
34
using System.Runtime.Serialization;
45
using Microsoft.CodeAnalysis;
56

@@ -15,15 +16,21 @@ protected RazorEngineCompilationException(SerializationInfo info, StreamingConte
1516
{
1617
}
1718

18-
public RazorEngineCompilationException(string message) : base(message)
19-
{
20-
}
21-
22-
public RazorEngineCompilationException(string message, Exception innerException) : base(message, innerException)
19+
public RazorEngineCompilationException(Exception innerException) : base(null, innerException)
2320
{
2421
}
2522

2623
public List<Diagnostic> Errors { get; set; }
24+
2725
public string GeneratedCode { get; set; }
26+
27+
public override string Message
28+
{
29+
get
30+
{
31+
string errors = string.Join("\n", this.Errors.Where(w => w.IsWarningAsError || w.Severity == DiagnosticSeverity.Error));
32+
return "Unable to compile template: " + errors;
33+
}
34+
}
2835
}
2936
}

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)