Skip to content

Commit d3a1326

Browse files
authored
Merge pull request #3367 from wing328/typescript_enum_naming
[Typescript][Node] Better enum naming
2 parents 59a73a7 + 4f52ceb commit d3a1326

File tree

6 files changed

+35
-27
lines changed

6 files changed

+35
-27
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,14 @@ public String toEnumVarName(String name, String datatype) {
276276
}
277277

278278
// string
279-
String enumName = sanitizeName(underscore(name).toUpperCase());
279+
String enumName = sanitizeName(name);
280280
enumName = enumName.replaceFirst("^_", "");
281281
enumName = enumName.replaceFirst("_$", "");
282282

283+
// camelize the enum variable name
284+
// ref: https://basarat.gitbooks.io/typescript/content/docs/enums.html
285+
enumName = camelize(enumName);
286+
283287
if (enumName.matches("\\d.*")) { // starts with number
284288
return "_" + enumName;
285289
} else {

modules/swagger-codegen/src/main/resources/typescript-node/api.mustache

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,12 @@ export class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{
3535
export namespace {{classname}} {
3636
{{#vars}}
3737
{{#isEnum}}
38-
export enum {{datatypeWithEnum}} { {{#allowableValues}}{{#values}}
39-
{{datatypeWithEnum}}_{{.}} = <any> '{{.}}'{{^-last}},{{/-last}}{{/values}}{{/allowableValues}}
38+
export enum {{datatypeWithEnum}} {
39+
{{#allowableValues}}
40+
{{#enumVars}}
41+
{{name}} = <any> {{{value}}}{{^-last}},{{/-last}}
42+
{{/enumVars}}
43+
{{/allowableValues}}
4044
}
4145
{{/isEnum}}
4246
{{/vars}}

samples/client/petstore/typescript-node/default/api.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ export class Order {
5252
}
5353

5454
export namespace Order {
55-
export enum StatusEnum {
56-
StatusEnum_placed = <any> 'placed',
57-
StatusEnum_approved = <any> 'approved',
58-
StatusEnum_delivered = <any> 'delivered'
55+
export enum StatusEnum {
56+
Placed = <any> 'placed',
57+
Approved = <any> 'approved',
58+
Delivered = <any> 'delivered'
5959
}
6060
}
6161
export class Pet {
@@ -71,10 +71,10 @@ export class Pet {
7171
}
7272

7373
export namespace Pet {
74-
export enum StatusEnum {
75-
StatusEnum_available = <any> 'available',
76-
StatusEnum_pending = <any> 'pending',
77-
StatusEnum_sold = <any> 'sold'
74+
export enum StatusEnum {
75+
Available = <any> 'available',
76+
Pending = <any> 'pending',
77+
Sold = <any> 'sold'
7878
}
7979
}
8080
export class Tag {

samples/client/petstore/typescript-node/npm/api.d.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ export declare class Order {
1515
}
1616
export declare namespace Order {
1717
enum StatusEnum {
18-
StatusEnum_placed,
19-
StatusEnum_approved,
20-
StatusEnum_delivered,
18+
Placed,
19+
Approved,
20+
Delivered,
2121
}
2222
}
2323
export declare class Pet {
@@ -30,9 +30,9 @@ export declare class Pet {
3030
}
3131
export declare namespace Pet {
3232
enum StatusEnum {
33-
StatusEnum_available,
34-
StatusEnum_pending,
35-
StatusEnum_sold,
33+
Available,
34+
Pending,
35+
Sold,
3636
}
3737
}
3838
export declare class Tag {

samples/client/petstore/typescript-node/npm/api.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ export class Order {
5252
}
5353

5454
export namespace Order {
55-
export enum StatusEnum {
56-
StatusEnum_placed = <any> 'placed',
57-
StatusEnum_approved = <any> 'approved',
58-
StatusEnum_delivered = <any> 'delivered'
55+
export enum StatusEnum {
56+
Placed = <any> 'placed',
57+
Approved = <any> 'approved',
58+
Delivered = <any> 'delivered'
5959
}
6060
}
6161
export class Pet {
@@ -71,10 +71,10 @@ export class Pet {
7171
}
7272

7373
export namespace Pet {
74-
export enum StatusEnum {
75-
StatusEnum_available = <any> 'available',
76-
StatusEnum_pending = <any> 'pending',
77-
StatusEnum_sold = <any> 'sold'
74+
export enum StatusEnum {
75+
Available = <any> 'available',
76+
Pending = <any> 'pending',
77+
Sold = <any> 'sold'
7878
}
7979
}
8080
export class Tag {

samples/client/petstore/typescript-node/npm/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ petApi.addPet(pet)
2525
var newPet = <api.Pet>res.body;
2626
petId = newPet.id;
2727
console.log(`Created pet with ID ${petId}`);
28-
newPet.status = api.Pet.StatusEnum.StatusEnum_available;
28+
newPet.status = api.Pet.StatusEnum.Available;
2929
return petApi.updatePet(newPet);
3030
})
3131
.then((res) => {
@@ -42,7 +42,7 @@ petApi.addPet(pet)
4242
})
4343
.then((res) => {
4444
console.log('Got pet by ID: ' + JSON.stringify(res.body));
45-
if (res.body.status != api.Pet.StatusEnum.StatusEnum_pending) {
45+
if (res.body.status != api.Pet.StatusEnum.Pending) {
4646
throw new Error("Unexpected pet status");
4747
}
4848
})

0 commit comments

Comments
 (0)