Skip to content

Commit a22b40d

Browse files
committed
Add support to generate varnames, titles, and descriptions for enums
1 parent 9a97986 commit a22b40d

File tree

14 files changed

+61
-4
lines changed

14 files changed

+61
-4
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/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,

src/openApi/v3/parser/getModelProperties.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export const getModelProperties = (
3737
> = {
3838
name: escapeName(propertyName),
3939
description: property.description || null,
40+
title: property.title,
4041
deprecated: property.deprecated === true,
4142
isDefinition: false,
4243
isReadOnly: property.readOnly === true,

src/templates/exportSchema.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
{{>header}}
22

3+
{{#equals export 'enum'}}
4+
import { {{name}} } from '../models/{{{name}}}'
5+
{{/equals}}
6+
37
export const ${{{name}}} = {{>schema}} as const;

src/templates/partials/schemaArray.hbs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
{
2+
{{#if title}}
3+
title: '{{{title}}}',
4+
{{/if}}
5+
{{#if description}}
6+
description: `{{{escapeDescription description}}}`,
7+
{{/if}}
28
type: 'array',
39
{{#if link}}
410
contains: {{>schema link}},

src/templates/partials/schemaComposition.hbs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
{
2-
type: '{{export}}',
2+
{{#if title}}
3+
title: '{{{title}}}',
4+
{{/if}}
35
{{#if description}}
46
description: `{{{escapeDescription description}}}`,
57
{{/if}}
8+
type: '{{export}}',
69
contains: [{{#each properties}}{{>schema}}{{#unless @last}}, {{/unless}}{{/each}}],
710
{{#if isReadOnly}}
811
isReadOnly: {{{isReadOnly}}},

0 commit comments

Comments
 (0)