@goast/kotlin 0.1.3 → 0.1.4

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,28 @@ 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
+ builder.append(this.toStringLiteral(ctx, String(schema.default)));
194
+ break;
195
+ default:
196
+ builder.append('null');
197
+ break;
198
+ }
199
+ }
200
+ }
178
201
  generateObjectDataClassParameterAnnotations(ctx, builder, schema, property) {
179
202
  this.generatePropertyValidationAnnotations(ctx, builder, schema, property);
180
203
  this.generatePropertySchemaAnnotation(ctx, builder, schema, property);
@@ -255,7 +278,7 @@ class DefaultKotlinModelGenerator extends file_generator_1.KotlinFileGenerator {
255
278
  }
256
279
  break;
257
280
  case 'null':
258
- builder.append('null');
281
+ builder.append('Nothing');
259
282
  break;
260
283
  case 'unknown':
261
284
  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,28 @@ 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
+ builder.append(this.toStringLiteral(ctx, String(schema.default)));
191
+ break;
192
+ default:
193
+ builder.append('null');
194
+ break;
195
+ }
196
+ }
197
+ }
175
198
  generateObjectDataClassParameterAnnotations(ctx, builder, schema, property) {
176
199
  this.generatePropertyValidationAnnotations(ctx, builder, schema, property);
177
200
  this.generatePropertySchemaAnnotation(ctx, builder, schema, property);
@@ -252,7 +275,7 @@ export class DefaultKotlinModelGenerator extends KotlinFileGenerator {
252
275
  }
253
276
  break;
254
277
  case 'null':
255
- builder.append('null');
278
+ builder.append('Nothing');
256
279
  break;
257
280
  case 'unknown':
258
281
  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.4",
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;