Removed Data.Object.Instances

This commit is contained in:
Michael Snoyman 2009-12-13 00:33:08 +02:00
parent 00115f02d4
commit 002f6ef788
5 changed files with 7 additions and 145 deletions

View File

@ -1,107 +0,0 @@
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
---------------------------------------------------------
--
-- Module : Data.Object.Instances
-- Copyright : Michael Snoyman
-- License : BSD3
--
-- Maintainer : Michael Snoyman <michael@snoyman.com>
-- Stability : Stable
-- Portability : portable
--
-- Instances for converting various types of data into Data.Object.Object.
--
---------------------------------------------------------
module Data.Object.Instances
( Json (..)
, Yaml (..)
, Html (..)
) where
import Data.Object.Text
import qualified Data.ByteString.Lazy as B
import Web.Encodings (encodeJson)
import Text.Yaml (encodeText')
import qualified Data.Text.Lazy as LT
import Data.Text.Lazy (Text)
import Data.Convertible.Text
newtype Json = Json { unJson :: Text }
instance ConvertAttempt (Object Text Text) Json where
convertAttempt = return . convertSuccess
instance ConvertSuccess (Object Text Text) Json where
convertSuccess = Json . helper where
helper :: TextObject -> Text
helper (Scalar s) = LT.concat
[ LT.pack "\""
, bsToText $ encodeJson $ convertSuccess s
, LT.pack "\""
]
helper (Sequence s) = LT.concat
[ LT.pack "["
, LT.intercalate (LT.pack ",") $ map helper s
, LT.pack "]"
]
helper (Mapping m) = LT.concat
[ LT.pack "{"
, LT.intercalate (LT.pack ",") $ map helper2 m
, LT.pack "}"
]
helper2 :: (Text, TextObject) -> Text
helper2 (k, v) = LT.concat
[ LT.pack "\""
, bsToText $ encodeJson $ convertSuccess k
, LT.pack "\":"
, helper v
]
bsToText :: B.ByteString -> Text
bsToText = convertSuccess
newtype Yaml = Yaml { unYaml :: Text }
instance ConvertAttempt (Object Text Text) Yaml where
convertAttempt = return . convertSuccess
instance ConvertSuccess (Object Text Text) Yaml where
convertSuccess = Yaml . convertSuccess . encodeText'
-- | Represents as an entire HTML 5 document by using the following:
--
-- * A scalar is a paragraph.
-- * A sequence is an unordered list.
-- * A mapping is a definition list.
newtype Html = Html { unHtml :: Text }
instance ConvertAttempt (Object Text Text) Html where
convertAttempt = return . convertSuccess
instance ConvertSuccess (Object Text Text) Html where
convertSuccess o = Html $ LT.concat
[ LT.pack "<!DOCTYPE html>\n<html><body>" -- FIXME full doc or just fragment?
, helper o
, LT.pack "</body></html>"
] where
helper :: TextObject -> Text
helper (Scalar s) = LT.concat
[ LT.pack "<p>"
, s
, LT.pack "</p>"
]
helper (Sequence []) = LT.pack "<ul></ul>"
helper (Sequence s) = LT.concat
[ LT.pack "<ul><li>"
, LT.intercalate (LT.pack "</li><li>") $ map helper s
, LT.pack "</li></ul>"
]
helper (Mapping m) = LT.concat $
LT.pack "<dl>" :
map helper2 m ++
[ LT.pack "</dl>" ]
helper2 :: (Text, TextObject) -> Text
helper2 (k, v) = LT.concat
[ LT.pack "<dt>"
, k
, LT.pack "</dt><dd>"
, helper v
, LT.pack "</dd>"
]

View File

@ -23,8 +23,6 @@ module Yesod.Application
) where ) where
import Web.Encodings import Web.Encodings
import Data.Object.Text
import Data.Object.String
import Data.Enumerable import Data.Enumerable
import Control.Monad (when) import Control.Monad (when)
@ -63,19 +61,6 @@ class ResourceName a => RestfulApp a where
-- | Output error response pages. -- | Output error response pages.
errorHandler :: Monad m => a -> RawRequest -> ErrorResult -> [RepT m] -- FIXME better type sig? errorHandler :: Monad m => a -> RawRequest -> ErrorResult -> [RepT m] -- FIXME better type sig?
errorHandler _ rr NotFound = reps $ toTextObject $
"Not found: " ++ show rr
errorHandler _ _ (Redirect url) =
reps $ toTextObject $ "Redirect to: " ++ url
errorHandler _ _ (InternalError e) =
reps $ toTextObject $ "Internal server error: " ++ e
errorHandler _ _ (InvalidArgs ia) =
reps $ toTextObject $ toStringObject
[ ("errorMsg", toStringObject "Invalid arguments")
, ("messages", toStringObject ia)
]
errorHandler _ _ PermissionDenied =
reps $ toTextObject "Permission denied"
-- | Whether or not we should check for overlapping resource names. -- | Whether or not we should check for overlapping resource names.
checkOverlaps :: a -> Bool checkOverlaps :: a -> Bool

View File

@ -154,6 +154,12 @@ rpxnowLogin apiKey = do
header authCookieName $ Rpxnow.identifier ident header authCookieName $ Rpxnow.identifier ident
redirect dest redirect dest
authCheck :: Handler
authCheck = error "authCheck"
authLogout :: Handler
authLogout = error "authLogout"
{- FIXME
authCheck :: Handler authCheck :: Handler
authCheck = do authCheck = do
ident <- maybeIdentifier ident <- maybeIdentifier
@ -168,3 +174,4 @@ authLogout :: Handler
authLogout = do authLogout = do
deleteCookie authCookieName deleteCookie authCookieName
return $ objectResponse [("status", "loggedout")] return $ objectResponse [("status", "loggedout")]
-}

View File

@ -38,7 +38,6 @@ module Yesod.Response
-- * Generic responses -- * Generic responses
, genResponse , genResponse
, htmlResponse , htmlResponse
, objectResponse
#if TEST #if TEST
-- * Tests -- * Tests
, testSuite , testSuite
@ -47,8 +46,6 @@ module Yesod.Response
import Yesod.Definitions import Yesod.Definitions
import Data.Time.Clock import Data.Time.Clock
import Data.Object.Text
import Data.Object.Instances
import qualified Data.ByteString as SBS import qualified Data.ByteString as SBS
import qualified Data.ByteString.Lazy as LBS import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text as ST import qualified Data.Text as ST
@ -171,25 +168,6 @@ genResponse ct t = [(ct, return $ toContent t)]
htmlResponse :: (Monad m, ToContent t) => t -> [RepT m] htmlResponse :: (Monad m, ToContent t) => t -> [RepT m]
htmlResponse = genResponse "text/html" htmlResponse = genResponse "text/html"
-- | Return a response from an Object.
objectResponse :: (Monad m, ToObject o Text Text) => o -> [RepT m]
objectResponse = reps . toTextObject
-- HasReps instances
instance Monad m => HasReps () m where
reps _ = [("text/plain", return $ toContent "")]
instance Monad m => HasReps TextObject m where
reps o =
[ ("text/html", return $ toContent $ unHtml $ convertSuccess o)
, ("application/json", return $ toContent $ unJson $ convertSuccess o)
, ("text/yaml", return $ toContent $ unYaml $ convertSuccess o)
]
{- FIXME
instance HasReps (Reps m) where
reps = id
-}
#if TEST #if TEST
----- Testing ----- Testing
testSuite :: Test testSuite :: Test

View File

@ -55,7 +55,6 @@ library
Yesod.Resource Yesod.Resource
Yesod.Yesod Yesod.Yesod
Data.Object.Html Data.Object.Html
Data.Object.Instances
Hack.Middleware.MethodOverride Hack.Middleware.MethodOverride
Hack.Middleware.ClientSession Hack.Middleware.ClientSession
Hack.Middleware.Jsonp Hack.Middleware.Jsonp