]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/PageEntity.hs
Fixing build breakage...
[Rakka.git] / Rakka / Resource / PageEntity.hs
index bf7753ffba068984d7573d25260b200d384156e8..c805ae5fe9af0ec4f44152c8a7e2278523ecb7a8 100644 (file)
@@ -2,16 +2,14 @@ module Rakka.Resource.PageEntity
     ( fallbackPageEntity
     )
     where
-
-import qualified Codec.Binary.UTF8.String as UTF8
 import           Control.Monad.Trans
 import qualified Data.ByteString.Lazy as L hiding (ByteString)
 import           Data.Char
 import qualified Data.Map as M
 import           Data.Maybe
 import           Data.Time
+import qualified Data.Time.W3C as W3C
 import           Network.HTTP.Lucu
-import           Network.HTTP.Lucu.Utils
 import           Network.URI hiding (path)
 import           Rakka.Environment
 import           Rakka.Page
@@ -19,33 +17,29 @@ import           Rakka.Resource
 import           Rakka.Storage
 import           Rakka.SystemConfig
 import           Rakka.Utils
-import           Rakka.W3CDateTime
 import           Rakka.Wiki.Engine
-import           System.FilePath
+import           System.FilePath.Posix
 import           Text.HyperEstraier hiding (getText)
-import           Text.XML.HXT.Arrow
-import           Text.XML.HXT.DOM.TypeDefs
-import           Text.XML.HXT.DOM.XmlKeywords
+import           Text.XML.HXT.XPath
 
 
 fallbackPageEntity :: Environment -> [String] -> IO (Maybe ResourceDef)
 fallbackPageEntity env path
-    | null path                  = return Nothing
-    | null $ head path           = return Nothing
-    | isLower $ head $ head path = return Nothing -- 先頭の文字が小文字であってはならない
+    | null name           = return Nothing
+    | isLower $ head name = return Nothing -- 先頭の文字が小文字であってはならない
     | otherwise
         = return $ Just $ ResourceDef {
             resUsesNativeThread = False
           , resIsGreedy         = True
-          , resGet              = Just $ handleGet    env (toPageName path)
+          , resGet              = Just $ handleGet    env name
           , resHead             = Nothing
           , resPost             = Nothing
-          , resPut              = Just $ handlePut    env (toPageName path)
-          , resDelete           = Just $ handleDelete env (toPageName path)
+          , resPut              = Just $ handlePut    env name
+          , resDelete           = Just $ handleDelete env name
           }
     where
-      toPageName :: [String] -> PageName
-      toPageName = decodePageName . dropExtension . joinWith "/"
+      name :: PageName
+      name = (dropExtension . UTF8.decodeString . joinPath) path
 
 
 handleGet :: Environment -> PageName -> Resource ()
@@ -83,9 +77,11 @@ handleRedirect env
                                                                 >>>
                                                                 xmlizePage
                                                                 >>>
-                                                                writeDocumentToString [ (a_indent, v_1) ]
+                                                                writeDocumentToString [ (a_indent         , v_1 )
+                                                                                      , (a_output_encoding, utf8)
+                                                                                      , (a_no_xml_pi      , v_0 ) ]
                                                               )
-                                 output $ UTF8.encodeString resultStr
+                                 output resultStr
 
                        _   -> do BaseURI baseURI <- getSysConf (envSysConf env)
                                  let uri = mkPageFragmentURI
@@ -264,7 +260,7 @@ entityToRSS env
                       += ( eelem "dc:date"
                            += ( arrIO (utcToLocalZonedTime . entityLastMod)
                                 >>>
-                                arr formatW3CDateTime
+                                arr W3C.format
                                 >>>
                                 mkText
                               )