TODO: description
TODO
TODO
Note that these are all installed during setup.
purescript
spago
parcel
To get an instance of shape-lang-purs
built from scratch, do the following:
git clone https://github.com/Riib11/shape-lang-purs.git
cd shape-lang-purs
npm install
npm run build
npm run build ; npm run bundle ; npm run serve
Build the purescript spago
project via:
npm run build
To use sourcemaps, first set the environment variable
export NODE_OPTIONS=--enable-source-maps
or whatever windows uses for environment variable syntax.
Serve the app via parcel
using:
npm run serve
(For testing changes)
- Set
module_
to the correcttest*
inLanguage.Shape.Stlc.Initial
. For example,test1
. npm run build
npm run serve
- Open the webapp. Perform the changes you want until a bug or whatever else
- In the console, copy the log that appears directly after "===[ changeHistory ]===" logging header. You now have the
ChangeHistory
, as a string, that results in the current state. - In
Test.ChangeHistory
, add a new element to the array definingchangeHistories
. The format is<label> /\ <initial module> /\ <change history>
. So, pick a<label>
, and use the sameInitial.test*
that you specified in step 1. For the<change history>
paste the text you copied in step 5. - In
Test.Main
, change themain
function has a lineChangeHistory.runChangeHistory $ Map.lookup' <label> ChangeHistory.changeHistories
. Change the<label>
> to the one you specified in step 6. 7.5. For stacktraces: On windows, type $Env:NODE_OPTIONS = "--enable-source-maps". On unix, type... 7.6. Also for stacktraces: Runnpm run build
- Run
npm run test
in the terminal. This should output some logging information corresponding to running your change history. - Add loggers to
Test.ChangeHistory.runChangeHistory
if you want to print out special information in your test.
To deploy the GitHub pages powered web-app, run the following commands:
git fetch
git pull
npm install
npm run deploy
git add ./docs/
git commit -m"deploy"
git push
The following are some projects that have some relevant overlaping goals with Shape:
- Hazel
- a type-sensitive structural editor built on gradual typing
- Alfa
- Meta Programming System (MPS)
- a framework for defining DSLs and automatically generating a UI
- user study: https://dl.acm.org/doi/pdf/10.1145/2950290.2950315
- Lambdu
- Scratch
- UI design for a structural editor
- aimed at teaching programming
- awesome-structure-editors
- collection of structure editors
- Tylr
- the first tile-based editor
- Holbert
- mathematical notation