KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up). Before vs. after: `angledLine({angle = 90, length = 3}, %, $edge)` => `angledLine(angle = 90, length = 3, tag = $edge)` `angledLineOfXLength({angle = 90, length = 3}, %, $edge)` => `angledLine(angle = 90, lengthX = 3, tag = $edge)` `angledLineOfYLength({angle = 90, length = 3}, %, $edge)` => `angledLine(angle = 90, lengthY = 3, tag = $edge)` `angledLineToX({angle = 90, length = 3}, %, $edge)` => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)` `angledLineToY({angle = 90, length = 3}, %, $edge)` => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
This commit is contained in:
32
src/unitTestUtils.ts
Normal file
32
src/unitTestUtils.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import {
|
||||
ARG_ANGLE,
|
||||
ARG_END_ABSOLUTE_X,
|
||||
ARG_END_ABSOLUTE_Y,
|
||||
ARG_LENGTH,
|
||||
ARG_LENGTH_X,
|
||||
ARG_LENGTH_Y,
|
||||
} from '@src/lang/constants'
|
||||
import { createArrayExpression } from '@src/lang/create'
|
||||
import { findKwArg, findKwArgAny } from '@src/lang/util'
|
||||
import type { CallExpressionKw, Expr } from '@src/lang/wasm'
|
||||
|
||||
/**
|
||||
Find the angle and some sort of length parameter from an angledLine-ish call.
|
||||
E.g. finds the (angle, length) in angledLine or the (angle, endAbsoluteX) in angledLineToX
|
||||
*/
|
||||
export function findAngleLengthPair(call: CallExpressionKw): Expr | undefined {
|
||||
const angle = findKwArg(ARG_ANGLE, call)
|
||||
const lengthLike = findKwArgAny(
|
||||
[
|
||||
ARG_LENGTH,
|
||||
ARG_LENGTH_X,
|
||||
ARG_LENGTH_Y,
|
||||
ARG_END_ABSOLUTE_X,
|
||||
ARG_END_ABSOLUTE_Y,
|
||||
],
|
||||
call
|
||||
)
|
||||
if (angle && lengthLike) {
|
||||
return createArrayExpression([angle, lengthLike])
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user