btc-lsp-0.1.0.0: src/BtcLsp/Text.hs
module BtcLsp.Text
( toHex,
toQr,
displayRational,
mkHtmlUuid,
)
where
import BtcLsp.Import.External
import qualified Codec.QRCode as QR
( ErrorLevel (L),
TextEncoding (Iso8859_1OrUtf8WithoutECI),
defaultQRCodeOptions,
encodeAutomatic,
)
import qualified Codec.QRCode.JuicyPixels as JP
( toPngDataUrlT,
)
import qualified Data.ByteString.Base16 as B16
import qualified Data.Text.Format.Numbers as F
import qualified Data.UUID as UUID
import qualified Data.UUID.V4 as UUID
import qualified Language.Haskell.TH.Syntax as TH
toHex :: ByteString -> Text
toHex =
decodeUtf8
. B16.encode
toQr :: Text -> Maybe Text
toQr =
(toStrict . JP.toPngDataUrlT 4 5 <$>)
. QR.encodeAutomatic
(QR.defaultQRCodeOptions QR.L)
QR.Iso8859_1OrUtf8WithoutECI
displayRational :: Int -> Rational -> Text
displayRational len =
F.prettyF
F.PrettyCfg
{ F.pc_decimals = len,
F.pc_thousandsSep = Just ',',
F.pc_decimalSep = '.'
}
mkHtmlUuid :: TH.Q TH.Exp
mkHtmlUuid =
TH.lift
. ("uuid-" <>)
. UUID.toText
=<< TH.runIO UUID.nextRandom