Blame src/Util.hs

Packit 2cbdf3
-- -----------------------------------------------------------------------------
Packit 2cbdf3
--
Packit 2cbdf3
-- Util.hs, part of Alex
Packit 2cbdf3
--
Packit 2cbdf3
-- (c) Simon Marlow 2003
Packit 2cbdf3
--
Packit 2cbdf3
-- General utilities used in various parts of Alex
Packit 2cbdf3
--
Packit 2cbdf3
-- ----------------------------------------------------------------------------}
Packit 2cbdf3
Packit 2cbdf3
module Util
Packit 2cbdf3
  ( str
Packit 2cbdf3
  , char
Packit 2cbdf3
  , nl
Packit 2cbdf3
  , paren
Packit 2cbdf3
  , brack
Packit 2cbdf3
  , interleave_shows
Packit 2cbdf3
  , space
Packit 2cbdf3
  , cjustify
Packit 2cbdf3
  , ljustify
Packit 2cbdf3
  , rjustify
Packit 2cbdf3
  , spaces
Packit 2cbdf3
  , hline
Packit 2cbdf3
  ) where
Packit 2cbdf3
Packit 2cbdf3
-- Pretty-printing utilities
Packit 2cbdf3
Packit 2cbdf3
str :: String -> String -> String
Packit 2cbdf3
str = showString
Packit 2cbdf3
Packit 2cbdf3
char :: Char -> String -> String
Packit 2cbdf3
char c = (c :)
Packit 2cbdf3
Packit 2cbdf3
nl :: String -> String
Packit 2cbdf3
nl = char '\n'
Packit 2cbdf3
Packit 2cbdf3
paren :: (String -> String) -> String -> String
Packit 2cbdf3
paren s = char '(' . s . char ')'
Packit 2cbdf3
Packit 2cbdf3
brack :: (String -> String) -> String -> String
Packit 2cbdf3
brack s = char '[' . s . char ']'
Packit 2cbdf3
Packit 2cbdf3
interleave_shows :: (String -> String) -> [String -> String] -> String -> String
Packit 2cbdf3
interleave_shows _ [] = id
Packit 2cbdf3
interleave_shows s xs = foldr1 (\a b -> a . s . b) xs
Packit 2cbdf3
Packit 2cbdf3
space :: String -> String
Packit 2cbdf3
space = char ' '
Packit 2cbdf3
Packit 2cbdf3
cjustify, ljustify, rjustify :: Int -> String -> String
Packit 2cbdf3
cjustify n s = spaces halfm ++ s ++ spaces (m - halfm)
Packit 2cbdf3
  where
Packit 2cbdf3
    m     = n - length s
Packit 2cbdf3
    halfm = m `div` 2
Packit 2cbdf3
ljustify n s = s ++ spaces (max 0 (n - length s))
Packit 2cbdf3
rjustify n s = spaces (n - length s) ++ s
Packit 2cbdf3
Packit 2cbdf3
spaces   :: Int -> String
Packit 2cbdf3
spaces n = replicate n ' '
Packit 2cbdf3
Packit 2cbdf3
hline :: String
Packit 2cbdf3
hline = replicate 77 '-'