1
- using System ;
1
+ using System ;
2
2
using System . IO ;
3
3
using System . Linq ;
4
4
using System . Text ;
@@ -10,13 +10,13 @@ namespace GTS.InspectorGeneration.Utilities
10
10
{
11
11
public class Generator
12
12
{
13
- private string tabLevel ;
13
+ private string tabLevel = "" ;
14
14
private bool didHaveProps ;
15
15
private string classTypeField ;
16
16
private string onEnableBody ;
17
17
18
18
public string [ ] Generate ( Type type , string fullPath , string className )
19
- {
19
+ {
20
20
string varName = GetVarName ( className ) ;
21
21
22
22
string usings = GenerateUsings ( fullPath ) ;
@@ -70,15 +70,37 @@ private string GenerateUsings(string path)
70
70
// Could add unintended using statements, example here in the StreamReader.
71
71
if ( line . Contains ( "using" ) && line . Contains ( ";" ) ) //Test a 'using' fix.
72
72
{
73
- sb . Append ( $ " { line } \n ") ;
73
+ sb . Append ( string . Format ( "{0 }\n ", line ) ) ;
74
74
}
75
75
}
76
76
}
77
77
return sb . ToString ( ) ;
78
78
}
79
79
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
+
80
101
private string GenerateNamespaceBegin ( Type type )
81
102
{
103
+ //Debug.Log("generating NameSpace");
82
104
string myNamespace = type . Namespace ;
83
105
if ( string . IsNullOrEmpty ( myNamespace ) )
84
106
{
@@ -87,61 +109,70 @@ private string GenerateNamespaceBegin(Type type)
87
109
else
88
110
{
89
111
Indent ( ) ;
90
- return $ "\n namespace { myNamespace } \n {{" ;
112
+ return ( "\n namespace " + myNamespace + " \n {" ) ;
91
113
}
92
114
}
93
115
94
116
private string GenerateInspectorAttribute ( string className )
95
117
{
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 ) ;
97
121
}
98
122
99
123
private string GenerateClassDeclarationBegin ( string className )
100
124
{
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 " ) ;
102
128
}
103
129
104
130
// Members
105
131
private string GenerateClassTypeMember ( string className , string varName )
106
132
{
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 ) ) ;
109
135
}
110
136
111
137
// OnEnable
112
138
private string GenerateOnEnableBegin ( )
113
139
{
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 " ) ;
116
143
117
- return $ " { onEnableStart } { openBrace } " ;
144
+ return ( string . Format ( "{0}{1}" , onEnableStart , openBrace ) ) ;
118
145
}
119
146
120
147
private string GenerateOnEnableBody ( string varName , string className )
121
148
{
149
+ //Debug.Log("generating OnEnable Body");
122
150
Indent ( ) ;
123
- string body = $ " { tabLevel } { varName } = ({ className } )target;\n ";
151
+ string body = string . Format ( "{0}{1 } = ({2 })target; \n ", tabLevel , varName , className ) ;
124
152
Dedent ( ) ;
125
- return $ " { body } " ;
153
+ return string . Format ( "{0}" , body ) ;
126
154
}
127
155
128
156
private string GenerateOnEnableEnd ( )
129
157
{
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 ) ;
132
161
}
133
162
134
163
//OnInspectorGUI
135
164
private string GenerateOnInspectorGUIBegin ( )
136
165
{
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 " ) ;
138
168
}
139
169
140
170
private string GenerateOnInspectorGUIBodyFields ( Type type , string varName )
141
171
{
172
+ //Debug.Log("generating OnInspectorGUI Body Fields");
142
173
Indent ( ) ;
143
174
144
- StringBuilder sb = new StringBuilder ( $ " { tabLevel } // Fields\n ") ;
175
+ StringBuilder sb = new StringBuilder ( string . Format ( "{0 }// Fields\n ", tabLevel ) ) ;
145
176
146
177
BindingFlags bindingFlags = BindingFlags . Public | BindingFlags . Instance | BindingFlags . DeclaredOnly ;
147
178
@@ -156,7 +187,9 @@ private string GenerateOnInspectorGUIBodyFields(Type type, string varName)
156
187
157
188
private string GenerateOnInspectorGUIBodyProperties ( Type type , string varName )
158
189
{
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 ) ) ;
160
193
161
194
BindingFlags bindingFlags = BindingFlags . Public | BindingFlags . Instance | BindingFlags . DeclaredOnly ;
162
195
@@ -171,7 +204,9 @@ private string GenerateOnInspectorGUIBodyProperties(Type type, string varName)
171
204
172
205
private string GenerateOnInspectorGUIBodyMethodButtons ( Type type , string varName )
173
206
{
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 ) ) ;
175
210
176
211
BindingFlags bindingFlags = BindingFlags . Public | BindingFlags . Instance | BindingFlags . DeclaredOnly | BindingFlags . NonPublic ;
177
212
@@ -185,13 +220,13 @@ private string GenerateOnInspectorGUIBodyMethodButtons(Type type, string varName
185
220
{
186
221
MessageLogger . LogAttributeType ( a ) ;
187
222
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 ") ;
189
224
Indent ( ) ;
190
- string buttonBody = $ " { tabLevel } { varName } .{ m . Name } ();\n ";
225
+ string buttonBody = string . Format ( "{0}{1 }.{2 }(); \n ", tabLevel , varName , m . Name ) ;
191
226
Dedent ( ) ;
192
- string buttonEnd = $ " { tabLevel } } }\n ";
227
+ string buttonEnd = tabLevel + " }\n ";
193
228
194
- sb . Append ( $ " { buttonStart } { buttonBody } { buttonEnd } " ) ;
229
+ sb . Append ( string . Format ( "{0}{1}{2}" , buttonStart , buttonBody , buttonEnd ) ) ;
195
230
196
231
}
197
232
}
@@ -204,20 +239,20 @@ private string GenerateOnInspectorGUIEnd()
204
239
string result = string . Empty ;
205
240
if ( didHaveProps )
206
241
{
207
- result = $ "\n { tabLevel } serializedObject.ApplyModifiedProperties();\n ";
242
+ result = string . Format ( "\n {0 }serializedObject.ApplyModifiedProperties(); \n " , tabLevel ) ;
208
243
}
209
244
210
245
Dedent ( ) ;
211
246
212
- result = $ " { result } { tabLevel } } }\n ";
247
+ result = result + tabLevel + " }\n ";
213
248
return result ;
214
249
}
215
-
250
+
216
251
// Finialize
217
252
private string GenerateClassDeclarationEnd ( )
218
253
{
219
254
Dedent ( ) ;
220
- return $ " { tabLevel } } }\n ";
255
+ return tabLevel + " }\n ";
221
256
}
222
257
223
258
private string GenerateNamespaceEnd ( Type type )
@@ -299,10 +334,10 @@ private string GoBackAndAddSerializedProperty(string name)
299
334
didHaveProps = true ;
300
335
301
336
string ammendMemberDeclarations = AmmendMemberDeclarations ( name ) ;
302
- classTypeField = $ " { classTypeField } { ammendMemberDeclarations } " ;
337
+ classTypeField = string . Format ( "{0}{1}" , classTypeField , ammendMemberDeclarations ) ;
303
338
304
339
string ammendOnEnable = AmmendOnEnable ( name ) ;
305
- onEnableBody = $ " { onEnableBody } { ammendOnEnable } " ;
340
+ onEnableBody = string . Format ( "{0}{1}" , onEnableBody , ammendOnEnable ) ;
306
341
307
342
return GenerateEditorGUILayoutForSerializedProperty ( name ) ;
308
343
}
@@ -311,7 +346,7 @@ private string GoBackAndAddSerializedProperty(string name)
311
346
// A special case
312
347
private string GenerateEditorGUILayoutEnumPopup ( string varName , string name , string type )
313
348
{
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 ( ) ) ;
315
350
return result ;
316
351
}
317
352
// Default
@@ -321,34 +356,34 @@ private string GenerateEditorGUILayoutForGivenType(string varName, string name,
321
356
string comment = LookUpComments ( type ) ;
322
357
if ( ! string . IsNullOrEmpty ( comment ) )
323
358
{
324
- toAdd = $ " { tabLevel } { comment } " ;
359
+ toAdd = string . Format ( "{0}{1}" , tabLevel , comment ) ;
325
360
}
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 ) ;
327
362
return r ;
328
363
}
329
364
// A special case
330
365
private string GenerateEditorGUILayoutForSerializedProperty ( string name )
331
366
{
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 ) ) ;
333
368
}
334
369
335
370
private string GenerateErrorMessage ( string name , string type )
336
371
{
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 ) ;
338
373
}
339
374
#endregion
340
375
341
376
#region Ammendments
342
377
private string AmmendOnEnable ( string name )
343
378
{
344
379
// 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 ) ;
346
381
}
347
382
348
383
private string AmmendMemberDeclarations ( string name )
349
384
{
350
385
Dedent ( ) ;
351
- string result = $ " { tabLevel } SerializedProperty { GetVarName ( name ) } ; \n ";
386
+ string result = string . Format ( "{0 }SerializedProperty {1}; \n ", tabLevel , GetVarName ( name ) ) ;
352
387
Indent ( ) ;
353
388
354
389
return result ;
@@ -358,20 +393,20 @@ private string AmmendMemberDeclarations(string name)
358
393
#region Helpers
359
394
private void Indent ( )
360
395
{
361
- tabLevel = $ " { tabLevel } \t ";
396
+ tabLevel += " ";
362
397
}
363
398
364
399
private void Dedent ( )
365
400
{
366
- if ( tabLevel . Length > 0 )
401
+ if ( tabLevel . Length > 0 )
367
402
{
368
403
tabLevel = tabLevel . Remove ( tabLevel . Length - 1 ) ;
369
404
}
370
405
}
371
406
372
407
private string GetVarName ( string className )
373
408
{
374
- return $ "_{ Char . ToLowerInvariant ( className [ 0 ] ) } { className . Substring ( 1 ) } " ;
409
+ return string . Format ( "_{0}{1}" , Char . ToLowerInvariant ( className [ 0 ] ) , className . Substring ( 1 ) ) ;
375
410
}
376
411
377
412
private string GetLabelName ( string name )
@@ -382,11 +417,11 @@ private string GetLabelName(string name)
382
417
{
383
418
foreach ( var s in split )
384
419
{
385
- result = $ " { result } { s } " ;
420
+ result = string . Format ( "{0 } {1}" , result , s ) ;
386
421
}
387
422
388
423
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 ) ) ;
390
425
return result ;
391
426
}
392
427
0 commit comments