private void WriteCSharpExpressionInnards(CodeRenderingContext context, CSharpExpressionIntermediateNode node, string type = null) { if (node.Children.Count == 0) { return; } if (node.Source != null) { using (context.CodeWriter.BuildLinePragma(node.Source.Value, context)) { var offset = DesignTimeVariable.Length + " = ".Length; if (type != null) { offset += type.Length + 2; // two parenthesis } context.CodeWriter.WritePadding(offset, node.Source, context); context.CodeWriter.WriteStartAssignment(DesignTimeVariable); if (type != null) { context.CodeWriter.Write("("); context.CodeWriter.Write(type); context.CodeWriter.Write(")"); } for (var i = 0; i < node.Children.Count; i++) { if (node.Children[i] is IntermediateToken token && token.IsCSharp) { context.AddSourceMappingFor(token); context.CodeWriter.Write(token.Content); } else { // There may be something else inside the expression like a Template or another extension node. context.RenderNode(node.Children[i]); } }
public override void WriteCSharpExpression(CodeRenderingContext context, CSharpExpressionIntermediateNode node) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (node == null) { throw new ArgumentNullException(nameof(node)); } if (node.Children.Count == 0) { return; } if (node.Source != null) { using (context.CodeWriter.BuildLinePragma(node.Source.Value)) { var offset = DesignTimeVariable.Length + " = ".Length; context.CodeWriter.WritePadding(offset, node.Source, context); context.CodeWriter.WriteStartAssignment(DesignTimeVariable); for (var i = 0; i < node.Children.Count; i++) { if (node.Children[i] is IntermediateToken token && token.IsCSharp) { context.AddSourceMappingFor(token); context.CodeWriter.Write(token.Content); } else { // There may be something else inside the expression like a Template or another extension node. context.RenderNode(node.Children[i]); } }