> module Blockquote
>        (blockquote
>        ,markquotes)
>         where
>
> import Codec.Binary.Base64.String (encode)
> import Data.String.Utils
> import Data.List
> import Process
> import Sortinv
> import Singleinv
> import Sorttags
> import Delimiters

> allund :: [Char] -> Bool
> allund line = nub line == "_"

> markblock :: [Char] -> [Char]
> markblock line | allund line = [mark]
>                | otherwise = line

> markquotes :: String -> String
> markquotes s = unlines (map markblock (lines s))

> markit :: String -> [Char]
> markit l = [inv1] ++ (encode (paralines l)) ++ [inv2]

> paraline :: String -> String
> paraline l | length l > 0 = "<para>" ++ l ++ "</para>"
>            | otherwise = l

> paralines :: String -> String
> paralines  =  unlines                        .
>              (map paraline)                  .
>               lines                          .
>              (replace "--newline--" "\n\n")  .
>              (replace "\n" "")               .
>              (replace "\n\n" "--newline--")  .
>               sortinv                        .
>               singleinv

> blockquote :: [Char] -> [Char]
> blockquote = (sorttags "<quote>" "</quote>"  markit ) .
>              (process mark mark "<quote>" "</quote>")
