-
-
Notifications
You must be signed in to change notification settings - Fork 184
/
index.ts
56 lines (53 loc) · 1.42 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { ConstrainedDictionaryModel, CSharpGenerator } from '../../src';
const generator = new CSharpGenerator({
presets: [
{
class: {
// Self is used to overwrite the entire rendering behavior of the class
self: async ({ renderer, options, model }) => {
//Render all the class content
const content = [
await renderer.renderProperties(),
await renderer.runCtorPreset(),
await renderer.renderAccessors(),
await renderer.runAdditionalContentPreset()
];
if (
options?.collectionType === 'List' ||
model.containsPropertyType(ConstrainedDictionaryModel)
) {
renderer.addDependency('using System.Collections.Generic;');
}
return `public class ${model.name} : IEvent
{
${renderer.indent(renderer.renderBlock(content, 2))}
}`;
}
}
}
]
});
const jsonSchemaDraft7 = {
$schema: 'http://json-schema.org/draft-07/schema#',
type: 'object',
additionalProperties: false,
properties: {
email: {
type: 'array',
additionalItems: false,
items: {
type: 'string',
format: 'email'
}
}
}
};
export async function generate(): Promise<void> {
const models = await generator.generate(jsonSchemaDraft7);
for (const model of models) {
console.log(model.result);
}
}
if (require.main === module) {
generate();
}