X-Git-Url: https://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FPage.hs;h=453ed841000eb18d4859a8ccfe0280a088066369;hb=7a4f13a3d483c950743e1ced001ade4406d239d3;hp=9d84cf28df7f0285c2788842773063998c638a5b;hpb=e0da4e15d6a4053be720bddf62ae755f1f63ec3b;p=Rakka.git diff --git a/Rakka/Page.hs b/Rakka/Page.hs index 9d84cf2..453ed84 100644 --- a/Rakka/Page.hs +++ b/Rakka/Page.hs @@ -19,18 +19,16 @@ module Rakka.Page ) 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 @@ -44,7 +42,7 @@ data Page redirName :: !PageName , redirDest :: !PageName , redirRevision :: !(Maybe RevNum) - , redirLastMod :: !CalendarTime + , redirLastMod :: !UTCTime } | Entity { pageName :: !PageName @@ -57,16 +55,16 @@ data Page , 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) @@ -82,11 +80,11 @@ isSafeChar 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