Commit Graph

22 Commits

Author SHA1 Message Date
6446601a67 Add equal-length constraints & implement UnaryExpressions (#35)
* add segLen help to lang std

* adding helpers functions to sketchConstraints

* update tokeniser tests because they were annoying me not being 100%

* compare async lexer with sync lexer instead

* add helper functions

* remove unneeded nesting

* update add ast modifier function for angledLine

* initial equal ast modification

It adds a tag to the primary line, and converts any secondary lines to angledLine, but doesn't reference the taged/primary line yet

* Update fn call with refernce to previous line using segLen

* add test for giveSketchFnCallTag

* fix excutor bug, executing call expression in array expression

* fix small issue in executor

* add CallExpressions to BinaryExpressions

* add unary Expressions

* tweaks to unaryExpression logic

* add recasting for unaryExpressions and CallExpressions in BinaryExpressions

* ensure pipe substitution info is passed down to unary expressions and others

* allow binary expressions in function argumentns

* inital setup, new way of organising sketch fn transforms

Starting with equal length

* overhaul equalLength button

* add equal length support for angledLine

* line with one variable supports signed legLength

* fix indentation when recasting long arrayExpressions in a pipeExpression

* improve modifyAst consision

* further modify ast tidy

* equalLength transfroms far angledLineOfXLength

* add transforms for line-yRelative

* add equal constraint for angledLineOfYLength

* quick test fix

* add equal length constrain transforms for lineTo

* add equal length constraints for angledLineToX

* add equalLength constraints for angledLineToY

* test tidy

* setup new vertical-horizontal constraints

* Add equal Length constraints for vertical/horizontal lines

* migrate old tests, and refactor callback tag

* tweaks and refactor horzVert component

* fix leg len with small negative leg length
2023-03-02 21:19:11 +11:00
cb8e97eceb 🚨🦀 Setup Rust -> WASM 🦀🚨 (#28)
* initial tokeniser to wasm port

* fix tests

* add wasm to build script

* add rust tools to test action

* tweaks

* maybe tests will be happy

* tweak simple server

* trying to get tests to pass

* it pget vercel to build

* tidy up

* clean up rust files

* change lexer to use recursion so that it's consistent with the rest of the interpreter

* clean up nokeniser further

* rename variables

* readme typos

* run rust tests in CI

* follow clippy's advice

* more clippy clean up

* setup up proper serialzation to js-land

* tidy init promise in tests
2023-02-21 09:42:41 +11:00
594d55576a functional sketch working (#26)
* functional sketch working

With old sketch block still there

* get all version of lines working with add line and update line

* remove old ui state types

* some clean up

* rename some things

* add todo for multi cursor

* shorten useStore repitition

* small type improvement

* big overhaul to group sketch function and they ast modifying helpers together

* unneeded tweak

* ruthlessly rip out sketch logic

* clean up path keyword

* getting sketch on face working again with all the new sketch line types

* add a bunch of tests and re-arrage file structure
2023-02-12 10:56:45 +11:00
e37f68424b Improved math expressions (#6)
* Improved math expressions

Things are in a better state, + - / * work now for basic const var = 5 <operator> 1

Though the current method I'm using to make the ast isn't really going to work for dealing with precedence rules so some refactoring is needed going forward

* get complex math expressions working with precedence including parans

Node that identifiers are working, call expressions are not, that's a TODO
/ * % + - are working both other things like exponent and logical operators are also not working.
Recasting is the most important thing to implement next

* get recasting working for nested binary expressions

* clean up
2023-01-21 21:23:01 +11:00
9ad6b946c0 massive overhall to how program memory works and how artifacts their metada are rendered 2023-01-08 16:37:31 +11:00
a1f844b0b1 add member expression 2023-01-03 19:41:27 +11:00
d2a4bb7851 refactor makeValue and makeDeclatator to reduce code duplication 2023-01-02 12:20:32 +11:00
dbf8a993e5 add object declarations 2023-01-01 21:48:30 +11:00
3d6f5982c2 add array declarations 2022-12-30 21:53:50 +11:00
f6c4250947 add start of extrude 2022-12-30 14:09:07 +11:00
034c903672 add the ability to edit sketch later 2022-12-06 05:40:05 +11:00
b114d61053 fix execution of piped sketches 2022-12-04 08:16:04 +11:00
f0076309ef pipe working for everything except sketches 2022-12-03 22:50:46 +11:00
ade1e9fb82 start of code gen from direct manipulation 2022-11-28 09:37:46 +11:00
022788b2a3 add base sketch function to language 2022-11-26 21:03:38 +11:00
48e59ac710 remove semi-colons 2022-11-26 08:38:57 +11:00
5ce89d83fc sketch code to 3d scene initial connection working 2022-11-23 21:28:38 +11:00
efea712a2f add preliminay 'show' function 2022-11-21 09:16:24 +11:00
701cb2d48f finish sketch expressions with path calls within 2022-11-21 08:57:44 +11:00
e5a527b519 make test more meme worthy 2022-11-20 09:57:02 +11:00
082730bb2e Refactor executor to make it able to call recursively
and Add variable declarator using callExpression AST test
2022-11-20 09:41:21 +11:00
c3b415d1f2 inital basical executor 2022-11-16 10:08:57 +11:00