import Json.Decode exposing (Decoder, customDecoder, string)
{-| Currently supported languages. -}type Language = English | Japanese
{-| A JSON decoder of Language. -}languageDecoder : Decoder LanguagelanguageDecoder = customDecoder string fromStringLanguage
fromStringLanguage : String -> Result String LanguagefromStringLanguage 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 -> Modelupdate msg model = case msg of Change language -> language
-- VIEW
view : Model -> Html Msgview model = Html.form [] [ select [ on "change" <| Json.Decode.map Change languageDecoder ] (List.map (viewOption model) ["English", "Japanese"]) ]