module Codec.CBOR.Cuddle.Pretty.Utils where import Data.Text qualified as T import Prettyprinter (Doc, flatAlt, layoutCompact, space) import Prettyprinter.Render.Text (renderStrict) renderedLen :: Doc ann -> Int renderedLen :: forall ann. Doc ann -> Int renderedLen = Text -> Int T.length (Text -> Int) -> (Doc ann -> Text) -> Doc ann -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . SimpleDocStream Any -> Text forall ann. SimpleDocStream ann -> Text renderStrict (SimpleDocStream Any -> Text) -> (Doc ann -> SimpleDocStream Any) -> Doc ann -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . Doc ann -> SimpleDocStream Any forall ann1 ann2. Doc ann1 -> SimpleDocStream ann2 layoutCompact softspace :: Doc ann softspace :: forall ann. Doc ann softspace = Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann flatAlt Doc ann forall ann. Doc ann space Doc ann forall a. Monoid a => a mempty spaces :: Int -> Doc ann spaces :: forall ann. Int -> Doc ann spaces Int i = [Doc ann] -> Doc ann forall a. Monoid a => [a] -> a mconcat ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann forall a b. (a -> b) -> a -> b $ Int -> Doc ann -> [Doc ann] forall a. Int -> a -> [a] replicate Int i Doc ann forall ann. Doc ann softspace fillLeft :: Int -> Doc ann -> Doc ann fillLeft :: forall ann. Int -> Doc ann -> Doc ann fillLeft Int len Doc ann doc = Int -> Doc ann forall ann. Int -> Doc ann spaces (Int len Int -> Int -> Int forall a. Num a => a -> a -> a - Doc ann -> Int forall ann. Doc ann -> Int renderedLen Doc ann doc) Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann doc fillRight :: Int -> Doc ann -> Doc ann fillRight :: forall ann. Int -> Doc ann -> Doc ann fillRight Int len Doc ann doc = Doc ann doc Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Int -> Doc ann forall ann. Int -> Doc ann spaces (Int len Int -> Int -> Int forall a. Num a => a -> a -> a - Doc ann -> Int forall ann. Doc ann -> Int renderedLen Doc ann doc)