hoogle-4.0.6: src/Hoogle/Item/URL.hs
module Hoogle.Item.URL where
import General.Code
import Hoogle.Item.Item
import Numeric
import Data.Binary.Defer.Index
entryURL :: Entry -> String
entryURL e@Entry{entryType=EntryModule} = entryModuleURL e
entryURL e@Entry{entryType=EntryPackage} = entryPackageURL e
entryURL e@Entry{entryType=EntryOther} = entryModuleURL e ++ "#v:" ++ entryName e
entryURL e@Entry{entryType=EntryKeyword} =
"http://www.haskell.org/haskellwiki/Keywords#" ++ concatMap f (entryName e)
where
f x | isAlpha x || x `elem` "_-:" = [x]
| otherwise = '.' : map toUpper (showHex (ord x) "")
entryModuleURL :: Entry -> String
entryModuleURL Entry{entryModule=Just m, entryPackage=p} | pkg /= "" =
pkg ++ concat (intersperse "-" name) ++ ".html"
where
name = moduleName $ fromLink m
pkg = haddockURL $ fromLink p
entryModuleURL _ = ""
entryPackageURL :: Entry -> String
entryPackageURL e = if a == "" then b else a
where Package{hackageURL=a, haddockURL=b} = fromLink $ entryPackage e