From 081cf5f17c01b7b0ee78596646eb79aa149d155f Mon Sep 17 00:00:00 2001 From: Adam Chalmers Date: Mon, 28 Apr 2025 11:46:19 -0500 Subject: [PATCH] Migrate more functions to use kwargs --- src/lang/constants.ts | 2 ++ src/lang/std/sketchcombos.test.ts | 8 +++---- src/lang/std/sketchcombos.ts | 36 +++++++++++++++++++++---------- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/lang/constants.ts b/src/lang/constants.ts index 64fd95449..08c9d6b2b 100644 --- a/src/lang/constants.ts +++ b/src/lang/constants.ts @@ -16,3 +16,5 @@ export const ARG_END_ABSOLUTE_Y = 'endAbsoluteY' export const ARG_INTERSECT_TAG = 'intersectTag' export const ARG_INTERIOR_ABSOLUTE = 'interiorAbsolute' export const ARG_AT = 'at' +export const ARG_LEG = 'leg' +export const ARG_HYPOTENUSE = 'hypotenuse' diff --git a/src/lang/std/sketchcombos.test.ts b/src/lang/std/sketchcombos.test.ts index 132ca93b8..b5bfd5e9e 100644 --- a/src/lang/std/sketchcombos.test.ts +++ b/src/lang/std/sketchcombos.test.ts @@ -318,8 +318,8 @@ part001 = startSketchOn(XY) |> angledLine(angle = myVar, length = segLen(seg01)) // ln-use segLen for second arg |> angledLine(angle = 45, length = segLen(seg01)) // ln-segLen again |> angledLine(angle = 54, length = segLen(seg01)) // ln-should be transformed to angledLine - |> angledLine(angle = legAngX(segLen(seg01), myVar), lengthX = min([segLen(seg01), myVar])) // ln-should use legAngX to calculate angle - |> angledLine(angle = 180 + legAngX(segLen(seg01), myVar), lengthX = min([segLen(seg01), myVar])) // ln-same as above but should have + 180 to match original quadrant + |> angledLine(angle = legAngX(hypotenuse = segLen(seg01), leg = myVar), lengthX = min([segLen(seg01), myVar])) // ln-should use legAngX to calculate angle + |> angledLine(angle = 180 + legAngX(hypotenuse = segLen(seg01), leg = myVar), lengthX = min([segLen(seg01), myVar])) // ln-same as above but should have + 180 to match original quadrant |> line(end = [ legLen(hypotenuse = segLen(seg01), leg = myVar), min([segLen(seg01), myVar]) @@ -330,8 +330,8 @@ part001 = startSketchOn(XY) ]) // ln-negative legLen yRelative |> angledLine(angle = 58, length = segLen(seg01)) // ln-angledLineOfYLength-free should become angledLine |> angledLine(angle = myAng, length = segLen(seg01)) // ln-angledLineOfYLength-angle should become angledLine - |> angledLine(angle = legAngY(segLen(seg01), myVar), lengthX = min([segLen(seg01), myVar])) // ln-angledLineOfYLength-yRelative use legAngY - |> angledLine(angle = 270 + legAngY(segLen(seg01), myVar), lengthX = min([segLen(seg01), myVar])) // ln-angledLineOfYLength-yRelative with angle > 90 use binExp + |> angledLine(angle = legAngY(hypotenuse = segLen(seg01), leg = myVar), lengthX = min([segLen(seg01), myVar])) // ln-angledLineOfYLength-yRelative use legAngY + |> angledLine(angle = 270 + legAngY(hypotenuse = segLen(seg01), leg = myVar), lengthX = min([segLen(seg01), myVar])) // ln-angledLineOfYLength-yRelative with angle > 90 use binExp |> xLine(length = segLen(seg01)) // ln-xLine-free should sub in segLen |> yLine(length = segLen(seg01)) // ln-yLine-free should sub in segLen |> xLine(length = segLen(seg01)) // ln-xLineTo-free should convert to xLine diff --git a/src/lang/std/sketchcombos.ts b/src/lang/std/sketchcombos.ts index 45b967437..4180f99c5 100644 --- a/src/lang/std/sketchcombos.ts +++ b/src/lang/std/sketchcombos.ts @@ -6,6 +6,8 @@ import { ARG_END, ARG_END_ABSOLUTE, ARG_END_ABSOLUTE_X, + ARG_LEG, + ARG_HYPOTENUSE, ARG_END_ABSOLUTE_Y, ARG_INTERSECT_TAG, ARG_LENGTH, @@ -473,9 +475,9 @@ const getMinAndSegAngVals = ( createArrayExpression([createSegLen(referenceSegName), varVal]), [] ) - const legAngle = createCallExpression(fnName, [ - createSegLen(referenceSegName), - varVal, + const legAngle = createCallExpressionStdLibKw(fnName, null, [ + createLabeledArg(ARG_HYPOTENUSE, createSegLen(referenceSegName)), + createLabeledArg(ARG_LEG, varVal), ]) return [minVal, legAngle] } @@ -2177,26 +2179,38 @@ export function transformAstSketchLines({ } function createSegLen(referenceSegName: string): BinaryPart { - return createCallExpression('segLen', [createLocalName(referenceSegName)]) + return createCallExpressionStdLibKw( + 'segLen', + createLocalName(referenceSegName), + [] + ) } function createSegAngle(referenceSegName: string): BinaryPart { - return createCallExpression('segAng', [createLocalName(referenceSegName)]) + return createCallExpressionStdLibKw( + 'segAng', + createLocalName(referenceSegName), + [] + ) } function createSegEnd( referenceSegName: string, isX: boolean -): Node { - return createCallExpression(isX ? 'segEndX' : 'segEndY', [ +): Node { + return createCallExpressionStdLibKw( + isX ? 'segEndX' : 'segEndY', createLocalName(referenceSegName), - ]) + [] + ) } -function createLastSeg(isX: boolean): Node { - return createCallExpression(isX ? 'lastSegX' : 'lastSegY', [ +function createLastSeg(isX: boolean): Node { + return createCallExpressionStdLibKw( + isX ? 'lastSegX' : 'lastSegY', createPipeSubstitution(), - ]) + [] + ) } export type ConstraintLevel = 'free' | 'partial' | 'full'