|
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 '-'
|