Hi Everybody,
I'm having some strange issues with Network.CGI's pathInfo action, or else some other strangeness with pattern matching.
My "mainCGI" CGI action is:
mainCGI :: CGI CGIResult
mainCGI = pathInfo >>= outputSlotTHtml . packagesPage
outputSlotTHtml is irrelevant to my problem. packagesPage generates a SlotT IO Html -- Slot semantics are essentially irrelevant to my problem. But packagesPage calls a function called pathCrossRef which is having some problems:
packagesPage :: WebPath -> SlotT IO Html
packagesPage wp = do
infos <- getPackageInfos . pathCrossRef $ wp
...
pathCrossRef :: String -> String
pathCrossRef "/working/" = "/development/code/haskell/working/"
pathCrossRef _ = "/development/code/haskell/packages/"
The intention is that when the cgi program is called with "/working/" as an argument, the pathCrossRef should point at "/development/.../working/", and when called with "/packages/" (or anything else) as an argument, pathCrossRef should point to "/development/.../packages/".
But it is not working! When I visit http://localhost/working/, I end up using the "packages" cross ref. I have even printed the cgi argument to the Apache log, and the argument is "/working/". If I get rid of the wildcard pattern, I get a "missing pattern" error when I visit http://localhost/working/. Can anybody help?
Thanks,
Alex