This commit is contained in:
Kurt Hutten IrevDev
2022-11-27 14:07:03 +11:00
parent 6f24e75f92
commit 1831aad321
5 changed files with 34 additions and 31 deletions

View File

@ -108,7 +108,11 @@ export const executor = (
return _programMemory.root[arg.name]
}
})
if ('lineTo' === functionName || 'close' === functionName || 'base' === functionName) {
if (
'lineTo' === functionName ||
'close' === functionName ||
'base' === functionName
) {
if (options.bodyType !== 'sketch') {
throw new Error(
`Cannot call ${functionName} outside of a sketch declaration`

View File

@ -50,14 +50,13 @@ log(5, myVar)`
expect(recasted).toBe(code.trim())
})
it('function declaration with call', () => {
const code =
[
'fn funcN = (a, b) => {',
' return a + b',
'}',
'const theVar = 60',
'const magicNum = funcN(9, theVar)',
].join('\n')
const code = [
'fn funcN = (a, b) => {',
' return a + b',
'}',
'const theVar = 60',
'const magicNum = funcN(9, theVar)',
].join('\n')
const { ast } = code2ast(code)
const recasted = recast(ast)
expect(recasted).toBe(code.trim())

View File

@ -113,6 +113,6 @@ function recastSketchExpression(
indentation: string
): string {
return `{
${recast(expression.body, '', indentation + ' ')}
${recast(expression.body, '', indentation + ' ')}
}`
}

View File

@ -92,28 +92,29 @@ function getCoordsFromPaths(paths: Path[], index = 0): Coords2d {
}
export const sketchFns = {
base: (programMemory: ProgramMemory,
base: (
programMemory: ProgramMemory,
name: string = '',
sourceRange: SourceRange,
...args: any[]
): PathReturn => {
if(programMemory._sketch?.length > 0) {
throw new Error('Base can only be called once')
}
const [x, y] = args as [number, number]
let from: [number, number] = [x, y]
const newPath: Path = {
type: 'base',
from,
sourceRange,
}
return {
programMemory: {
...programMemory,
_sketch: [...(programMemory?._sketch || []), newPath],
},
currentPath: newPath,
}
): PathReturn => {
if (programMemory._sketch?.length > 0) {
throw new Error('Base can only be called once')
}
const [x, y] = args as [number, number]
let from: [number, number] = [x, y]
const newPath: Path = {
type: 'base',
from,
sourceRange,
}
return {
programMemory: {
...programMemory,
_sketch: [...(programMemory?._sketch || []), newPath],
},
currentPath: newPath,
}
},
close: (
programMemory: ProgramMemory,

View File

@ -299,7 +299,6 @@ describe('testing lexer', () => {
"whitespace ' ' from 6 to 7",
"number '2.5' from 7 to 10",
])
})
})