module Utils.String where
import Numeric
import Test.QuickCheck
showPercentage n = showFFloat (Just 2) n ""
columns :: [(String,String)] -> String
columns pairs = unlines $ cd
where
fstLen = maximum $ map (length.fst) pairs
cd = map (\(a,b) -> padToR ' ' fstLen a++"\t"++b) pairs
columnS :: (Show a) => [(String,a)] -> String
columnS pairs = unlines $ cd
where
fstLen = maximum $ map (length.fst) pairs
cd = map (\(a,b) -> padToR ' ' fstLen a++"\t"++show b) pairs
columnsBy show pairs = unlines $ cd
where
fstLen = maximum $ map (length.fst) pairs
cd = map (\(a,b) -> padToR ' ' fstLen a++"\t"++show b) pairs
padToR pad width s = s ++ padding
where
padding = replicate n pad
n = max 0 (width length s)
padTo pad width s = padding ++ s
where
padding = replicate n pad
n = max 0 (width length s)
prop_padLength (w::Int) (str::[Int]) =
length (padTo 0 w str) >= length str
&& length (padTo 0 w str) >= w
quote str = '"':str++"\""
enumerate strs = zipWith (++) strs [show i | i<-[1..]]
numbered str = enumerate (repeat str)
wordsBy p s
| findSpace == [] = []
| otherwise = w : wordsBy p s''
where
(w, s'') = break p findSpace
findSpace = dropWhile p s
printLabels ls = putStrLn $ concatMap (\(a,b) -> a++":\t"++show b++"\n") ls