@@ -43,8 +43,8 @@ async function wizardFileType(): Promise<string> {
43
43
const acceptedTypes = [
44
44
"class" ,
45
45
"interface" ,
46
- "enum"
47
- // "trait",
46
+ "enum" ,
47
+ "trait"
48
48
] ;
49
49
const type = await vscode . window . showQuickPick (
50
50
acceptedTypes ,
@@ -80,7 +80,10 @@ async function generatePhpSkeleton(type: string, fileName: string, namespace: st
80
80
if ( type === "enum" ) {
81
81
return await generatePhpEnumSkeleton ( fileName , namespace ) ;
82
82
}
83
- return "## TODO" ;
83
+ if ( type === "trait" ) {
84
+ return await generatePhpTraitSkeleton ( fileName , namespace ) ;
85
+ }
86
+ return "## not avaible" ;
84
87
}
85
88
86
89
async function generatePhpClassSkeleton ( className : string , namespace : string ) : Promise < string > {
@@ -242,12 +245,12 @@ async function wizardInterfaceMethods(): Promise<Array<{ name: string, returnTyp
242
245
return methods ;
243
246
}
244
247
245
- async function generatePhpEnumSkeleton ( className : string , namespace : string ) : Promise < string > {
248
+ async function generatePhpEnumSkeleton ( enumName : string , namespace : string ) : Promise < string > {
246
249
const cases = await wizardCasesEnum ( ) ;
247
250
248
251
let declareCases : Array < string > = [ ] ;
249
252
for ( const caseDeclaration of cases ) {
250
- declareCases . push ( ` case ${ caseDeclaration . toUpperCase ( ) . replace ( ' ' , '_' ) } ;` ) ;
253
+ declareCases . push ( ` case ${ caseDeclaration . toUpperCase ( ) . replace ( ' ' , '_' ) } ;` ) ;
251
254
}
252
255
253
256
return `<?php
@@ -256,14 +259,13 @@ declare(strict_types=1);
256
259
257
260
namespace ${ namespace } ;
258
261
259
- enum ${ className }
262
+ enum ${ enumName }
260
263
{
261
264
${ declareCases . join ( '\n' ) }
262
265
}` ;
263
266
}
264
267
265
- async function wizardCasesEnum ( ) : Promise < Array < string > >
266
- {
268
+ async function wizardCasesEnum ( ) : Promise < Array < string > > {
267
269
let cases = [ ] ;
268
270
let caseName = await vscode . window . showInputBox ( {
269
271
prompt : "Enter a case name (press 'Cancel' or leave empty to finish)"
@@ -275,4 +277,32 @@ async function wizardCasesEnum(): Promise<Array<string>>
275
277
} ) ;
276
278
}
277
279
return cases ;
280
+ }
281
+
282
+ async function generatePhpTraitSkeleton ( traitName : string , namespace : string ) : Promise < string > {
283
+ const methods = await wizardInterfaceMethods ( ) ;
284
+
285
+ let declareMethods = [ ] ;
286
+ for ( const method of methods ) {
287
+ let paramsMethod : Array < string > = [ ] ;
288
+ for ( const param of method . params ) {
289
+ paramsMethod . push ( `${ param . type } $${ param . name } ` ) ;
290
+ }
291
+ declareMethods . push ( ` public function ${ method . name } (${ paramsMethod . join ( ', ' ) } ): ${ method . returnType }
292
+ {
293
+ ## TODO
294
+ }` ) ;
295
+ }
296
+
297
+ return `<?php
298
+
299
+ declare(strict_types=1);
300
+
301
+ namespace ${ namespace } ;
302
+
303
+ interface ${ traitName }
304
+ {
305
+ ${ declareMethods . join ( "\n\n" ) }
306
+ }
307
+ ` ;
278
308
}
0 commit comments