import Control.Arrow
import Control.Arrow.ArrowList
+import Data.Char
import Data.List
import Data.Maybe
import Network.URI
formatPageLink
= proc (baseURI, PageLink page fragment text)
-> let uri = case (page, fragment) of
- (Just x, Just y) -> mkPageFragmentURI baseURI x y
- (Just x, Nothing) -> mkPageURI baseURI x
+ (Just x, Just y) -> mkPageFragmentURI baseURI (fix x) y
+ (Just x, Nothing) -> mkPageURI baseURI (fix x)
(Nothing, Just y) -> nullURI { uriFragment = ('#':y) }
+ fix = (\ (x:xs) -> toUpper x : xs) . map (\ c -> if c == ' ' then '_' else c)
href = uriToString id uri ""
dLabel = fromMaybe "" page ++ fromMaybe "" (fmap ('#':) fragment)
label = fromMaybe dLabel text