Add support for editing the meta rules
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
parent
535c714b47
commit
abd6a848f8
12
src/Main.elm
12
src/Main.elm
|
@ -18,12 +18,14 @@ import Tuple
|
||||||
|
|
||||||
type Tab
|
type Tab
|
||||||
= Editor
|
= Editor
|
||||||
|
| MetaEditor
|
||||||
| Rendered
|
| Rendered
|
||||||
|
|
||||||
tabEq : Tab -> Tab -> Bool
|
tabEq : Tab -> Tab -> Bool
|
||||||
tabEq t1 t2 =
|
tabEq t1 t2 =
|
||||||
case (t1, t2) of
|
case (t1, t2) of
|
||||||
(Editor, Editor) -> True
|
(Editor, Editor) -> True
|
||||||
|
(MetaEditor, MetaEditor) -> True
|
||||||
(Rendered, Rendered) -> True
|
(Rendered, Rendered) -> True
|
||||||
_ -> False
|
_ -> False
|
||||||
|
|
||||||
|
@ -48,6 +50,7 @@ type alias Model =
|
||||||
type alias Flags = { renderRules: String, rules: String, query: String }
|
type alias Flags = { renderRules: String, rules: String, query: String }
|
||||||
type Msg
|
type Msg
|
||||||
= SetProgram String
|
= SetProgram String
|
||||||
|
| SetRenderProgram String
|
||||||
| SetQuery String
|
| SetQuery String
|
||||||
| SetTab Tab
|
| SetTab Tab
|
||||||
| SetEditMode EditMode
|
| SetEditMode EditMode
|
||||||
|
@ -59,10 +62,11 @@ viewSection : String -> Html Msg -> Html Msg
|
||||||
viewSection name content =
|
viewSection name content =
|
||||||
Html.div [ class "bergamot-section" ] [ Html.em [ class "bergamot-section-heading" ] [ Html.text name ], content ]
|
Html.div [ class "bergamot-section" ] [ Html.em [ class "bergamot-section-heading" ] [ Html.text name ], content ]
|
||||||
|
|
||||||
viewTab : Tab -> Html Msg -> Html Msg -> Html Msg
|
viewTab : Tab -> Html Msg -> Html Msg -> Html Msg -> Html Msg
|
||||||
viewTab tab editor rendered =
|
viewTab tab editor metaEditor rendered =
|
||||||
case tab of
|
case tab of
|
||||||
Editor -> editor
|
Editor -> editor
|
||||||
|
MetaEditor -> metaEditor
|
||||||
Rendered -> rendered
|
Rendered -> rendered
|
||||||
|
|
||||||
viewSelector : (a -> a -> Bool) -> (a -> Msg) -> a -> List (a, String) -> Html Msg
|
viewSelector : (a -> a -> Bool) -> (a -> Msg) -> a -> List (a, String) -> Html Msg
|
||||||
|
@ -129,12 +133,13 @@ viewProofTree mode renderProgs progs querys = viewSection "Proof Tree" <|
|
||||||
|
|
||||||
view : Model -> Html Msg
|
view : Model -> Html Msg
|
||||||
view m = Html.div [ class "bergamot-root" ]
|
view m = Html.div [ class "bergamot-root" ]
|
||||||
[ viewTabSelector m.tab [(Editor, "Rule Editor"), (Rendered, "Rendered Rules")]
|
[ viewTabSelector m.tab [(Editor, "Rule Editor"), (MetaEditor, "Meta Rule Editor"), (Rendered, "Rendered Rules")]
|
||||||
, viewEditModeSelector m.editMode [(Query, "Query"), (Syntax, "Language Term")]
|
, viewEditModeSelector m.editMode [(Query, "Query"), (Syntax, "Language Term")]
|
||||||
, viewSection "Query" <| Html.input [ type_ "text", onInput SetQuery, value m.query ] []
|
, viewSection "Query" <| Html.input [ type_ "text", onInput SetQuery, value m.query ] []
|
||||||
, viewProofTree m.editMode m.renderProgram m.program m.query
|
, viewProofTree m.editMode m.renderProgram m.program m.query
|
||||||
, viewTab m.tab
|
, viewTab m.tab
|
||||||
(viewSection "Rules" <| Html.textarea [ onInput SetProgram ] [ Html.text m.program ])
|
(viewSection "Rules" <| Html.textarea [ onInput SetProgram ] [ Html.text m.program ])
|
||||||
|
(viewSection "Meta Rules" <| Html.textarea [ onInput SetRenderProgram ] [ Html.text m.renderProgram ])
|
||||||
(Html.Lazy.lazy2 viewRules m.renderProgram m.program)
|
(Html.Lazy.lazy2 viewRules m.renderProgram m.program)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -142,6 +147,7 @@ update : Msg -> Model -> (Model, Cmd Msg)
|
||||||
update msg m =
|
update msg m =
|
||||||
case msg of
|
case msg of
|
||||||
SetProgram prog -> ({ m | program = prog }, Cmd.none)
|
SetProgram prog -> ({ m | program = prog }, Cmd.none)
|
||||||
|
SetRenderProgram prog -> ({ m | renderProgram = prog }, Cmd.none)
|
||||||
SetQuery query -> ({ m | query = query }, Cmd.none)
|
SetQuery query -> ({ m | query = query }, Cmd.none)
|
||||||
SetTab tab -> ({ m | tab = tab }, Cmd.none)
|
SetTab tab -> ({ m | tab = tab }, Cmd.none)
|
||||||
SetEditMode mode -> ({ m | editMode = mode }, Cmd.none)
|
SetEditMode mode -> ({ m | editMode = mode }, Cmd.none)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user