fork of hey-api/openapi-ts because I need some additional things
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.TupleExpression>);
9
10export class TuplePyDsl extends Mixed {
11 readonly '~dsl' = 'TuplePyDsl';
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.TupleExpression {
38 const astElements = this._elements.map((el) => this.$node(el) as py.Expression);
39 return py.factory.createTupleExpression(astElements);
40 }
41}