module Chiasma.Data.SplitParams where import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), flag1, optionArgs) import Chiasma.Data.Axis (Axis) import Chiasma.Data.Target (Target (Current), formatTarget) data SplitSize = Units Int | Percentage Int deriving stock (SplitSize -> SplitSize -> Bool (SplitSize -> SplitSize -> Bool) -> (SplitSize -> SplitSize -> Bool) -> Eq SplitSize forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SplitSize -> SplitSize -> Bool $c/= :: SplitSize -> SplitSize -> Bool == :: SplitSize -> SplitSize -> Bool $c== :: SplitSize -> SplitSize -> Bool Eq, Int -> SplitSize -> ShowS [SplitSize] -> ShowS SplitSize -> String (Int -> SplitSize -> ShowS) -> (SplitSize -> String) -> ([SplitSize] -> ShowS) -> Show SplitSize forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [SplitSize] -> ShowS $cshowList :: [SplitSize] -> ShowS show :: SplitSize -> String $cshow :: SplitSize -> String showsPrec :: Int -> SplitSize -> ShowS $cshowsPrec :: Int -> SplitSize -> ShowS Show) instance CmdArgs SplitSize where cmdArgs :: SplitSize -> [Text] cmdArgs = \case Units Int n -> [Item [Text] "-l", Int -> Text forall b a. (Show a, IsString b) => a -> b show Int n] Percentage Int n -> [Item [Text] "-p", Int -> Text forall b a. (Show a, IsString b) => a -> b show Int n] data SplitWindowParams = SplitWindowParams { SplitWindowParams -> Maybe Axis axis :: Maybe Axis, SplitWindowParams -> Maybe SplitSize size :: Maybe SplitSize, SplitWindowParams -> Bool before :: Bool, SplitWindowParams -> Bool fullSize :: Bool, SplitWindowParams -> Bool readStdin :: Bool } deriving stock (SplitWindowParams -> SplitWindowParams -> Bool (SplitWindowParams -> SplitWindowParams -> Bool) -> (SplitWindowParams -> SplitWindowParams -> Bool) -> Eq SplitWindowParams forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SplitWindowParams -> SplitWindowParams -> Bool $c/= :: SplitWindowParams -> SplitWindowParams -> Bool == :: SplitWindowParams -> SplitWindowParams -> Bool $c== :: SplitWindowParams -> SplitWindowParams -> Bool Eq, Int -> SplitWindowParams -> ShowS [SplitWindowParams] -> ShowS SplitWindowParams -> String (Int -> SplitWindowParams -> ShowS) -> (SplitWindowParams -> String) -> ([SplitWindowParams] -> ShowS) -> Show SplitWindowParams forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [SplitWindowParams] -> ShowS $cshowList :: [SplitWindowParams] -> ShowS show :: SplitWindowParams -> String $cshow :: SplitWindowParams -> String showsPrec :: Int -> SplitWindowParams -> ShowS $cshowsPrec :: Int -> SplitWindowParams -> ShowS Show) instance Default SplitWindowParams where def :: SplitWindowParams def = SplitWindowParams :: Maybe Axis -> Maybe SplitSize -> Bool -> Bool -> Bool -> SplitWindowParams SplitWindowParams { $sel:axis:SplitWindowParams :: Maybe Axis axis = Maybe Axis forall a. Maybe a Nothing, $sel:size:SplitWindowParams :: Maybe SplitSize size = Maybe SplitSize forall a. Maybe a Nothing, $sel:before:SplitWindowParams :: Bool before = Bool False, $sel:fullSize:SplitWindowParams :: Bool fullSize = Bool False, $sel:readStdin:SplitWindowParams :: Bool readStdin = Bool False } instance CmdArgs SplitWindowParams where cmdArgs :: SplitWindowParams -> [Text] cmdArgs SplitWindowParams {Bool Maybe Axis Maybe SplitSize readStdin :: Bool fullSize :: Bool before :: Bool size :: Maybe SplitSize axis :: Maybe Axis $sel:readStdin:SplitWindowParams :: SplitWindowParams -> Bool $sel:fullSize:SplitWindowParams :: SplitWindowParams -> Bool $sel:before:SplitWindowParams :: SplitWindowParams -> Bool $sel:size:SplitWindowParams :: SplitWindowParams -> Maybe SplitSize $sel:axis:SplitWindowParams :: SplitWindowParams -> Maybe Axis ..} = Maybe Axis -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe Axis axis [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Maybe SplitSize -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe SplitSize size [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-b" Bool before [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-f" Bool fullSize [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-K" Bool readStdin data JoinPaneParams = JoinPaneParams { JoinPaneParams -> Maybe Axis axis :: Maybe Axis, JoinPaneParams -> Maybe SplitSize size :: Maybe SplitSize, JoinPaneParams -> Bool before :: Bool, JoinPaneParams -> Bool detach :: Bool, JoinPaneParams -> Maybe Target source :: Maybe Target, JoinPaneParams -> Target target :: Target } deriving stock (JoinPaneParams -> JoinPaneParams -> Bool (JoinPaneParams -> JoinPaneParams -> Bool) -> (JoinPaneParams -> JoinPaneParams -> Bool) -> Eq JoinPaneParams forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: JoinPaneParams -> JoinPaneParams -> Bool $c/= :: JoinPaneParams -> JoinPaneParams -> Bool == :: JoinPaneParams -> JoinPaneParams -> Bool $c== :: JoinPaneParams -> JoinPaneParams -> Bool Eq, Int -> JoinPaneParams -> ShowS [JoinPaneParams] -> ShowS JoinPaneParams -> String (Int -> JoinPaneParams -> ShowS) -> (JoinPaneParams -> String) -> ([JoinPaneParams] -> ShowS) -> Show JoinPaneParams forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [JoinPaneParams] -> ShowS $cshowList :: [JoinPaneParams] -> ShowS show :: JoinPaneParams -> String $cshow :: JoinPaneParams -> String showsPrec :: Int -> JoinPaneParams -> ShowS $cshowsPrec :: Int -> JoinPaneParams -> ShowS Show) instance Default JoinPaneParams where def :: JoinPaneParams def = JoinPaneParams :: Maybe Axis -> Maybe SplitSize -> Bool -> Bool -> Maybe Target -> Target -> JoinPaneParams JoinPaneParams { $sel:axis:JoinPaneParams :: Maybe Axis axis = Maybe Axis forall a. Maybe a Nothing, $sel:size:JoinPaneParams :: Maybe SplitSize size = Maybe SplitSize forall a. Maybe a Nothing, $sel:before:JoinPaneParams :: Bool before = Bool False, $sel:detach:JoinPaneParams :: Bool detach = Bool False, $sel:source:JoinPaneParams :: Maybe Target source = Maybe Target forall a. Maybe a Nothing, $sel:target:JoinPaneParams :: Target target = Target Current } instance CmdArgs JoinPaneParams where cmdArgs :: JoinPaneParams -> [Text] cmdArgs JoinPaneParams {Bool Maybe Axis Maybe Target Maybe SplitSize Target target :: Target source :: Maybe Target detach :: Bool before :: Bool size :: Maybe SplitSize axis :: Maybe Axis $sel:target:JoinPaneParams :: JoinPaneParams -> Target $sel:source:JoinPaneParams :: JoinPaneParams -> Maybe Target $sel:detach:JoinPaneParams :: JoinPaneParams -> Bool $sel:before:JoinPaneParams :: JoinPaneParams -> Bool $sel:size:JoinPaneParams :: JoinPaneParams -> Maybe SplitSize $sel:axis:JoinPaneParams :: JoinPaneParams -> Maybe Axis ..} = Maybe Axis -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe Axis axis [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Maybe SplitSize -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe SplitSize size [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-b" Bool before [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-d" Bool detach [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> (Target -> [Text]) -> Maybe Target -> [Text] forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap ([Text] -> Target -> [Text] formatTarget [Item [Text] "-s"]) Maybe Target source [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Target -> [Text] forall a. CmdArgs a => a -> [Text] cmdArgs Target target