1 // Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. 2 3 namespace System.Web.Razor.Generator 4 { 5 internal abstract class BaseCodeWriter : CodeWriter 6 { WriteSnippet(string snippet)7 public override void WriteSnippet(string snippet) 8 { 9 InnerWriter.Write(snippet); 10 } 11 EmitStartMethodInvoke(string methodName)12 protected internal override void EmitStartMethodInvoke(string methodName) 13 { 14 EmitStartMethodInvoke(methodName, new string[0]); 15 } 16 EmitStartMethodInvoke(string methodName, params string[] genericArguments)17 protected internal override void EmitStartMethodInvoke(string methodName, params string[] genericArguments) 18 { 19 InnerWriter.Write(methodName); 20 if (genericArguments != null && genericArguments.Length > 0) 21 { 22 WriteStartGenerics(); 23 for (int i = 0; i < genericArguments.Length; i++) 24 { 25 if (i > 0) 26 { 27 WriteParameterSeparator(); 28 } 29 WriteSnippet(genericArguments[i]); 30 } 31 WriteEndGenerics(); 32 } 33 34 InnerWriter.Write("("); 35 } 36 EmitEndMethodInvoke()37 protected internal override void EmitEndMethodInvoke() 38 { 39 InnerWriter.Write(")"); 40 } 41 EmitEndConstructor()42 protected internal override void EmitEndConstructor() 43 { 44 InnerWriter.Write(")"); 45 } 46 EmitEndLambdaExpression()47 protected internal override void EmitEndLambdaExpression() 48 { 49 } 50 WriteParameterSeparator()51 public override void WriteParameterSeparator() 52 { 53 InnerWriter.Write(", "); 54 } 55 WriteCommaSeparatedList(T[] items, Action<T> writeItemAction)56 protected internal void WriteCommaSeparatedList<T>(T[] items, Action<T> writeItemAction) 57 { 58 for (int i = 0; i < items.Length; i++) 59 { 60 if (i > 0) 61 { 62 InnerWriter.Write(", "); 63 } 64 writeItemAction(items[i]); 65 } 66 } 67 WriteStartGenerics()68 protected internal virtual void WriteStartGenerics() 69 { 70 } 71 WriteEndGenerics()72 protected internal virtual void WriteEndGenerics() 73 { 74 } 75 } 76 } 77