module Options.Harg.Pretty ( ppHelp, ppSourceRunErrors, ) where import Control.Applicative ((<|>)) import Data.List (intercalate) import Data.Maybe (fromMaybe) import Options.Harg.Sources.Types import Options.Harg.Types ppHelp :: Opt a -> Maybe String ppHelp :: Opt a -> Maybe String ppHelp Opt {..} = (String -> String -> String forall a. Semigroup a => a -> a -> a <> Maybe String -> String ppEnvVar Maybe String _optEnvVar) (String -> String) -> Maybe String -> Maybe String forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe String _optHelp ppSourceRunErrors :: [SourceRunError] -> String ppSourceRunErrors :: [SourceRunError] -> String ppSourceRunErrors = String -> [String] -> String forall a. [a] -> [[a]] -> [a] intercalate "\n\n" ([String] -> String) -> ([SourceRunError] -> [String]) -> [SourceRunError] -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . (SourceRunError -> String) -> [SourceRunError] -> [String] forall a b. (a -> b) -> [a] -> [b] map SourceRunError -> String ppSourceRunError where ppSourceRunError :: SourceRunError -> String ppSourceRunError :: SourceRunError -> String ppSourceRunError (SourceRunError Nothing src :: String src desc :: String desc) = "error: " String -> String -> String forall a. Semigroup a => a -> a -> a <> String desc String -> String -> String forall a. Semigroup a => a -> a -> a <> "\n\t" String -> String -> String forall a. Semigroup a => a -> a -> a <> String -> String ppSource String src ppSourceRunError (SourceRunError (Just (SomeOpt opt :: Opt a opt)) src :: String src desc :: String desc) = "option " String -> String -> String forall a. Semigroup a => a -> a -> a <> Opt a -> String forall a. Opt a -> String optId Opt a opt String -> String -> String forall a. Semigroup a => a -> a -> a <> ": " String -> String -> String forall a. Semigroup a => a -> a -> a <> String desc String -> String -> String forall a. Semigroup a => a -> a -> a <> "\n\t" String -> String -> String forall a. Semigroup a => a -> a -> a <> String -> String ppSource String src String -> String -> String forall a. Semigroup a => a -> a -> a <> Maybe String -> String ppEnvVar (Opt a -> Maybe String forall a. Opt a -> Maybe String _optEnvVar Opt a opt) optId :: Opt a -> String optId Opt {..} = String -> Maybe String -> String forall a. a -> Maybe a -> a fromMaybe "<no name available>" (Maybe String -> String) -> Maybe String -> String forall a b. (a -> b) -> a -> b $ Maybe String _optLong Maybe String -> Maybe String -> Maybe String forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> (Char -> String forall (f :: * -> *) a. Applicative f => a -> f a pure (Char -> String) -> Maybe Char -> Maybe String forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe Char _optShort) Maybe String -> Maybe String -> Maybe String forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Maybe String _optMetavar ppSource :: String -> String ppSource :: String -> String ppSource s :: String s = " (source: " String -> String -> String forall a. Semigroup a => a -> a -> a <> String s String -> String -> String forall a. Semigroup a => a -> a -> a <> ")" ppEnvVar :: Maybe String -> String ppEnvVar :: Maybe String -> String ppEnvVar = String -> (String -> String) -> Maybe String -> String forall b a. b -> (a -> b) -> Maybe a -> b maybe "" ((String -> String) -> Maybe String -> String) -> (String -> String) -> Maybe String -> String forall a b. (a -> b) -> a -> b $ \s :: String s -> " (env var: " String -> String -> String forall a. Semigroup a => a -> a -> a <> String s String -> String -> String forall a. Semigroup a => a -> a -> a <> ")"