Make IntermediateNodeBuilder internal (#1455)

This commit is contained in:
Ajay Bhargav Baaskaran 2017-06-23 11:15:25 -07:00 committed by GitHub
parent 6bbcbc1261
commit 5e57e9f235
6 changed files with 40 additions and 47 deletions

View File

@ -52,12 +52,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
Debug.Assert(index >= 0); Debug.Assert(index >= 0);
var pageAttribute = new CSharpCodeIntermediateNode(); var pageAttribute = new CSharpCodeIntermediateNode();
IntermediateNodeBuilder.Create(pageAttribute) pageAttribute.Children.Add(new IntermediateToken()
.Add(new IntermediateToken() {
{ Kind = IntermediateToken.TokenKind.CSharp,
Kind = IntermediateToken.TokenKind.CSharp, Content = attribute,
Content = attribute, });
});
documentNode.Children.Insert(index, pageAttribute); documentNode.Children.Insert(index, pageAttribute);
} }

View File

@ -31,24 +31,22 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
var endContextMethodName = "EndContext"; /* ORIGINAL: EndContextMethodName */ var endContextMethodName = "EndContext"; /* ORIGINAL: EndContextMethodName */
var beginNode = new CSharpCodeIntermediateNode(); var beginNode = new CSharpCodeIntermediateNode();
IntermediateNodeBuilder.Create(beginNode) beginNode.Children.Add(new IntermediateToken()
.Add(new IntermediateToken() {
{ Kind = IntermediateToken.TokenKind.CSharp,
Kind = IntermediateToken.TokenKind.CSharp, Content = string.Format("{0}({1}, {2}, {3});",
Content = string.Format("{0}({1}, {2}, {3});", beginContextMethodName,
beginContextMethodName, item.Source.AbsoluteIndex.ToString(CultureInfo.InvariantCulture),
item.Source.AbsoluteIndex.ToString(CultureInfo.InvariantCulture), item.Source.Length.ToString(CultureInfo.InvariantCulture),
item.Source.Length.ToString(CultureInfo.InvariantCulture), item.IsLiteral ? "true" : "false")
item.IsLiteral ? "true" : "false") });
});
var endNode = new CSharpCodeIntermediateNode(); var endNode = new CSharpCodeIntermediateNode();
IntermediateNodeBuilder.Create(endNode) endNode.Children.Add(new IntermediateToken()
.Add(new IntermediateToken() {
{ Kind = IntermediateToken.TokenKind.CSharp,
Kind = IntermediateToken.TokenKind.CSharp, Content = string.Format("{0}();", endContextMethodName)
Content = string.Format("{0}();", endContextMethodName) });
});
var nodeIndex = item.Parent.Children.IndexOf(item.Node); var nodeIndex = item.Parent.Children.IndexOf(item.Node);
item.Parent.Children.Insert(nodeIndex, beginNode); item.Parent.Children.Insert(nodeIndex, beginNode);

View File

@ -30,9 +30,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
string.Equals(node.Descriptor.IndexerTypeName, ModelExpressionTypeName, StringComparison.Ordinal))) string.Equals(node.Descriptor.IndexerTypeName, ModelExpressionTypeName, StringComparison.Ordinal)))
{ {
var expression = new CSharpExpressionIntermediateNode(); var expression = new CSharpExpressionIntermediateNode();
var builder = IntermediateNodeBuilder.Create(expression);
builder.Add(new IntermediateToken() expression.Children.Add(new IntermediateToken()
{ {
Kind = IntermediateToken.TokenKind.CSharp, Kind = IntermediateToken.TokenKind.CSharp,
Content = "ModelExpressionProvider.CreateModelExpression(ViewData, __model => ", Content = "ModelExpressionProvider.CreateModelExpression(ViewData, __model => ",
@ -42,13 +41,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
{ {
// A 'simple' expression will look like __model => __model.Foo // A 'simple' expression will look like __model => __model.Foo
builder.Add(new IntermediateToken() expression.Children.Add(new IntermediateToken()
{ {
Kind = IntermediateToken.TokenKind.CSharp, Kind = IntermediateToken.TokenKind.CSharp,
Content = "__model." Content = "__model."
}); });
builder.Add(token); expression.Children.Add(token);
} }
else else
{ {
@ -61,7 +60,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
if (nestedExpression.Children[j] is IntermediateToken cSharpToken && if (nestedExpression.Children[j] is IntermediateToken cSharpToken &&
cSharpToken.IsCSharp) cSharpToken.IsCSharp)
{ {
builder.Add(cSharpToken); expression.Children.Add(cSharpToken);
} }
} }
@ -70,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
} }
} }
builder.Add(new IntermediateToken() expression.Children.Add(new IntermediateToken()
{ {
Kind = IntermediateToken.TokenKind.CSharp, Kind = IntermediateToken.TokenKind.CSharp,
Content = ")", Content = ")",

View File

@ -23,21 +23,19 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
var viewDataType = $"global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<{modelType}>"; var viewDataType = $"global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<{modelType}>";
var vddProperty = new CSharpCodeIntermediateNode(); var vddProperty = new CSharpCodeIntermediateNode();
IntermediateNodeBuilder.Create(vddProperty) vddProperty.Children.Add(new IntermediateToken()
.Add(new IntermediateToken() {
{ Kind = IntermediateToken.TokenKind.CSharp,
Kind = IntermediateToken.TokenKind.CSharp, Content = $"public {viewDataType} ViewData => ({viewDataType})PageContext?.ViewData;",
Content = $"public {viewDataType} ViewData => ({viewDataType})PageContext?.ViewData;", });
});
@class.Children.Add(vddProperty); @class.Children.Add(vddProperty);
var modelProperty = new CSharpCodeIntermediateNode(); var modelProperty = new CSharpCodeIntermediateNode();
IntermediateNodeBuilder.Create(modelProperty) modelProperty.Children.Add(new IntermediateToken()
.Add(new IntermediateToken() {
{ Kind = IntermediateToken.TokenKind.CSharp,
Kind = IntermediateToken.TokenKind.CSharp, Content = $"public {modelType} Model => ViewData.Model;",
Content = $"public {modelType} Model => ViewData.Model;", });
});
@class.Children.Add(modelProperty); @class.Children.Add(modelProperty);
} }

View File

@ -49,12 +49,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
WriteClass(writer, tagHelper); WriteClass(writer, tagHelper);
var statement = new CSharpCodeIntermediateNode(); var statement = new CSharpCodeIntermediateNode();
IntermediateNodeBuilder.Create(statement) statement.Children.Add(new IntermediateToken()
.Add(new IntermediateToken() {
{ Kind = IntermediateToken.TokenKind.CSharp,
Kind = IntermediateToken.TokenKind.CSharp, Content = writer.GenerateCode()
Content = writer.GenerateCode() });
});
@class.Children.Add(statement); @class.Children.Add(statement);
} }

View File

@ -5,7 +5,7 @@ using System;
namespace Microsoft.AspNetCore.Razor.Language.Intermediate namespace Microsoft.AspNetCore.Razor.Language.Intermediate
{ {
public abstract class IntermediateNodeBuilder internal abstract class IntermediateNodeBuilder
{ {
public static IntermediateNodeBuilder Create(IntermediateNode root) public static IntermediateNodeBuilder Create(IntermediateNode root)
{ {