------------------------------------------------------------------------------
-- |
-- Module      : PhatSort.SortOptions
-- Description : sort options
-- Copyright   : Copyright (c) 2019-2022 Travis Cardwell
-- License     : MIT
------------------------------------------------------------------------------

module PhatSort.SortOptions
  ( -- * Sort Options
    SortCase(..)
  , SortFirst(..)
  , SortOrder(..)
  ) where

------------------------------------------------------------------------------

-- | Case sensitivity
--
-- @since 0.5.0.0
data SortCase
  = CaseSensitive
  | CaseInsensitive
  deriving (SortCase -> SortCase -> Bool
(SortCase -> SortCase -> Bool)
-> (SortCase -> SortCase -> Bool) -> Eq SortCase
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SortCase -> SortCase -> Bool
$c/= :: SortCase -> SortCase -> Bool
== :: SortCase -> SortCase -> Bool
$c== :: SortCase -> SortCase -> Bool
Eq, Int -> SortCase -> ShowS
[SortCase] -> ShowS
SortCase -> String
(Int -> SortCase -> ShowS)
-> (SortCase -> String) -> ([SortCase] -> ShowS) -> Show SortCase
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SortCase] -> ShowS
$cshowList :: [SortCase] -> ShowS
show :: SortCase -> String
$cshow :: SortCase -> String
showsPrec :: Int -> SortCase -> ShowS
$cshowsPrec :: Int -> SortCase -> ShowS
Show)

------------------------------------------------------------------------------

-- | Sorting certain directory entries first
--
-- @since 0.5.0.0
data SortFirst
  = FirstNone
  | FirstDirs
  | FirstFiles
  deriving (SortFirst -> SortFirst -> Bool
(SortFirst -> SortFirst -> Bool)
-> (SortFirst -> SortFirst -> Bool) -> Eq SortFirst
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SortFirst -> SortFirst -> Bool
$c/= :: SortFirst -> SortFirst -> Bool
== :: SortFirst -> SortFirst -> Bool
$c== :: SortFirst -> SortFirst -> Bool
Eq, Int -> SortFirst -> ShowS
[SortFirst] -> ShowS
SortFirst -> String
(Int -> SortFirst -> ShowS)
-> (SortFirst -> String)
-> ([SortFirst] -> ShowS)
-> Show SortFirst
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SortFirst] -> ShowS
$cshowList :: [SortFirst] -> ShowS
show :: SortFirst -> String
$cshow :: SortFirst -> String
showsPrec :: Int -> SortFirst -> ShowS
$cshowsPrec :: Int -> SortFirst -> ShowS
Show)

------------------------------------------------------------------------------

-- | Sort order
--
-- @since 0.5.0.0
data SortOrder
  = OrderName
  | OrderTime
  | OrderRandom
  deriving (SortOrder -> SortOrder -> Bool
(SortOrder -> SortOrder -> Bool)
-> (SortOrder -> SortOrder -> Bool) -> Eq SortOrder
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SortOrder -> SortOrder -> Bool
$c/= :: SortOrder -> SortOrder -> Bool
== :: SortOrder -> SortOrder -> Bool
$c== :: SortOrder -> SortOrder -> Bool
Eq, Int -> SortOrder -> ShowS
[SortOrder] -> ShowS
SortOrder -> String
(Int -> SortOrder -> ShowS)
-> (SortOrder -> String)
-> ([SortOrder] -> ShowS)
-> Show SortOrder
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SortOrder] -> ShowS
$cshowList :: [SortOrder] -> ShowS
show :: SortOrder -> String
$cshow :: SortOrder -> String
showsPrec :: Int -> SortOrder -> ShowS
$cshowsPrec :: Int -> SortOrder -> ShowS
Show)