module Cachix.Client.HumanSize where import Protolude import Text.Printf (printf) import qualified Prelude humanSize :: Double -> Text humanSize :: Double -> Text humanSize Double size | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep Int 1 = Text -> Double -> Text render Text "B" Double size | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep Int 2 = Text -> Double -> Text render Text "KiB" (Double -> Text) -> Double -> Text forall a b. (a -> b) -> a -> b $ Double size Double -> Double -> Double forall a. Fractional a => a -> a -> a / Int -> Double unitstep Int 1 | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep Int 3 = Text -> Double -> Text render Text "MiB" (Double -> Text) -> Double -> Text forall a b. (a -> b) -> a -> b $ Double size Double -> Double -> Double forall a. Fractional a => a -> a -> a / Int -> Double unitstep Int 2 | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep Int 4 = Text -> Double -> Text render Text "GiB" (Double -> Text) -> Double -> Text forall a b. (a -> b) -> a -> b $ Double size Double -> Double -> Double forall a. Fractional a => a -> a -> a / Int -> Double unitstep Int 3 | Bool otherwise = Text -> Double -> Text render Text "TiB" (Double -> Text) -> Double -> Text forall a b. (a -> b) -> a -> b $ Double size Double -> Double -> Double forall a. Fractional a => a -> a -> a / Int -> Double unitstep Int 4 where unitstep :: Int -> Double unitstep :: Int -> Double unitstep Int i = Double 1024.0 Double -> Int -> Double forall a b. (Num a, Integral b) => a -> b -> a ^ Int i render :: Text -> Double -> Text render :: Text -> Double -> Text render Text unit Double unitsize = String -> Text forall a b. ConvertText a b => a -> b toS (String -> Double -> String forall r. PrintfType r => String -> r printf String "%.2f" Double unitsize :: Prelude.String) Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text " " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text unit