)
where
-import Data.ByteString.Base (LazyByteString)
-import qualified Data.ByteString.Char8 as C8
+import Codec.Binary.UTF8.String
+import qualified Data.ByteString.Lazy as Lazy (ByteString)
import Data.Char
-import Data.Encoding
-import Data.Encoding.UTF8
import Data.Map (Map)
import Data.Maybe
+import Data.Time
import Network.HTTP.Lucu
-import Network.URI
+import Network.URI hiding (fragment)
import Subversion.Types
import System.FilePath.Posix
-import System.Time
type PageName = String
redirName :: !PageName
, redirDest :: !PageName
, redirRevision :: !(Maybe RevNum)
- , redirLastMod :: !CalendarTime
+ , redirLastMod :: !UTCTime
}
| Entity {
pageName :: !PageName
, pageIsBoring :: !Bool
, pageIsBinary :: !Bool
, pageRevision :: !RevNum
- , pageLastMod :: !CalendarTime
+ , pageLastMod :: !UTCTime
, pageSummary :: !(Maybe String)
, pageOtherLang :: !(Map LanguageTag PageName)
- , pageContent :: !LazyByteString
+ , pageContent :: !Lazy.ByteString
}
-- UTF-8 に encode してから 0x20 - 0x7E の範圍を除いて URI escape する。
encodePageName :: PageName -> FilePath
-encodePageName = escapeURIString isSafeChar . C8.unpack . encode UTF8 . fixPageName
+encodePageName = escapeURIString isSafeChar . encodeString . fixPageName
where
fixPageName :: PageName -> PageName
fixPageName = (\ (x:xs) -> toUpper x : xs) . map (\ c -> if c == ' ' then '_' else c)
-- URI unescape して UTF-8 から decode する。
decodePageName :: FilePath -> PageName
-decodePageName = decode UTF8 . C8.pack . unEscapeString
+decodePageName = decodeString . unEscapeString
encodeFragment :: String -> String
-encodeFragment = escapeURIString isSafeChar . C8.unpack . encode UTF8
+encodeFragment = escapeURIString isSafeChar . encodeString
pageFileName' :: Page -> String