+
+
+-- URI unescape して UTF-8 から decode する。
+decodePageName :: FilePath -> PageName
+decodePageName = decode UTF8 . C8.pack . unEscapeString
+
+
+mkPageURI :: URI -> PageName -> URI
+mkPageURI baseURI name
+ | uriPath baseURI == "" = baseURI { uriPath = "/" ++ encoded }
+ | uriPath baseURI == "/" = baseURI { uriPath = "/" ++ encoded }
+ | last (uriPath baseURI) == '/' = baseURI { uriPath = uriPath baseURI ++ encoded }
+ | otherwise = baseURI { uriPath = uriPath baseURI ++ "/" ++ encoded }
+ where
+ encoded = encodePageName name