Skip to content

Commit 4fe5a0b

Browse files
authored
Merge pull request #3 from J-Tech-Japan/feature/enums-varnames-titles-descriptions-support
Add support to generate varnames, titles, and descriptions for enums
2 parents 9d2b632 + 2eb49a2 commit 4fe5a0b

File tree

18 files changed

+70
-5
lines changed

18 files changed

+70
-5
lines changed

src/client/interfaces/Enum.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ export interface Enum {
22
name: string;
33
value: string;
44
type: string;
5+
title?: string | null;
56
description: string | null;
67
}

src/client/interfaces/Model.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export interface Model extends Schema {
99
template: string | null;
1010
link: Model | null;
1111
description: string | null;
12+
title?: string | null;
1213
deprecated?: boolean;
1314
default?: string;
1415
imports: string[];

src/client/interfaces/Operation.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export interface Operation extends OperationParameters {
77
name: string;
88
summary: string | null;
99
description: string | null;
10+
title?: string;
1011
deprecated: boolean;
1112
method: string;
1213
path: string;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
export interface WithEnumExtension {
2+
'x-enum-values'?: string[];
23
'x-enum-varnames'?: string[];
4+
'x-enum-titles'?: string[];
35
'x-enum-descriptions'?: string[];
46
}

src/openApi/v2/parser/extendEnum.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ import type { WithEnumExtension } from '../interfaces/Extensions/WithEnumExtensi
99
* @param definition
1010
*/
1111
export const extendEnum = (enumerators: Enum[], definition: WithEnumExtension): Enum[] => {
12+
const values = definition['x-enum-values'];
1213
const names = definition['x-enum-varnames']?.filter(isString);
14+
const titles = definition['x-enum-titles']?.filter(isString);
1315
const descriptions = definition['x-enum-descriptions']?.filter(isString);
1416

1517
return enumerators.map((enumerator, index) => ({
1618
name: names?.[index] || enumerator.name,
1719
description: descriptions?.[index] || enumerator.description,
18-
value: enumerator.value,
20+
value: values?.[index] || enumerator.value,
21+
title: titles?.[index] || enumerator.title,
1922
type: enumerator.type,
2023
}));
2124
};

src/openApi/v2/parser/getModel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const getModel = (
2222
template: null,
2323
link: null,
2424
description: definition.description || null,
25+
title: definition.title,
2526
isDefinition,
2627
isReadOnly: definition.readOnly === true,
2728
isNullable: definition['x-nullable'] === true,

src/openApi/v2/parser/getModelProperties.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export const getModelProperties = (openApi: OpenApi, definition: OpenApiSchema,
2525
template: model.template,
2626
link: null,
2727
description: property.description || null,
28+
title: property.title,
2829
isDefinition: false,
2930
isReadOnly: property.readOnly === true,
3031
isRequired: propertyRequired,
@@ -58,6 +59,7 @@ export const getModelProperties = (openApi: OpenApi, definition: OpenApiSchema,
5859
template: model.template,
5960
link: model.link,
6061
description: property.description || null,
62+
title: property.title,
6163
isDefinition: false,
6264
isReadOnly: property.readOnly === true,
6365
isRequired: propertyRequired,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
export interface WithEnumExtension {
2+
'x-enum-values'?: string[];
23
'x-enum-varnames'?: string[];
4+
'x-enum-titles'?: string[];
35
'x-enum-descriptions'?: string[];
46
}

src/openApi/v3/parser/extendEnum.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ import type { WithEnumExtension } from '../interfaces/Extensions/WithEnumExtensi
99
* @param definition
1010
*/
1111
export const extendEnum = (enumerators: Enum[], definition: WithEnumExtension): Enum[] => {
12+
const values = definition['x-enum-values'];
1213
const names = definition['x-enum-varnames']?.filter(isString);
14+
const titles = definition['x-enum-titles']?.filter(isString);
1315
const descriptions = definition['x-enum-descriptions']?.filter(isString);
1416

1517
return enumerators.map((enumerator, index) => ({
1618
name: names?.[index] || enumerator.name,
1719
description: descriptions?.[index] || enumerator.description,
18-
value: enumerator.value,
20+
value: values?.[index] || enumerator.value,
21+
title: titles?.[index] || enumerator.title,
1922
type: enumerator.type,
2023
}));
2124
};

src/openApi/v3/parser/getModel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export const getModel = (
2323
template: null,
2424
link: null,
2525
description: definition.description || null,
26+
title: definition.title,
2627
deprecated: definition.deprecated === true,
2728
isDefinition,
2829
isReadOnly: definition.readOnly === true,

0 commit comments

Comments
 (0)