private void Render(RenderExpression source, CSharpRenderingContext context) { if (source.Expression.Children.Count == 0) { return; } if (source.DocumentLocation != null) { using (context.Writer.BuildLinePragma(source.DocumentLocation)) using (context.Writer.NoIndent()) { var paddingString = BuildAssignmentOffsetPadding(source.Padding); context.Writer .Write(paddingString) .WriteStartAssignment(DesignTimeVariable); using (context.Writer.BuildCodeMapping(source.DocumentLocation)) { context.Render(source.Expression.Children); } context.Writer.WriteLine(";"); } } else { context.Writer.WriteStartAssignment(DesignTimeVariable); context.Render(source.Expression.Children); context.Writer.WriteLine(";"); } }
private static void Render(RenderExpression source, CSharpRenderingContext context) { IDisposable linePragmaScope = null; if (source.DocumentLocation != null) { linePragmaScope = context.Writer.BuildLinePragma(source.DocumentLocation); } var renderingConventions = context.GetRenderingConventions(); renderingConventions.StartWriteMethod(); context.Render(source.Expression.Children); context.Writer.WriteEndMethodInvocation(); linePragmaScope?.Dispose(); }
public static RenderAction RenderStringCompare(Expression expression, RenderExpression render, out string renderedExpression) { renderedExpression = null; var exp = expression as MethodCallExpression; if (exp == null || exp.Method != StandardResolvers.StringCompareMethodInfo) return RenderAction.None; string left; string right; if (RenderAction.Fail == render(exp.Arguments[0], render, out left) || RenderAction.Fail == render(exp.Arguments[1], render, out right)) return RenderAction.Fail; renderedExpression = string.Format("{0}.localeCompare({1})", left, right); return RenderAction.Rendered; }
public static RenderAction RenderBindingGetValue(Expression expression, RenderExpression render, out string renderedExpression) { renderedExpression = null; var exp = expression as MethodCallExpression; if (exp == null || !StandardResolvers.IsBindingGetValueMethod(exp.Method)) return RenderAction.None; // TODO string arg; string obj; if (RenderAction.Fail == render(exp.Object, render, out obj) || RenderAction.Fail == render(exp.Arguments[0], render, out arg)) return RenderAction.Fail; renderedExpression = string.Format("({0})({1})", obj, arg); return RenderAction.Rendered; }
public static RenderAction IsMetadataDeclarationForMethod(Expression expression, RenderExpression render, out string renderedExpression) { renderedExpression = null; var exp = expression as MethodCallExpression; if (exp == null || !StandardResolvers.IsBindingGetValueMethod(exp.Method)) return RenderAction.None; // TODO string arg; string name; // this is kloooge...fix it soon if (RenderAction.Fail == render(exp.Arguments[0], render, out arg) || RenderAction.Fail == render(exp.Object, render, out name)) return RenderAction.Fail; renderedExpression = string.Format("({0}).__md.{1}", arg, name); return RenderAction.Rendered; }