]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Utils.hs
Better name-rewriting engine
[Lucu.git] / Network / HTTP / Lucu / Utils.hs
index 55acf0adc481929338a4639c7c88118f614a7e76..18370fab68cc3aa673b1ef6a85bf11bd3a87eb25 100644 (file)
@@ -4,8 +4,7 @@
   , TemplateHaskell
   , UnicodeSyntax
   #-}
--- |Utility functions used internally in the Lucu httpd. These
--- functions may be useful too for something else.
+-- |Utility functions used internally in this package.
 module Network.HTTP.Lucu.Utils
     ( splitBy
     , quoteStr
@@ -26,7 +25,6 @@ import Data.Ascii (Ascii, CIAscii, AsciiBuilder)
 import qualified Data.Ascii as A
 import Data.ByteString (ByteString)
 import qualified Data.ByteString.Char8 as Strict
-import qualified Data.ByteString.Unsafe as Strict
 import qualified Data.ByteString.Lazy.Internal as Lazy
 import Data.Char
 import Data.List hiding (last)
@@ -42,7 +40,6 @@ import Language.Haskell.TH.Syntax
 import Network.URI
 import Prelude hiding (last)
 import Prelude.Unicode
-import System.IO.Unsafe
 
 -- |>>> splitBy (== ':') "ab:c:def"
 -- ["ab", "c", "def"]
@@ -129,17 +126,7 @@ liftLazyByteString = Lazy.foldrChunks f [| Lazy.Empty |]
 
 -- |Convert an 'Ascii' to an 'Exp' representing it as a literal.
 liftAscii ∷ Ascii → Q Exp
-liftAscii a = [| A.unsafeFromByteString
-                 $ unsafePerformIO
-                 $ Strict.unsafePackAddressLen $len $ptr
-               |]
-    where
-      bs ∷ Strict.ByteString
-      bs = A.toByteString a
-
-      len, ptr ∷ Q Exp
-      len = lift $ Strict.length bs
-      ptr = litE $ stringPrimL $ Strict.unpack bs
+liftAscii a = [| A.unsafeFromByteString $(liftByteString $ A.toByteString a) |]
 
 -- |Convert a 'CIAscii' to an 'Exp' representing it as a literal.
 liftCIAscii ∷ CIAscii → Q Exp
@@ -162,18 +149,11 @@ liftMap liftK liftV m
 -- |Convert an 'UTCTime' to an 'Exp' representing it as a literal.
 liftUTCTime ∷ UTCTime → Q Exp
 liftUTCTime (UTCTime {..})
-    = [| UTCTime {
-           utctDay     = $(liftDay utctDay)
-         , utctDayTime = $(liftDiffTime utctDayTime)
-         }
-       |]
+    = [| UTCTime $(liftDay utctDay) $(liftDiffTime utctDayTime) |]
 
 liftDay ∷ Day → Q Exp
 liftDay (ModifiedJulianDay {..})
-    = [| ModifiedJulianDay {
-           toModifiedJulianDay = $(lift toModifiedJulianDay)
-         }
-       |]
+    = [| ModifiedJulianDay $(lift toModifiedJulianDay) |]
 
 liftDiffTime ∷ DiffTime → Q Exp
 liftDiffTime dt = [| fromRational ($n % $d) ∷ DiffTime |]