module Cachix.Client.HumanSize where import Protolude import Text.Printf (printf) import qualified Prelude humanSize :: Double -> Text humanSize :: Double -> Text humanSize size :: Double size | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep 1 = Text -> Double -> Text render "B" Double size | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep 2 = Text -> Double -> Text render "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 1 | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep 3 = Text -> Double -> Text render "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 2 | Double size Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Int -> Double unitstep 4 = Text -> Double -> Text render "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 3 | Bool otherwise = Text -> Double -> Text render "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 4 where unitstep :: Int -> Double unitstep :: Int -> Double unitstep i :: Int i = 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 unit :: Text unit unitsize :: Double unitsize = String -> Text forall a b. StringConv a b => a -> b toS (String -> Double -> String forall r. PrintfType r => String -> r printf "%.2f" Double unitsize :: Prelude.String) Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> " " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text unit