private CodeSnippetExpression RewriteArrayInitializerExpression(CodeArrayInitializerExpression arrayInitializer) { using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture)) { sw.Write("{ "); sw.WriteLine(); this.nestingLevel++; try { foreach (CodeExpression expr in arrayInitializer.Values) { this.WriteIndentation(sw); this.generator.GenerateCodeFromExpression(expr, sw, null); sw.WriteLine(", "); } } finally { this.nestingLevel--; } this.WriteIndentation(sw); sw.Write(" }"); return(new CodeSnippetExpression(sw.ToString())); } }
/// <inheritdoc /> protected override bool HandleDynamic(CodeArrayInitializerExpression obj, Context ctx) { ctx.Writer.Write("{"); GeneralUtils.HandleCollectionCommaSeparated(obj.Expressions, ctx.HandlerProvider.ExpressionHandler, ctx); ctx.Writer.Write("}"); return(true); }
private CodeExpression RewriteAnonymousArrayExpression(CodeAnonymousArrayExpression expression) { var converted = new CodeArrayInitializerExpression(); foreach (var element in expression.Elements) { converted.Add(element); } return(this.RewriteArrayInitializerExpression(converted)); }
private CodeSnippetExpression RewriteArrayInitializerExpression(CodeArrayInitializerExpression arrayInitializer) { using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture)) { sw.Write("{ "); for (int i = 0; i < arrayInitializer.Values.Count; i++) { var expr = arrayInitializer.Values[i]; this.generator.GenerateCodeFromExpression(expr, sw, null); if (i < arrayInitializer.Values.Count - 1) { sw.Write(", "); } } sw.Write(" }"); return(new CodeSnippetExpression(sw.ToString())); } }
/// <summary> /// Rewrites CodeExpression /// </summary> /// <param name="e">A CodeExpression to be rewritten.</param> /// <param name="didRewrite">A value which will be set to true if the rewriting returned a new object.</param> /// <returns>Rewritten CodeExpression.</returns> protected override CodeExpression Rewrite(CodeExpression e, ref bool didRewrite) { CodeLambdaExpression lambdaExpression = e as CodeLambdaExpression; if (lambdaExpression != null) { didRewrite = true; return(this.RewriteLambdaExpression(lambdaExpression)); } CodeQueryExpression queryExpression = e as CodeQueryExpression; if (queryExpression != null) { didRewrite = true; return(this.RewriteComprehensionExpression(queryExpression)); } CodeCreateAndInitializeObjectExpression objectCreateExpression = e as CodeCreateAndInitializeObjectExpression; if (objectCreateExpression != null) { didRewrite = true; return(this.RewriteCreateAndInitializeObjectExpression(objectCreateExpression)); } CodeArrayInitializerExpression arrayInitializer = e as CodeArrayInitializerExpression; if (arrayInitializer != null) { didRewrite = true; return(this.RewriteArrayInitializerExpression(arrayInitializer)); } CodeExclusiveOrExpression exclusiveOrExpression = e as CodeExclusiveOrExpression; if (exclusiveOrExpression != null) { didRewrite = true; return(this.RewriteExclusiveOrExpression(exclusiveOrExpression)); } CodeAsExpression asExpression = e as CodeAsExpression; if (asExpression != null) { didRewrite = true; return(this.RewriteAsExpression(asExpression)); } CodeIsExpression isExpression = e as CodeIsExpression; if (isExpression != null) { didRewrite = true; return(this.RewriteIsExpression(isExpression)); } CodePrimitiveExpression primitiveExpression = e as CodePrimitiveExpression; if (primitiveExpression != null) { return(this.RewritePrimitiveExpression(primitiveExpression, ref didRewrite)); } var ternaryExpression = e as CodeTernaryExpression; if (ternaryExpression != null) { didRewrite = true; return(this.RewriteTernaryExpression(ternaryExpression)); } var anonymousArray = e as CodeAnonymousArrayExpression; if (anonymousArray != null) { didRewrite = true; return(this.RewriteAnonymousArrayExpression(anonymousArray)); } return(base.Rewrite(e, ref didRewrite)); }
/// <inheritdoc cref="ICodeObjectHandler{T}.Handle"/> protected abstract bool HandleDynamic(CodeArrayInitializerExpression obj, Context ctx);