fork of hey-api/openapi-ts because I need some additional things
at feat/skip-token 41 lines 1.1 kB view raw
1import type { AnalysisContext } from '@hey-api/codegen-core'; 2 3import { py } from '../../ts-python'; 4import type { MaybePyDsl } from '../base'; 5import { PyDsl } from '../base'; 6import { LayoutMixin } from '../mixins/layout'; 7 8const Mixed = LayoutMixin(PyDsl<py.SetExpression>); 9 10export class SetPyDsl extends Mixed { 11 readonly '~dsl' = 'SetPyDsl'; 12 13 protected _elements: Array<MaybePyDsl<py.Expression>> = []; 14 15 constructor(...elements: Array<MaybePyDsl<py.Expression>>) { 16 super(); 17 this._elements = elements; 18 } 19 20 override analyze(ctx: AnalysisContext): void { 21 super.analyze(ctx); 22 for (const el of this._elements) { 23 ctx.analyze(el); 24 } 25 } 26 27 element(expr: MaybePyDsl<py.Expression>): this { 28 this._elements.push(expr); 29 return this; 30 } 31 32 elements(...exprs: ReadonlyArray<MaybePyDsl<py.Expression>>): this { 33 this._elements.push(...exprs); 34 return this; 35 } 36 37 override toAst(): py.SetExpression { 38 const astElements = this._elements.map((el) => this.$node(el) as py.Expression); 39 return py.factory.createSetExpression(astElements); 40 } 41}