A live hosted version of this code can be found here. Everything runs client-side.
Full documentation of the language and constructs can be found here.
This project uses Scala 3.2.1 and Scala JS. We recommend installing with Coursier, which will also install SBT. You will also need NPM globally installed. To run the project, from the console:
sbt
> ~fastOptJS/webpack // Compiles to JS and watches for changes
Then, open index.html
in any browser. You will have to reload when changing scala sources. To reload automatically when sources change, run ./scripts/serve.sh
, which relies on the live-reload
package, installable via npm install -g live-reload
or yarn global add live-reload
. If live-reloading, access the file at localhost:4000
instead of directly.
-
js/src/main/scala/elodin
/dom
: DOM & SVG interaction library/opt
: Our CAD System/dsl
: Parser and AST definitionsmain.scala
: Root, demos, testseditor.scala
: UI & Integrationexecute.scala
: Language interpreterrender3d.scala
: Rendering with Three JS & state managementprograms.scala
: Example programs for the demostypes.scala
: Language type system and helpers
/three
: Context management for Three JSusage.scala
: Root file
-
shared/src/main/scala
/geometry
: geometric types supported in the kernel/opt
:kernel.scala
: Geoemtric coreoperations.scala
: Language operations with lineage logicqueries.scala
: Querying resolution implementationreference.scala
: Lineage data structurs
-
jvm/src/test/scala
: Miscellaneous tests