module Ribosome.Menu.Data.MenuAction where

import qualified Text.Show as Show (show)

import Ribosome.Menu.Data.MenuEvent (QuitReason)
import Ribosome.Menu.Prompt.Data.Prompt (Prompt)

data MenuAction m a =
  Quit (QuitReason m a)
  |
  Continue
  |
  Execute (m ())
  |
  Render Bool
  |
  UpdatePrompt Prompt

instance Show (MenuAction m a) where
  show :: MenuAction m a -> String
show (Quit QuitReason m a
r) =
    String
"Quit(" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> QuitReason m a -> String
forall b a. (Show a, IsString b) => a -> b
show QuitReason m a
r String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"
  show MenuAction m a
Continue =
    String
"Continue"
  show (Execute m ()
_) =
    String
"Execute"
  show (Render Bool
changed) =
    String
"Render(" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Bool -> String
forall b a. (Show a, IsString b) => a -> b
show Bool
changed String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"
  show (UpdatePrompt Prompt
prompt) =
    String
"UpdatePrompt(" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Prompt -> String
forall b a. (Show a, IsString b) => a -> b
show Prompt
prompt String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"