X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FUtils.hs;h=18370fab68cc3aa673b1ef6a85bf11bd3a87eb25;hp=55acf0adc481929338a4639c7c88118f614a7e76;hb=cc074d0ce3f7df2544bc2baddca4e7730ecdf0a0;hpb=4e41b11200285142757434e9d67e17ed20fae455 diff --git a/Network/HTTP/Lucu/Utils.hs b/Network/HTTP/Lucu/Utils.hs index 55acf0a..18370fa 100644 --- a/Network/HTTP/Lucu/Utils.hs +++ b/Network/HTTP/Lucu/Utils.hs @@ -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 |]