blockfrost-pretty-0.1.0.0: src/Blockfrost/Pretty/Ada.hs
-- | Pretty printing for safe-money Lovelace values
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Blockfrost.Pretty.Ada
( prettyLovelaces
, prettyLovelaces'
, prettyLovelacesDoc
, prettyLovelacesDoc'
) where
import Blockfrost.Pretty.Config
import Blockfrost.Types.Shared.Ada
import Data.Default (Default (def))
import Data.Text (Text)
import qualified Money
import Prettyprinter
import Prettyprinter.Render.Terminal
-- | Pretty print `Lovelaces` using default configuration
prettyLovelaces :: Lovelaces -> Text
prettyLovelaces = prettyLovelaces' def
-- | Pretty print `Lovelaces` using supplied `PrettyConfig`
prettyLovelaces' :: PrettyConfig -> Lovelaces -> Text
prettyLovelaces' PrettyConfig{..} x | x > Money.discrete 1_000_000 =
Money.denseToDecimal
pcAdaDecimalConf
Money.Round
(Money.denseFromDiscrete x)
<> " "
<> prefixIfTestAda pcTestAda
<> (if pcUnicode then adaSymbol else "ADA")
prettyLovelaces' PrettyConfig{..} x =
Money.discreteToDecimal
pcLovelaceDecimalConf
Money.Round
x
<> " "
<> prefixIfTestAda pcTestAda
<> "lovelace"
<> (if x == 1 then mempty else "s")
-- | Pretty print `Lovelaces` to `Doc` using supplied `PrettyConfig`
prettyLovelacesDoc' :: PrettyConfig -> Lovelaces -> Doc AnsiStyle
prettyLovelacesDoc' cfg =
annotate (color Magenta)
. pretty
. prettyLovelaces' cfg
-- | Pretty print `Lovelaces` to `Doc` using default config
prettyLovelacesDoc :: Lovelaces -> Doc AnsiStyle
prettyLovelacesDoc = prettyLovelacesDoc' def
prefixIfTestAda :: Bool -> Text
prefixIfTestAda False = mempty
prefixIfTestAda True = "t"