|
1 | 1 | import { JavaScriptRenderer } from '../JavaScriptRenderer'; |
2 | 2 |
|
3 | | -import { CommonModel, ClassPreset } from '../../../models'; |
4 | | -import { FormatHelpers } from '../../../helpers'; |
| 3 | +import { CommonModel, ClassPreset, PropertyType } from '../../../models'; |
| 4 | +import { DefaultPropertyNames, FormatHelpers, getUniquePropertyName } from '../../../helpers'; |
5 | 5 |
|
6 | 6 | /** |
7 | 7 | * Renderer for JavaScript's `class` type |
@@ -37,15 +37,31 @@ ${this.indent(this.renderBlock(content, 2))} |
37 | 37 | content.push(this.renderBlock([getter, setter])); |
38 | 38 | } |
39 | 39 |
|
| 40 | + if (this.model.additionalProperties !== undefined) { |
| 41 | + const propertyName = getUniquePropertyName(this.model, DefaultPropertyNames.additionalProperties); |
| 42 | + const getter = await this.runGetterPreset(propertyName, this.model.additionalProperties, PropertyType.additionalProperty); |
| 43 | + const setter = await this.runSetterPreset(propertyName, this.model.additionalProperties, PropertyType.additionalProperty); |
| 44 | + content.push(this.renderBlock([getter, setter])); |
| 45 | + } |
| 46 | + |
| 47 | + if (this.model.patternProperties !== undefined) { |
| 48 | + for (const [pattern, patternModel] of Object.entries(this.model.patternProperties)) { |
| 49 | + const propertyName = getUniquePropertyName(this.model, `${pattern}${DefaultPropertyNames.patternProperties}`); |
| 50 | + const getter = await this.runGetterPreset(propertyName, patternModel, PropertyType.patternProperties); |
| 51 | + const setter = await this.runSetterPreset(propertyName, patternModel, PropertyType.patternProperties); |
| 52 | + content.push(this.renderBlock([getter, setter])); |
| 53 | + } |
| 54 | + } |
| 55 | + |
40 | 56 | return this.renderBlock(content, 2); |
41 | 57 | } |
42 | 58 |
|
43 | | - runGetterPreset(propertyName: string, property: CommonModel): Promise<string> { |
44 | | - return this.runPreset('getter', { propertyName, property }); |
| 59 | + runGetterPreset(propertyName: string, property: CommonModel, type: PropertyType = PropertyType.property): Promise<string> { |
| 60 | + return this.runPreset('getter', { propertyName, property, type }); |
45 | 61 | } |
46 | 62 |
|
47 | | - runSetterPreset(propertyName: string, property: CommonModel): Promise<string> { |
48 | | - return this.runPreset('setter', { propertyName, property }); |
| 63 | + runSetterPreset(propertyName: string, property: CommonModel, type: PropertyType = PropertyType.property): Promise<string> { |
| 64 | + return this.runPreset('setter', { propertyName, property, type }); |
49 | 65 | } |
50 | 66 | } |
51 | 67 |
|
|
0 commit comments