import type { AnalysisContext } from '@hey-api/codegen-core'; import { py } from '../../ts-python'; import type { MaybePyDsl } from '../base'; import { PyDsl } from '../base'; import { LayoutMixin } from '../mixins/layout'; const Mixed = LayoutMixin(PyDsl); export class SetPyDsl extends Mixed { readonly '~dsl' = 'SetPyDsl'; protected _elements: Array> = []; constructor(...elements: Array>) { super(); this._elements = elements; } override analyze(ctx: AnalysisContext): void { super.analyze(ctx); for (const el of this._elements) { ctx.analyze(el); } } element(expr: MaybePyDsl): this { this._elements.push(expr); return this; } elements(...exprs: ReadonlyArray>): this { this._elements.push(...exprs); return this; } override toAst(): py.SetExpression { const astElements = this._elements.map((el) => this.$node(el) as py.Expression); return py.factory.createSetExpression(astElements); } }