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