Revision c5f7412e Ganeti/HTools/Utils.hs

b/Ganeti/HTools/Utils.hs
35 35
    , asObjectList
36 36
    , fromJResult
37 37
    , tryRead
38
    , formatTable
38 39
    ) where
39 40

  
40 41
import Data.List
......
140 141
-- | Safe 'read' function returning data encapsulated in a Result.
141 142
tryRead :: (Monad m, Read a) => String -> String -> m a
142 143
tryRead name s = parseChoices name s $ reads s
144

  
145
-- | Format a table of strings to maintain consistent length
146
formatTable :: [[String]] -> [Bool] -> [[String]]
147
formatTable vals numpos =
148
    let vtrans = transpose vals  -- transpose, so that we work on rows
149
                                 -- rather than columns
150
        mlens = map (maximum . map length) vtrans
151
        expnd = map (\(flds, isnum, ml) ->
152
                         map (\val ->
153
                                  let delta = ml - length val
154
                                      filler = replicate delta ' '
155
                                  in if delta > 0
156
                                     then if isnum
157
                                          then filler ++ val
158
                                          else val ++ filler
159
                                     else val
160
                             ) flds
161
                    ) (zip3 vtrans numpos mlens)
162
   in transpose expnd

Also available in: Unified diff