]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/StatusCode/Internal.hs
Code clean-up using convertible-text.
[Lucu.git] / Network / HTTP / Lucu / StatusCode / Internal.hs
index d6e892b52259156bb7bcdf591b2983a9e7023a53..1d9117ceb1d3ade43416efe25ea0261a76fecb24 100644 (file)
@@ -1,10 +1,13 @@
 {-# LANGUAGE
     ExistentialQuantification
   , FlexibleInstances
 {-# LANGUAGE
     ExistentialQuantification
   , FlexibleInstances
+  , MultiParamTypeClasses
+  , OverlappingInstances
   , TemplateHaskell
   , UnicodeSyntax
   , ViewPatterns
   #-}
   , TemplateHaskell
   , UnicodeSyntax
   , ViewPatterns
   #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
 module Network.HTTP.Lucu.StatusCode.Internal
     ( StatusCode(..)
     , SomeStatusCode(..)
 module Network.HTTP.Lucu.StatusCode.Internal
     ( StatusCode(..)
     , SomeStatusCode(..)
@@ -14,11 +17,14 @@ module Network.HTTP.Lucu.StatusCode.Internal
     )
     where
 import Control.Applicative
     )
     where
 import Control.Applicative
-import Data.Ascii (Ascii)
+import Data.Ascii (Ascii, AsciiBuilder)
 import qualified Data.Ascii as A
 import Data.Attoparsec.Char8 as P
 import Data.Attoparsec.Lazy as LP
 import qualified Data.ByteString.Lazy.Char8 as Lazy
 import qualified Data.Ascii as A
 import Data.Attoparsec.Char8 as P
 import Data.Attoparsec.Lazy as LP
 import qualified Data.ByteString.Lazy.Char8 as Lazy
+import Data.Convertible.Base
+import Data.Convertible.Instances.Ascii ()
+import Data.Convertible.Utils
 import Data.List
 import Language.Haskell.TH.Lib
 import Language.Haskell.TH.Syntax
 import Data.List
 import Language.Haskell.TH.Lib
 import Language.Haskell.TH.Syntax
@@ -73,6 +79,22 @@ instance StatusCode SomeStatusCode where
     textualStatus (SomeStatusCode sc) = textualStatus sc
     fromStatusCode = id
 
     textualStatus (SomeStatusCode sc) = textualStatus sc
     fromStatusCode = id
 
+instance StatusCode sc ⇒ ConvertSuccess sc Ascii where
+    {-# INLINE convertSuccess #-}
+    convertSuccess = convertSuccessVia ((⊥) ∷ AsciiBuilder)
+
+instance StatusCode sc ⇒ ConvertSuccess sc AsciiBuilder where
+    {-# INLINE convertSuccess #-}
+    convertSuccess = cs ∘ textualStatus
+
+instance StatusCode sc ⇒ ConvertAttempt sc Ascii where
+    {-# INLINE convertAttempt #-}
+    convertAttempt = return ∘ cs
+
+instance StatusCode sc ⇒ ConvertAttempt sc AsciiBuilder where
+    {-# INLINE convertAttempt #-}
+    convertAttempt = return ∘ cs
+
 -- |'QuasiQuoter' for 'StatusCode' declarations.
 --
 -- Top-level splicing
 -- |'QuasiQuoter' for 'StatusCode' declarations.
 --
 -- Top-level splicing