Add edit flow for Helix (#5394)

* WIP: Add edit flow for Helix
Fixes #5392

* Clean upp

* Add e2e test step
This commit is contained in:
Pierre Jacquier
2025-02-24 18:44:13 -05:00
committed by GitHub
parent 484da28374
commit d3e0625e8a
5 changed files with 212 additions and 10 deletions

View File

@ -717,6 +717,8 @@ export function addHelix({
radius,
axis,
length,
insertIndex,
variableName,
}: {
node: Node<Program>
revolutions: Expr
@ -725,9 +727,12 @@ export function addHelix({
radius: Expr
axis: string
length: Expr
insertIndex?: number
variableName?: string
}): { modifiedAst: Node<Program>; pathToNode: PathToNode } {
const modifiedAst = structuredClone(node)
const name = findUniqueName(node, KCL_DEFAULT_CONSTANT_PREFIXES.HELIX)
const name =
variableName ?? findUniqueName(node, KCL_DEFAULT_CONSTANT_PREFIXES.HELIX)
const variable = createVariableDeclaration(
name,
createCallExpressionStdLibKw(
@ -744,12 +749,20 @@ export function addHelix({
)
)
// TODO: figure out smart insertion than just appending at the end
const insertAt =
insertIndex !== undefined
? insertIndex
: modifiedAst.body.length
? modifiedAst.body.length
: 0
modifiedAst.body.length
? modifiedAst.body.splice(insertAt, 0, variable)
: modifiedAst.body.push(variable)
const argIndex = 0
modifiedAst.body.push(variable)
const pathToNode: PathToNode = [
['body', ''],
[modifiedAst.body.length - 1, 'index'],
[insertAt, 'index'],
['declaration', 'VariableDeclaration'],
['init', 'VariableDeclarator'],
['arguments', 'CallExpressionKw'],