Elm reformatting and demo HTML page.

This commit is contained in:
sforman 2023-09-23 09:37:43 -07:00
parent 16cc0e5769
commit 20b5f05d29
4 changed files with 7326 additions and 21 deletions

View File

@ -0,0 +1,4 @@
./demo/Joy.js: src/*.elm
elm make --output=./demo/Joy.js src/Main.elm

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Thun Demo</title>
<meta charset="utf-8">
<script src="Joy.js"></script>
</head>
<body>
<h1>Thun Demo</h1>
<div id="joy_interpreter_hull">
<h3>Thun Interpreter</h3>
<p>This is an interpreter for the <a href="https://git.sr.ht/~sforman/Thun/tree/trunk/item/docs/source/Thun.md">Thun</a> dialect of the <a href="https://en.wikipedia.org/wiki/Joy_%28programming_language%29">Joy</a> language. Enter a Thun expression in the text input below and the result of evaluation will be displayed beneath it.</p>
<div id="joy_interpreter"></div>
</div>
<script>var joy_interpreter = Elm.Main.init({node: document.getElementById('joy_interpreter')});</script>
</body>
</html>

View File

@ -1,13 +1,13 @@
module Main exposing (..)
import Dict
import Browser
import Html exposing (Html, Attribute, div, input, text)
import Dict
import Html exposing (Attribute, Html, div, input, text)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)
import Joy exposing (JoyDict, doit, initialize)
import Joy exposing (doit, JoyDict, initialize)
-- MAIN
@ -29,7 +29,10 @@ type alias Model =
init : Model
init =
{ content = "", evaluated = "", dictionary = initialize Dict.empty }
{ content = ""
, evaluated = ""
, dictionary = initialize Dict.empty
}
@ -46,9 +49,13 @@ update msg model =
Change newContent ->
case doit newContent model.dictionary of
Err err ->
{ model | content = newContent, evaluated = err}
Ok (output, dict) ->
{ content = newContent, evaluated = output, dictionary = dict }
{ model | content = newContent, evaluated = err }
Ok ( output, dict ) ->
{ content = newContent
, evaluated = output
, dictionary = dict
}
@ -57,8 +64,12 @@ update msg model =
view : Model -> Html Msg
view model =
div []
[ input [ placeholder "Text to reverse", value model.content, onInput Change ] []
div [ attribute "id" "joy_interpreter" ]
[ input
[ placeholder "Thun expression to evaluate"
, value model.content
, onInput Change
]
[]
, div [] [ text model.evaluated ]
]