-
-
Save jinjor/bf37f10713028a1d9ef547724bcf5532 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Html exposing (..) | |
import Html.App exposing (..) | |
import Html.Events exposing (..) | |
import Json.Decode exposing (Decoder, customDecoder, string) | |
main = | |
beginnerProgram { model = English, view = view, update = update } | |
{-| Currently supported languages. -} | |
type Language | |
= English | |
| Japanese | |
{-| A JSON decoder of Language. -} | |
languageDecoder : Decoder Language | |
languageDecoder = | |
customDecoder targetValue fromStringLanguage | |
fromStringLanguage : String -> Result String Language | |
fromStringLanguage str = | |
case str of | |
"English" -> Ok English | |
"Japanese" -> Ok Japanese | |
other -> Err ("Invalid language: " ++ other) | |
-- MODEL | |
type alias Model = Language | |
-- UPDATE | |
type Msg | |
= Change Language | |
update : Msg -> Model -> Model | |
update msg model = | |
case msg of | |
Change language -> language | |
-- VIEW | |
view : Model -> Html Msg | |
view model = | |
Html.form [] | |
[ select [ on "change" <| Json.Decode.map Change languageDecoder ] | |
(List.map (viewOption model) ["English", "Japanese"]) | |
, text (toString model) | |
] | |
viewOption : Model -> String -> Html Msg | |
viewOption model s = | |
option [] [ text s ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment