-
--- | Convert the given article to either a URL or a filesystem
--- path. If the given article exists on the filesystem, we assume
--- it's a file. Otherwise, we check to see if it's a URL. Failing
--- that, we try to construct a URL from what we're given and do our
--- best.
-real_article_path :: String -> IO String
-real_article_path s = do
- is_file <- doesFileExist s
- return $ if is_file then s else check_cases
- where
- abs_current =
- case make_absolute_url "current" of
- Nothing -> s
- Just ac -> ac
- abs_s =
- case make_absolute_url s of
- Nothing -> s
- Just as -> as
-
- check_cases :: String
- check_cases
- | is_lwn_url s = s
- | s `contains` "current" = abs_current
- | s =~ "^[0-9]+$" = abs_s
- | otherwise = s -- Give up
-