------------------------------------------------------------------------------
-- |
-- Module      : PhatSort.SortOptions
-- Description : sort options
-- Copyright   : Copyright (c) 2019-2023 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
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
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
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
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
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
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)