module Tldr.Types where

import System.Console.ANSI

data Locale = English | Missing | Other String | Unknown String

data ColorSetting = NoColor | UseColor 
  deriving (ColorSetting -> ColorSetting -> Bool
(ColorSetting -> ColorSetting -> Bool)
-> (ColorSetting -> ColorSetting -> Bool) -> Eq ColorSetting
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColorSetting -> ColorSetting -> Bool
$c/= :: ColorSetting -> ColorSetting -> Bool
== :: ColorSetting -> ColorSetting -> Bool
$c== :: ColorSetting -> ColorSetting -> Bool
Eq, Int -> ColorSetting -> ShowS
[ColorSetting] -> ShowS
ColorSetting -> String
(Int -> ColorSetting -> ShowS)
-> (ColorSetting -> String)
-> ([ColorSetting] -> ShowS)
-> Show ColorSetting
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColorSetting] -> ShowS
$cshowList :: [ColorSetting] -> ShowS
show :: ColorSetting -> String
$cshow :: ColorSetting -> String
showsPrec :: Int -> ColorSetting -> ShowS
$cshowsPrec :: Int -> ColorSetting -> ShowS
Show, Eq ColorSetting
Eq ColorSetting
-> (ColorSetting -> ColorSetting -> Ordering)
-> (ColorSetting -> ColorSetting -> Bool)
-> (ColorSetting -> ColorSetting -> Bool)
-> (ColorSetting -> ColorSetting -> Bool)
-> (ColorSetting -> ColorSetting -> Bool)
-> (ColorSetting -> ColorSetting -> ColorSetting)
-> (ColorSetting -> ColorSetting -> ColorSetting)
-> Ord ColorSetting
ColorSetting -> ColorSetting -> Bool
ColorSetting -> ColorSetting -> Ordering
ColorSetting -> ColorSetting -> ColorSetting
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ColorSetting -> ColorSetting -> ColorSetting
$cmin :: ColorSetting -> ColorSetting -> ColorSetting
max :: ColorSetting -> ColorSetting -> ColorSetting
$cmax :: ColorSetting -> ColorSetting -> ColorSetting
>= :: ColorSetting -> ColorSetting -> Bool
$c>= :: ColorSetting -> ColorSetting -> Bool
> :: ColorSetting -> ColorSetting -> Bool
$c> :: ColorSetting -> ColorSetting -> Bool
<= :: ColorSetting -> ColorSetting -> Bool
$c<= :: ColorSetting -> ColorSetting -> Bool
< :: ColorSetting -> ColorSetting -> Bool
$c< :: ColorSetting -> ColorSetting -> Bool
compare :: ColorSetting -> ColorSetting -> Ordering
$ccompare :: ColorSetting -> ColorSetting -> Ordering
$cp1Ord :: Eq ColorSetting
Ord, Int -> ColorSetting
ColorSetting -> Int
ColorSetting -> [ColorSetting]
ColorSetting -> ColorSetting
ColorSetting -> ColorSetting -> [ColorSetting]
ColorSetting -> ColorSetting -> ColorSetting -> [ColorSetting]
(ColorSetting -> ColorSetting)
-> (ColorSetting -> ColorSetting)
-> (Int -> ColorSetting)
-> (ColorSetting -> Int)
-> (ColorSetting -> [ColorSetting])
-> (ColorSetting -> ColorSetting -> [ColorSetting])
-> (ColorSetting -> ColorSetting -> [ColorSetting])
-> (ColorSetting -> ColorSetting -> ColorSetting -> [ColorSetting])
-> Enum ColorSetting
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: ColorSetting -> ColorSetting -> ColorSetting -> [ColorSetting]
$cenumFromThenTo :: ColorSetting -> ColorSetting -> ColorSetting -> [ColorSetting]
enumFromTo :: ColorSetting -> ColorSetting -> [ColorSetting]
$cenumFromTo :: ColorSetting -> ColorSetting -> [ColorSetting]
enumFromThen :: ColorSetting -> ColorSetting -> [ColorSetting]
$cenumFromThen :: ColorSetting -> ColorSetting -> [ColorSetting]
enumFrom :: ColorSetting -> [ColorSetting]
$cenumFrom :: ColorSetting -> [ColorSetting]
fromEnum :: ColorSetting -> Int
$cfromEnum :: ColorSetting -> Int
toEnum :: Int -> ColorSetting
$ctoEnum :: Int -> ColorSetting
pred :: ColorSetting -> ColorSetting
$cpred :: ColorSetting -> ColorSetting
succ :: ColorSetting -> ColorSetting
$csucc :: ColorSetting -> ColorSetting
Enum, ColorSetting
ColorSetting -> ColorSetting -> Bounded ColorSetting
forall a. a -> a -> Bounded a
maxBound :: ColorSetting
$cmaxBound :: ColorSetting
minBound :: ColorSetting
$cminBound :: ColorSetting
Bounded)

data ConsoleSetting =
  ConsoleSetting
    { ConsoleSetting -> Bool
italic :: Bool
    , ConsoleSetting -> Underlining
underline :: Underlining
    , ConsoleSetting -> BlinkSpeed
blink :: BlinkSpeed
    , ConsoleSetting -> ColorIntensity
fgIntensity :: ColorIntensity
    , ConsoleSetting -> Color
fgColor :: Color
    , ConsoleSetting -> ColorIntensity
bgIntensity :: ColorIntensity
    , ConsoleSetting -> ConsoleIntensity
consoleIntensity :: ConsoleIntensity
    }

data TldrOpts = TldrOpts
  { TldrOpts -> TldrCommand
tldrAction :: TldrCommand
  , TldrOpts -> Maybe Int
autoUpdateInterval :: Maybe Int
  , TldrOpts -> Maybe ColorSetting
colorSetting :: Maybe ColorSetting
  } deriving (Int -> TldrOpts -> ShowS
[TldrOpts] -> ShowS
TldrOpts -> String
(Int -> TldrOpts -> ShowS)
-> (TldrOpts -> String) -> ([TldrOpts] -> ShowS) -> Show TldrOpts
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TldrOpts] -> ShowS
$cshowList :: [TldrOpts] -> ShowS
show :: TldrOpts -> String
$cshow :: TldrOpts -> String
showsPrec :: Int -> TldrOpts -> ShowS
$cshowsPrec :: Int -> TldrOpts -> ShowS
Show)

data TldrCommand
  = UpdateIndex
  | ViewPage ViewOptions
             [String]
  | About
  deriving (Int -> TldrCommand -> ShowS
[TldrCommand] -> ShowS
TldrCommand -> String
(Int -> TldrCommand -> ShowS)
-> (TldrCommand -> String)
-> ([TldrCommand] -> ShowS)
-> Show TldrCommand
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TldrCommand] -> ShowS
$cshowList :: [TldrCommand] -> ShowS
show :: TldrCommand -> String
$cshow :: TldrCommand -> String
showsPrec :: Int -> TldrCommand -> ShowS
$cshowsPrec :: Int -> TldrCommand -> ShowS
Show, TldrCommand -> TldrCommand -> Bool
(TldrCommand -> TldrCommand -> Bool)
-> (TldrCommand -> TldrCommand -> Bool) -> Eq TldrCommand
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TldrCommand -> TldrCommand -> Bool
$c/= :: TldrCommand -> TldrCommand -> Bool
== :: TldrCommand -> TldrCommand -> Bool
$c== :: TldrCommand -> TldrCommand -> Bool
Eq, Eq TldrCommand
Eq TldrCommand
-> (TldrCommand -> TldrCommand -> Ordering)
-> (TldrCommand -> TldrCommand -> Bool)
-> (TldrCommand -> TldrCommand -> Bool)
-> (TldrCommand -> TldrCommand -> Bool)
-> (TldrCommand -> TldrCommand -> Bool)
-> (TldrCommand -> TldrCommand -> TldrCommand)
-> (TldrCommand -> TldrCommand -> TldrCommand)
-> Ord TldrCommand
TldrCommand -> TldrCommand -> Bool
TldrCommand -> TldrCommand -> Ordering
TldrCommand -> TldrCommand -> TldrCommand
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: TldrCommand -> TldrCommand -> TldrCommand
$cmin :: TldrCommand -> TldrCommand -> TldrCommand
max :: TldrCommand -> TldrCommand -> TldrCommand
$cmax :: TldrCommand -> TldrCommand -> TldrCommand
>= :: TldrCommand -> TldrCommand -> Bool
$c>= :: TldrCommand -> TldrCommand -> Bool
> :: TldrCommand -> TldrCommand -> Bool
$c> :: TldrCommand -> TldrCommand -> Bool
<= :: TldrCommand -> TldrCommand -> Bool
$c<= :: TldrCommand -> TldrCommand -> Bool
< :: TldrCommand -> TldrCommand -> Bool
$c< :: TldrCommand -> TldrCommand -> Bool
compare :: TldrCommand -> TldrCommand -> Ordering
$ccompare :: TldrCommand -> TldrCommand -> Ordering
$cp1Ord :: Eq TldrCommand
Ord)

data ViewOptions =
  ViewOptions
    { ViewOptions -> Maybe String
platformOption :: Maybe String
    , ViewOptions -> Maybe String
languageOption :: Maybe String
    }
  deriving (Int -> ViewOptions -> ShowS
[ViewOptions] -> ShowS
ViewOptions -> String
(Int -> ViewOptions -> ShowS)
-> (ViewOptions -> String)
-> ([ViewOptions] -> ShowS)
-> Show ViewOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ViewOptions] -> ShowS
$cshowList :: [ViewOptions] -> ShowS
show :: ViewOptions -> String
$cshow :: ViewOptions -> String
showsPrec :: Int -> ViewOptions -> ShowS
$cshowsPrec :: Int -> ViewOptions -> ShowS
Show, ViewOptions -> ViewOptions -> Bool
(ViewOptions -> ViewOptions -> Bool)
-> (ViewOptions -> ViewOptions -> Bool) -> Eq ViewOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ViewOptions -> ViewOptions -> Bool
$c/= :: ViewOptions -> ViewOptions -> Bool
== :: ViewOptions -> ViewOptions -> Bool
$c== :: ViewOptions -> ViewOptions -> Bool
Eq, Eq ViewOptions
Eq ViewOptions
-> (ViewOptions -> ViewOptions -> Ordering)
-> (ViewOptions -> ViewOptions -> Bool)
-> (ViewOptions -> ViewOptions -> Bool)
-> (ViewOptions -> ViewOptions -> Bool)
-> (ViewOptions -> ViewOptions -> Bool)
-> (ViewOptions -> ViewOptions -> ViewOptions)
-> (ViewOptions -> ViewOptions -> ViewOptions)
-> Ord ViewOptions
ViewOptions -> ViewOptions -> Bool
ViewOptions -> ViewOptions -> Ordering
ViewOptions -> ViewOptions -> ViewOptions
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ViewOptions -> ViewOptions -> ViewOptions
$cmin :: ViewOptions -> ViewOptions -> ViewOptions
max :: ViewOptions -> ViewOptions -> ViewOptions
$cmax :: ViewOptions -> ViewOptions -> ViewOptions
>= :: ViewOptions -> ViewOptions -> Bool
$c>= :: ViewOptions -> ViewOptions -> Bool
> :: ViewOptions -> ViewOptions -> Bool
$c> :: ViewOptions -> ViewOptions -> Bool
<= :: ViewOptions -> ViewOptions -> Bool
$c<= :: ViewOptions -> ViewOptions -> Bool
< :: ViewOptions -> ViewOptions -> Bool
$c< :: ViewOptions -> ViewOptions -> Bool
compare :: ViewOptions -> ViewOptions -> Ordering
$ccompare :: ViewOptions -> ViewOptions -> Ordering
$cp1Ord :: Eq ViewOptions
Ord)