Skip to content

Commit

Permalink
merge
Browse files Browse the repository at this point in the history
  • Loading branch information
adoconnection committed Jul 16, 2021
2 parents 959a0ff + cda9d24 commit c6562e3
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 20 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# RazorEngineCore
.NET5 Razor Template Engine. No legacy code.
* .NET Standard 2.0
* .NET 5.0
* .NET Standard 2.0
* .NET Framework 4.7.2
* Windows / Linux
* Publish as single file supported

[![NuGet](https://img.shields.io/nuget/dt/RazorEngineCore.svg?style=flat-square)](https://www.nuget.org/packages/RazorEngineCore)
[![NuGet](https://img.shields.io/nuget/v/RazorEngineCore.svg?style=flat-square)](https://www.nuget.org/packages/RazorEngineCore)
Expand Down
22 changes: 20 additions & 2 deletions RazorEngineCore/IRazorEngineTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,32 @@ 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();
}
}
6 changes: 2 additions & 4 deletions RazorEngineCore/RazorEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,9 @@ private MemoryStream CreateAndCompileToStream(string templateSource, RazorEngine

if (!emitResult.Success)
{
List<Diagnostic> errors = emitResult.Diagnostics.ToList();

RazorEngineCompilationException exception = new RazorEngineCompilationException($"Unable to compile template: {errors.FirstOrDefault()}")
RazorEngineCompilationException exception = new RazorEngineCompilationException()
{
Errors = errors,
Errors = emitResult.Diagnostics.ToList(),
GeneratedCode = razorCSharpDocument.GeneratedCode
};

Expand Down
17 changes: 12 additions & 5 deletions RazorEngineCore/RazorEngineCompilationException.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using Microsoft.CodeAnalysis;

Expand All @@ -15,15 +16,21 @@ protected RazorEngineCompilationException(SerializationInfo info, StreamingConte
{
}

public RazorEngineCompilationException(string message) : base(message)
{
}

public RazorEngineCompilationException(string message, Exception innerException) : base(message, innerException)
public RazorEngineCompilationException(Exception innerException) : base(null, innerException)
{
}

public List<Diagnostic> Errors { get; set; }

public string GeneratedCode { get; set; }

public override string Message
{
get
{
string errors = string.Join("\n", this.Errors.Where(w => w.IsWarningAsError || w.Severity == DiagnosticSeverity.Error));
return "Unable to compile template: " + errors;
}
}
}
}
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 c6562e3

Please sign in to comment.