@goast/kotlin 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -146,7 +146,8 @@ class DefaultKotlinModelGenerator extends file_generator_1.KotlinFileGenerator {
146
146
  .appendIf(inheritedSchemas.some((x) => this.hasProperty(ctx, x, property.name)), 'override ')
147
147
  .append(`val ${(0, core_1.toCasing)(property.name, 'camel')}: `)
148
148
  .append((builder) => this.generateTypeUsage(ctx, builder, property.schema))
149
- .if(!schema.required.has(property.name), (builder) => builder.appendIf(!property.schema.nullable, '?').append(' = null')), { separator: ',\n' }), { multiline: true })
149
+ .if(!schema.required.has(property.name), (builder) => builder.appendIf(!property.schema.nullable, '?'))
150
+ .appendIf(property.schema.default !== undefined || !schema.required.has(property.name), ' = ', (builder) => this.generateDefaultValue(ctx, builder, property.schema)), { separator: ',\n' }), { multiline: true })
150
151
  .if(inheritedSchemas.length > 0, (builder) => builder
151
152
  .append(' : ')
152
153
  .forEach(inheritedSchemas, (builder, schema) => this.generateTypeUsage(ctx, builder, schema), {
@@ -175,6 +176,36 @@ class DefaultKotlinModelGenerator extends file_generator_1.KotlinFileGenerator {
175
176
  .append(' ')
176
177
  .parenthesize('{}', 'return this.additionalProperties', { multiline: true })), { multiline: true });
177
178
  }
179
+ generateDefaultValue(ctx, builder, schema) {
180
+ if (schema.default === null || schema.default === undefined) {
181
+ builder.append('null');
182
+ }
183
+ else {
184
+ switch (schema.kind) {
185
+ case 'boolean':
186
+ builder.append(Boolean(schema.default) || String(schema.default).toLowerCase() === 'true' ? 'true' : 'false');
187
+ break;
188
+ case 'integer':
189
+ case 'number':
190
+ builder.append(String(schema.default));
191
+ break;
192
+ case 'string':
193
+ if (schema.enum && schema.enum.length > 0) {
194
+ builder
195
+ .append((builder) => this.generateTypeUsage(ctx, builder, schema))
196
+ .append('.')
197
+ .append((0, core_1.toCasing)(String(schema.default), ctx.config.enumValueNameCasing));
198
+ }
199
+ else {
200
+ builder.append(this.toStringLiteral(ctx, String(schema.default)));
201
+ }
202
+ break;
203
+ default:
204
+ builder.append('null');
205
+ break;
206
+ }
207
+ }
208
+ }
178
209
  generateObjectDataClassParameterAnnotations(ctx, builder, schema, property) {
179
210
  this.generatePropertyValidationAnnotations(ctx, builder, schema, property);
180
211
  this.generatePropertySchemaAnnotation(ctx, builder, schema, property);
@@ -255,7 +286,7 @@ class DefaultKotlinModelGenerator extends file_generator_1.KotlinFileGenerator {
255
286
  }
256
287
  break;
257
288
  case 'null':
258
- builder.append('null');
289
+ builder.append('Nothing');
259
290
  break;
260
291
  case 'unknown':
261
292
  builder.append('Any');
@@ -143,7 +143,8 @@ export class DefaultKotlinModelGenerator extends KotlinFileGenerator {
143
143
  .appendIf(inheritedSchemas.some((x) => this.hasProperty(ctx, x, property.name)), 'override ')
144
144
  .append(`val ${toCasing(property.name, 'camel')}: `)
145
145
  .append((builder) => this.generateTypeUsage(ctx, builder, property.schema))
146
- .if(!schema.required.has(property.name), (builder) => builder.appendIf(!property.schema.nullable, '?').append(' = null')), { separator: ',\n' }), { multiline: true })
146
+ .if(!schema.required.has(property.name), (builder) => builder.appendIf(!property.schema.nullable, '?'))
147
+ .appendIf(property.schema.default !== undefined || !schema.required.has(property.name), ' = ', (builder) => this.generateDefaultValue(ctx, builder, property.schema)), { separator: ',\n' }), { multiline: true })
147
148
  .if(inheritedSchemas.length > 0, (builder) => builder
148
149
  .append(' : ')
149
150
  .forEach(inheritedSchemas, (builder, schema) => this.generateTypeUsage(ctx, builder, schema), {
@@ -172,6 +173,36 @@ export class DefaultKotlinModelGenerator extends KotlinFileGenerator {
172
173
  .append(' ')
173
174
  .parenthesize('{}', 'return this.additionalProperties', { multiline: true })), { multiline: true });
174
175
  }
176
+ generateDefaultValue(ctx, builder, schema) {
177
+ if (schema.default === null || schema.default === undefined) {
178
+ builder.append('null');
179
+ }
180
+ else {
181
+ switch (schema.kind) {
182
+ case 'boolean':
183
+ builder.append(Boolean(schema.default) || String(schema.default).toLowerCase() === 'true' ? 'true' : 'false');
184
+ break;
185
+ case 'integer':
186
+ case 'number':
187
+ builder.append(String(schema.default));
188
+ break;
189
+ case 'string':
190
+ if (schema.enum && schema.enum.length > 0) {
191
+ builder
192
+ .append((builder) => this.generateTypeUsage(ctx, builder, schema))
193
+ .append('.')
194
+ .append(toCasing(String(schema.default), ctx.config.enumValueNameCasing));
195
+ }
196
+ else {
197
+ builder.append(this.toStringLiteral(ctx, String(schema.default)));
198
+ }
199
+ break;
200
+ default:
201
+ builder.append('null');
202
+ break;
203
+ }
204
+ }
205
+ }
175
206
  generateObjectDataClassParameterAnnotations(ctx, builder, schema, property) {
176
207
  this.generatePropertyValidationAnnotations(ctx, builder, schema, property);
177
208
  this.generatePropertySchemaAnnotation(ctx, builder, schema, property);
@@ -252,7 +283,7 @@ export class DefaultKotlinModelGenerator extends KotlinFileGenerator {
252
283
  }
253
284
  break;
254
285
  case 'null':
255
- builder.append('null');
286
+ builder.append('Nothing');
256
287
  break;
257
288
  case 'unknown':
258
289
  builder.append('Any');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goast/kotlin",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "repository": "https://github.com/MaSch0212/goast.git",
5
5
  "author": {
6
6
  "name": "Marc Schmidt (MaSch0212)",
@@ -12,7 +12,7 @@
12
12
  "fs-extra": "^11.1.1",
13
13
  "node-fetch": "^2.6.11",
14
14
  "yaml": "^2.3.1",
15
- "@goast/core": "0.1.0",
15
+ "@goast/core": "0.1.1",
16
16
  "tslib": "^2.3.0"
17
17
  },
18
18
  "module": "./esm/index.js",
@@ -19,6 +19,7 @@ export declare class DefaultKotlinModelGenerator extends KotlinFileGenerator<Con
19
19
  protected generateObjectInterfaceSignature(ctx: Context, builder: Builder, schema: ApiSchema<'object'>): void;
20
20
  protected generateObjectInterfaceMembers(ctx: Context, builder: Builder, schema: ApiSchema<'object'>): void;
21
21
  protected generateObjectDataClass(ctx: Context, builder: Builder, schema: ApiSchema<'object'>): void;
22
+ protected generateDefaultValue(ctx: Context, builder: Builder, schema: ApiSchema): void;
22
23
  protected generateObjectDataClassParameterAnnotations(ctx: Context, builder: Builder, schema: ApiSchema, property: ApiSchemaProperty): void;
23
24
  protected generatePropertyValidationAnnotations(ctx: Context, builder: Builder, schema: ApiSchema, property: ApiSchemaProperty): void;
24
25
  protected generatePropertySchemaAnnotation(ctx: Context, builder: Builder, schema: ApiSchema, property: ApiSchemaProperty): void;