module Hack.Contrib.Utils where
import Hack
import Hack.Contrib.Constants
import MPSUTF8
import Prelude hiding ((.), (^), (>), lookup, (+), (/))
import Network.URI hiding (path)
import Data.Default
import Control.Arrow ((>>>), (<<<))
import qualified Data.Map as M
import Data.Time
import qualified Data.ByteString.Lazy.Char8 as B
import Control.Monad (mplus, MonadPlus)
import Data.Maybe
import System.IO
import System.Locale
import System.FilePath ((</>))
import Control.Category (Category)
(>) :: (Control.Category.Category cat) => cat a b -> cat b c -> cat a c
(>) = (>>>)
infixl 8 >
(+) :: (MonadPlus m) => m a -> m a -> m a
(+) = mplus
infixl 8 +
(/) :: FilePath -> FilePath -> FilePath
(/) = (</>)
infixl 5 /
empty_app :: Application
empty_app = return def
use :: [Middleware] -> Middleware
use = reduce (<<<)
bytesize :: String -> Int
bytesize = B.pack > B.length > from_i
dummy_middleware :: Middleware
dummy_middleware = id
dummy_app :: Application
dummy_app _ = return $ def { status = 500 }
escape_html :: String -> String
escape_html = concatMap fixChar
where
fixChar '&' = "&"
fixChar '<' = "<"
fixChar '>' = ">"
fixChar '\'' = "'"
fixChar '"' = """
fixChar x = [x]
show_status_message :: Int -> Maybe String
show_status_message x = status_code.M.lookup x
httpdate :: UTCTime -> String
httpdate x = x.format_time rfc822DateFormat where
url2unicode :: String -> String
url2unicode s = s.unEscapeString.b2u
just_lookup :: (Ord k) => k -> M.Map k a -> a
just_lookup s xs = xs.M.lookup s .fromJust