module Chiasma.Data.Direction where

import Prelude hiding (Down, Left, Right)

import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs))

data Direction =
  Up
  |
  Down
  |
  Left
  |
  Right
  deriving stock (Direction -> Direction -> Bool
(Direction -> Direction -> Bool)
-> (Direction -> Direction -> Bool) -> Eq Direction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Direction -> Direction -> Bool
$c/= :: Direction -> Direction -> Bool
== :: Direction -> Direction -> Bool
$c== :: Direction -> Direction -> Bool
Eq, Int -> Direction -> ShowS
[Direction] -> ShowS
Direction -> String
(Int -> Direction -> ShowS)
-> (Direction -> String)
-> ([Direction] -> ShowS)
-> Show Direction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Direction] -> ShowS
$cshowList :: [Direction] -> ShowS
show :: Direction -> String
$cshow :: Direction -> String
showsPrec :: Int -> Direction -> ShowS
$cshowsPrec :: Int -> Direction -> ShowS
Show)

instance CmdArgs Direction where
  cmdArgs :: Direction -> [Text]
cmdArgs = \case
    Direction
Up -> [Item [Text]
"-U"]
    Direction
Down -> [Item [Text]
"-D"]
    Direction
Left -> [Item [Text]
"-L"]
    Direction
Right -> [Item [Text]
"-R"]