X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FResource%2FRender.hs;h=cb01bcd35f3aa5abca2c7da7f97a9b6d47944261;hb=859d4378c2e2a1ccc8028821a37eeaa43aaa23fb;hp=7b72400cbecbf317590f05a4a159619fc4a42843;hpb=f832f12703d807f5fc3350dc71d8624ffc5b97a5;p=Rakka.git diff --git a/Rakka/Resource/Render.hs b/Rakka/Resource/Render.hs index 7b72400..cb01bcd 100644 --- a/Rakka/Resource/Render.hs +++ b/Rakka/Resource/Render.hs @@ -5,17 +5,15 @@ module Rakka.Resource.Render import Control.Arrow import Control.Arrow.ArrowIO -import Control.Arrow.ArrowList +import Control.Arrow.ArrowIf import Data.Char import Network.HTTP.Lucu import Network.HTTP.Lucu.Utils -import Network.URI import Rakka.Environment import Rakka.Page import Rakka.Resource import Rakka.Storage import Rakka.SystemConfig -import Rakka.Utils import Rakka.Wiki.Engine import System.FilePath import System.Time @@ -27,9 +25,9 @@ import Text.XML.HXT.DOM.TypeDefs fallbackRender :: Environment -> [String] -> IO (Maybe ResourceDef) fallbackRender env path - | null path = return Nothing - | null $ head path = return Nothing - | not $ isUpper $ head $ head path = return Nothing -- /Foo/bar のような形式でない。 + | null path = return Nothing + | null $ head path = return Nothing + | isLower $ head $ head path = return Nothing -- 先頭の文字が小文字であってはならない | otherwise = return $ Just $ ResourceDef { resUsesNativeThread = False @@ -48,15 +46,15 @@ fallbackRender env path handleGet :: Environment -> PageName -> Resource () handleGet env name = runIdempotentA $ proc () - -> do pageM <- getPageA (envStorage env) -< name + -> do pageM <- getPageA (envStorage env) -< (name, Nothing) case pageM of Nothing - -> returnA -< foundNoEntity Nothing + -> handlePageNotFound env -< name Just redir@(Redirection _ _ _ _) -> handleRedirect env -< redir - Just entity@(Entity _ _ _ _ _ _ _ _ _ _ _ _) + Just entity@(Entity _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> handleGetEntity env -< entity {- @@ -66,20 +64,30 @@ handleGet env name handleRedirect :: (ArrowXml a, ArrowIO a) => Environment -> a Page (Resource ()) handleRedirect env = proc redir - -> do BaseURI baseURI <- getSysConfA (envSysConf env) (BaseURI undefined) -< () + -> do BaseURI baseURI <- getSysConfA (envSysConf env) -< () returnA -< redirect Found (mkPageURI baseURI $ redirName redir) -- FIXME {- -- デフォルトでない場合のみ存在 - lastModified="2000-01-01T00:00:00" /> + isBinary="no" + revision="112"> -- デフォルトでない場合のみ存在 + lastModified="2000-01-01T00:00:00"> + + + + + + +