- | 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
+ = baseURI {
+ uriPath = foldl (</>) "/" [uriPath baseURI, encodePageName name ++ ".html"]
+ }
+
+
+mkPageFragmentURI :: URI -> PageName -> String -> URI
+mkPageFragmentURI baseURI name fragment
+ = baseURI {
+ uriPath = foldl (</>) "/" [uriPath baseURI, encodePageName name ++ ".html"]
+ , uriFragment = ('#' : encodeFragment fragment)
+ }
+
+
+mkFragmentURI :: String -> URI
+mkFragmentURI fragment
+ = nullURI {
+ uriFragment = ('#' : encodeFragment fragment)
+ }
+
+
+mkObjectURI :: URI -> PageName -> URI
+mkObjectURI baseURI name
+ = mkAuxiliaryURI baseURI ["object"] name
+
+
+mkAuxiliaryURI :: URI -> [String] -> PageName -> URI
+mkAuxiliaryURI baseURI basePath name
+ = baseURI {
+ uriPath = foldl (</>) "/" ([uriPath baseURI] ++ basePath ++ [encodePageName name])
+ }
+
+
+mkRakkaURI :: PageName -> URI
+mkRakkaURI name = URI {
+ uriScheme = "rakka:"
+ , uriAuthority = Nothing
+ , uriPath = encodePageName name
+ , uriQuery = ""
+ , uriFragment = ""
+ }