git @ Cat's Eye Technologies Burro / d20e093
Add Haste build. Chris Pressey 5 years ago
4 changed file(s) with 78 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
1010
1111 # For this to work, you need hastec installed.
1212
13 if command -v hastec_patience_my_pet >/dev/null 2>&1; then
13 if command -v hastec >/dev/null 2>&1; then
1414 echo "building $PROG.js with hastec"
1515 (cd src && hastec --make HasteMain.hs -o ../demo/$PROG.js)
1616 else
0 function launch(config) {
1 config.container.innerHTML = `
2 <textarea id="prog" rows="10" cols="80"></textarea>
3 <div id="control-panel"></div>
4 <div><button id="run-button">Run</button></div>
5 <pre id="result"></pre>
6 `;
7
8 function makeSelect(container, labelText, optionsArray, fun) {
9 var label = document.createElement('label');
10 label.innerHTML = labelText;
11 container.appendChild(label);
12 var select = document.createElement("select");
13 for (var i = 0; i < optionsArray.length; i++) {
14 var op = document.createElement("option");
15 op.text = optionsArray[i].filename;
16 op.value = optionsArray[i].contents;
17 select.options.add(op);
18 }
19 select.onchange = function(e) {
20 fun(optionsArray[select.selectedIndex]);
21 };
22 select.selectedIndex = 0;
23 label.appendChild(select);
24 return select;
25 };
26
27 function selectOptionByText(selectElem, text) {
28 var optElem;
29 for (var i = 0; optElem = selectElem.options[i]; i++) {
30 if (optElem.text === text) {
31 selectElem.selectedIndex = i;
32 selectElem.dispatchEvent(new Event('change'));
33 return;
34 }
35 }
36 }
37
38 var controlPanel = document.getElementById('control-panel');
39 var select = makeSelect(controlPanel, "example program:", examplePrograms, function(option) {
40 document.getElementById('prog').value = option.contents;
41 });
42 selectOptionByText(select, "hello.burro");
43 }
44
45 launch({ container: document.getElementById('installation') });
0 <!DOCTYPE html>
1 <head>
2 <meta charset="utf-8">
3 <title>Burro</title>
4 </head>
5 <body>
6
7 <h1>Burro</h1>
8
9 <p>(Burro.lhs compiled to .js by <code>hastec</code>, running in HTML5 document)</p>
10
11 <div id="installation"></div>
12
13 <script src="../eg/examplePrograms.jsonp.js"></script>
14 <script src="burro-hastec-launcher.js"></script>
15 <script src="burro.js"></script>
16 </body>
0 module Main where
1
2 import Haste.DOM (withElems, getValue, setProp)
3 import Haste.Events (onEvent, MouseEvent(Click))
4
5 import Language.Burro (interpret)
6
7
8 main = withElems ["prog", "result", "run-button"] driver
9
10 driver [progElem, resultElem, runButtonElem] =
11 onEvent runButtonElem Click $ \_ -> do
12 Just prog <- getValue progElem
13 setProp resultElem "textContent" $ show $ interpret prog