+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