{-| Module : Instana.SDK.Internal.Util Description : Utilities -} module Instana.SDK.Internal.Util ( (|>) , leftPad , leftPadAndLimit , limit ) where import qualified Data.Text as T -- |Elm-style function application. (|>) :: a -> (a -> b) -> b (|>) = flip ($) -- |Prepends the character "0" to this string until it has the given length. -- Otherwise the input is returned unmodified. leftPad :: Int -> String -> String leftPad digits s | length s < digits = replicate (digits - length s) '0' ++ s | otherwise = s -- |If the given string is shorten than the requested length, the character "0" -- is prepended to this string. If the given string is longer than the requested -- length, the leading characters will be discarded to limit it to the requested -- length. Otherwise the input is returned unmodified. leftPadAndLimit :: Int -> String -> String leftPadAndLimit digits s = leftPad digits s |> limit digits -- |If the given string is longer than the requested length, the leading -- characters will be discarded to limit it to the requested length. Otherwise -- the input is returned unmodified. limit :: Int -> String -> String limit digits s | length s > digits = T.unpack $ T.takeEnd digits $ T.pack s | otherwise = s