1- using System ;
1+ using System ;
22using System . IO ;
33using System . Linq ;
44using System . Text ;
@@ -10,13 +10,13 @@ namespace GTS.InspectorGeneration.Utilities
1010{
1111 public class Generator
1212 {
13- private string tabLevel ;
13+ private string tabLevel = "" ;
1414 private bool didHaveProps ;
1515 private string classTypeField ;
1616 private string onEnableBody ;
1717
1818 public string [ ] Generate ( Type type , string fullPath , string className )
19- {
19+ {
2020 string varName = GetVarName ( className ) ;
2121
2222 string usings = GenerateUsings ( fullPath ) ;
@@ -70,15 +70,37 @@ private string GenerateUsings(string path)
7070 // Could add unintended using statements, example here in the StreamReader.
7171 if ( line . Contains ( "using" ) && line . Contains ( ";" ) ) //Test a 'using' fix.
7272 {
73- sb . Append ( $ " { line } \n ") ;
73+ sb . Append ( string . Format ( "{0 }\n ", line ) ) ;
7474 }
7575 }
7676 }
7777 return sb . ToString ( ) ;
7878 }
7979
80+ public string GetNameSpace ( string path )
81+ {
82+ //Debug.Log("generating usings");
83+
84+ string nameSpace = String . Empty ;
85+ using ( var reader = new StreamReader ( path ) )
86+ {
87+ string line ;
88+
89+ while ( ( line = reader . ReadLine ( ) ) != null )
90+ {
91+ // Could add unintended using statements, example here in the StreamReader.
92+ if ( line . Contains ( "namespace" ) ) //Test a 'using' fix.
93+ {
94+ nameSpace = line . Replace ( "namespace" , "" ) . Replace ( "{" , "" ) . Trim ( ) ;
95+ }
96+ }
97+ }
98+ return nameSpace ;
99+ }
100+
80101 private string GenerateNamespaceBegin ( Type type )
81102 {
103+ //Debug.Log("generating NameSpace");
82104 string myNamespace = type . Namespace ;
83105 if ( string . IsNullOrEmpty ( myNamespace ) )
84106 {
@@ -87,61 +109,70 @@ private string GenerateNamespaceBegin(Type type)
87109 else
88110 {
89111 Indent ( ) ;
90- return $ "\n namespace { myNamespace } \n {{" ;
112+ return ( "\n namespace " + myNamespace + " \n {" ) ;
91113 }
92114 }
93115
94116 private string GenerateInspectorAttribute ( string className )
95117 {
96- return $ "\n { tabLevel } [CustomEditor(typeof({ className } ))]\n ";
118+ //Debug.Log("generating Inspector Attribute");
119+
120+ return string . Format ( "\n {0}[CustomEditor(typeof({1}))]\n " , tabLevel , className ) ;
97121 }
98122
99123 private string GenerateClassDeclarationBegin ( string className )
100124 {
101- return $ "{ tabLevel } public class { className } Editor : Editor\n { tabLevel } {{\n ";
125+ //Debug.Log("generating Class Declaration Begin");
126+
127+ return ( tabLevel + "public class " + className + "Editor : Editor\n " + tabLevel + "{\n " ) ;
102128 }
103129
104130 // Members
105131 private string GenerateClassTypeMember ( string className , string varName )
106132 {
107- Indent ( ) ;
108- return $ " { tabLevel } private { className } { varName } ; \n ";
133+ //Debug.Log("generating Class Type Member" );
134+ return ( string . Format ( "{0 }private {1 } {2}; \n ", tabLevel , className , varName ) ) ;
109135 }
110136
111137 // OnEnable
112138 private string GenerateOnEnableBegin ( )
113139 {
114- string onEnableStart = $ "\n { tabLevel } private void OnEnable()\n ";
115- string openBrace = $ "{ tabLevel } {{\n ";
140+ //Debug.Log("generating OnEnable Begin");
141+ string onEnableStart = ( string . Format ( "\n {0}private void OnEnable()\n " , tabLevel ) ) ;
142+ string openBrace = ( tabLevel + "{\n " ) ;
116143
117- return $ " { onEnableStart } { openBrace } " ;
144+ return ( string . Format ( "{0}{1}" , onEnableStart , openBrace ) ) ;
118145 }
119146
120147 private string GenerateOnEnableBody ( string varName , string className )
121148 {
149+ //Debug.Log("generating OnEnable Body");
122150 Indent ( ) ;
123- string body = $ " { tabLevel } { varName } = ({ className } )target;\n ";
151+ string body = string . Format ( "{0}{1 } = ({2 })target; \n ", tabLevel , varName , className ) ;
124152 Dedent ( ) ;
125- return $ " { body } " ;
153+ return string . Format ( "{0}" , body ) ;
126154 }
127155
128156 private string GenerateOnEnableEnd ( )
129157 {
130- string closeBrace = $ "{ tabLevel } }}\n \n ";
131- return $ "{ closeBrace } ";
158+ //Debug.Log("generating OnEnable End");
159+ string closeBrace = tabLevel + "}\n \n " ;
160+ return string . Format ( "{0}" , closeBrace ) ;
132161 }
133162
134163 //OnInspectorGUI
135164 private string GenerateOnInspectorGUIBegin ( )
136165 {
137- return $ "{ tabLevel } public override void OnInspectorGUI()\n { tabLevel } {{\n ";
166+ //Debug.Log("generating OnInspectorGUI Begin");
167+ return ( tabLevel + "public override void OnInspectorGUI()\n " + tabLevel + "{\n " ) ;
138168 }
139169
140170 private string GenerateOnInspectorGUIBodyFields ( Type type , string varName )
141171 {
172+ //Debug.Log("generating OnInspectorGUI Body Fields");
142173 Indent ( ) ;
143174
144- StringBuilder sb = new StringBuilder ( $ " { tabLevel } // Fields\n ") ;
175+ StringBuilder sb = new StringBuilder ( string . Format ( "{0 }// Fields\n ", tabLevel ) ) ;
145176
146177 BindingFlags bindingFlags = BindingFlags . Public | BindingFlags . Instance | BindingFlags . DeclaredOnly ;
147178
@@ -156,7 +187,9 @@ private string GenerateOnInspectorGUIBodyFields(Type type, string varName)
156187
157188 private string GenerateOnInspectorGUIBodyProperties ( Type type , string varName )
158189 {
159- StringBuilder sb = new StringBuilder ( $ "\n { tabLevel } // Properties\n ") ;
190+ //Debug.Log("generating OnInspectorGUI Body Properties");
191+
192+ StringBuilder sb = new StringBuilder ( string . Format ( "\n {0}// Properties\n " , tabLevel ) ) ;
160193
161194 BindingFlags bindingFlags = BindingFlags . Public | BindingFlags . Instance | BindingFlags . DeclaredOnly ;
162195
@@ -171,7 +204,9 @@ private string GenerateOnInspectorGUIBodyProperties(Type type, string varName)
171204
172205 private string GenerateOnInspectorGUIBodyMethodButtons ( Type type , string varName )
173206 {
174- StringBuilder sb = new StringBuilder ( $ "\n { tabLevel } // Buttons") ;
207+ //Debug.Log("generating OnInspectorGUI Body Buttons");
208+
209+ StringBuilder sb = new StringBuilder ( string . Format ( "\n {0}// Buttons" , tabLevel ) ) ;
175210
176211 BindingFlags bindingFlags = BindingFlags . Public | BindingFlags . Instance | BindingFlags . DeclaredOnly | BindingFlags . NonPublic ;
177212
@@ -185,13 +220,13 @@ private string GenerateOnInspectorGUIBodyMethodButtons(Type type, string varName
185220 {
186221 MessageLogger . LogAttributeType ( a ) ;
187222
188- string buttonStart = $ "\n { tabLevel } if(GUILayout.Button(\" { GetLabelName ( m . Name ) } \" ))\n { tabLevel } {{ \n ";
223+ string buttonStart = ( "\n " + tabLevel + " if(GUILayout.Button(\" " + GetLabelName ( m . Name ) + ") \" ))\n " + tabLevel + "{ \n ") ;
189224 Indent ( ) ;
190- string buttonBody = $ " { tabLevel } { varName } .{ m . Name } ();\n ";
225+ string buttonBody = string . Format ( "{0}{1 }.{2 }(); \n ", tabLevel , varName , m . Name ) ;
191226 Dedent ( ) ;
192- string buttonEnd = $ " { tabLevel } } }\n ";
227+ string buttonEnd = tabLevel + " }\n ";
193228
194- sb . Append ( $ " { buttonStart } { buttonBody } { buttonEnd } " ) ;
229+ sb . Append ( string . Format ( "{0}{1}{2}" , buttonStart , buttonBody , buttonEnd ) ) ;
195230
196231 }
197232 }
@@ -204,20 +239,20 @@ private string GenerateOnInspectorGUIEnd()
204239 string result = string . Empty ;
205240 if ( didHaveProps )
206241 {
207- result = $ "\n { tabLevel } serializedObject.ApplyModifiedProperties();\n ";
242+ result = string . Format ( "\n {0 }serializedObject.ApplyModifiedProperties(); \n " , tabLevel ) ;
208243 }
209244
210245 Dedent ( ) ;
211246
212- result = $ " { result } { tabLevel } } }\n ";
247+ result = result + tabLevel + " }\n ";
213248 return result ;
214249 }
215-
250+
216251 // Finialize
217252 private string GenerateClassDeclarationEnd ( )
218253 {
219254 Dedent ( ) ;
220- return $ " { tabLevel } } }\n ";
255+ return tabLevel + " }\n ";
221256 }
222257
223258 private string GenerateNamespaceEnd ( Type type )
@@ -299,10 +334,10 @@ private string GoBackAndAddSerializedProperty(string name)
299334 didHaveProps = true ;
300335
301336 string ammendMemberDeclarations = AmmendMemberDeclarations ( name ) ;
302- classTypeField = $ " { classTypeField } { ammendMemberDeclarations } " ;
337+ classTypeField = string . Format ( "{0}{1}" , classTypeField , ammendMemberDeclarations ) ;
303338
304339 string ammendOnEnable = AmmendOnEnable ( name ) ;
305- onEnableBody = $ " { onEnableBody } { ammendOnEnable } " ;
340+ onEnableBody = string . Format ( "{0}{1}" , onEnableBody , ammendOnEnable ) ;
306341
307342 return GenerateEditorGUILayoutForSerializedProperty ( name ) ;
308343 }
@@ -311,7 +346,7 @@ private string GoBackAndAddSerializedProperty(string name)
311346 // A special case
312347 private string GenerateEditorGUILayoutEnumPopup ( string varName , string name , string type )
313348 {
314- string result = $ " { tabLevel } { varName } .{ name } = ({ type . Split ( '.' ) . Last ( ) } )EditorGUILayout.EnumPopup(\" { name } \" , { varName } .{ name } );\n { tabLevel } // Also could use EnumFlagsField.\n ";
349+ string result = string . Format ( "{0}{1 }.{2 } = ({3 })EditorGUILayout.EnumPopup(\" {2 }\" , {1 }.{2 }); \n {0 }// Also could use EnumFlagsField.\n ", tabLevel , varName , name , type . Split ( '.' ) . Last ( ) ) ;
315350 return result ;
316351 }
317352 // Default
@@ -321,34 +356,34 @@ private string GenerateEditorGUILayoutForGivenType(string varName, string name,
321356 string comment = LookUpComments ( type ) ;
322357 if ( ! string . IsNullOrEmpty ( comment ) )
323358 {
324- toAdd = $ " { tabLevel } { comment } " ;
359+ toAdd = string . Format ( "{0}{1}" , tabLevel , comment ) ;
325360 }
326- string r = $ " { tabLevel } { varName } .{ name } = EditorGUILayout.{ result } (\" { name } \" , { varName } .{ name } );\n { toAdd } " ;
361+ string r = string . Format ( "{0}{1 }.{2 } = EditorGUILayout.{3 }(\" {2 }\" , {1 }.{2 }); \n {4}" , tabLevel , varName , name , result , toAdd ) ;
327362 return r ;
328363 }
329364 // A special case
330365 private string GenerateEditorGUILayoutForSerializedProperty ( string name )
331366 {
332- return $ " { tabLevel } EditorGUILayout.PropertyField({ GetVarName ( name ) } , new GUIContent(\" { GetLabelName ( name ) } \" ), true);\n ";
367+ return string . Format ( "{0 }EditorGUILayout.PropertyField({1 }, new GUIContent(\" {2 }\" ), true); \n ", tabLevel , GetVarName ( name ) , GetLabelName ( name ) ) ;
333368 }
334369
335370 private string GenerateErrorMessage ( string name , string type )
336371 {
337- return $ " { tabLevel } // Omitting { name } from code generation. No applicable entry for { type } !\n ";
372+ return string . Format ( "{0 }// Omitting {1 } from code generation. No applicable entry for {2 }!\n ", tabLevel , name , type ) ;
338373 }
339374 #endregion
340375
341376 #region Ammendments
342377 private string AmmendOnEnable ( string name )
343378 {
344379 // m_IntProp = serializedObject.FindProperty("m_MyInt")
345- return $ " { tabLevel } { GetVarName ( name ) } = serializedObject.FindProperty(\" { name } \" );\n ";
380+ return string . Format ( "{0}{1 } = serializedObject.FindProperty(\" {2 }\" ); \n ", tabLevel , GetVarName ( name ) , name ) ;
346381 }
347382
348383 private string AmmendMemberDeclarations ( string name )
349384 {
350385 Dedent ( ) ;
351- string result = $ " { tabLevel } SerializedProperty { GetVarName ( name ) } ; \n ";
386+ string result = string . Format ( "{0 }SerializedProperty {1}; \n ", tabLevel , GetVarName ( name ) ) ;
352387 Indent ( ) ;
353388
354389 return result ;
@@ -358,20 +393,20 @@ private string AmmendMemberDeclarations(string name)
358393 #region Helpers
359394 private void Indent ( )
360395 {
361- tabLevel = $ " { tabLevel } \t ";
396+ tabLevel += " ";
362397 }
363398
364399 private void Dedent ( )
365400 {
366- if ( tabLevel . Length > 0 )
401+ if ( tabLevel . Length > 0 )
367402 {
368403 tabLevel = tabLevel . Remove ( tabLevel . Length - 1 ) ;
369404 }
370405 }
371406
372407 private string GetVarName ( string className )
373408 {
374- return $ "_{ Char . ToLowerInvariant ( className [ 0 ] ) } { className . Substring ( 1 ) } " ;
409+ return string . Format ( "_{0}{1}" , Char . ToLowerInvariant ( className [ 0 ] ) , className . Substring ( 1 ) ) ;
375410 }
376411
377412 private string GetLabelName ( string name )
@@ -382,11 +417,11 @@ private string GetLabelName(string name)
382417 {
383418 foreach ( var s in split )
384419 {
385- result = $ " { result } { s } " ;
420+ result = string . Format ( "{0 } {1}" , result , s ) ;
386421 }
387422
388423 result = result . Trim ( ) ;
389- result = $ " { Char . ToUpperInvariant ( result [ 0 ] ) } { result . Substring ( 1 ) } " ;
424+ result = string . Format ( "{0}{1}" , Char . ToUpperInvariant ( result [ 0 ] ) , result . Substring ( 1 ) ) ;
390425 return result ;
391426 }
392427
0 commit comments