Add Hoogle search to package page

This commit is contained in:
Michael Snoyman 2016-11-21 07:30:46 +02:00
parent aa0fe190ac
commit ce3fffcb6e
5 changed files with 14 additions and 1 deletions

View File

@ -20,6 +20,7 @@ getHoogleR :: SnapName -> Handler Html
getHoogleR name = track "Handler.Hoogle.getHoogleR" $ do
Entity _ snapshot <- lookupSnapshot name >>= maybe notFound return
mquery <- lookupGetParam "q"
mPackageName <- lookupGetParam "package"
mpage <- lookupGetParam "page"
exact <- isJust <$> lookupGetParam "exact"
mresults' <- lookupGetParam "results"
@ -43,7 +44,10 @@ getHoogleR name = track "Handler.Hoogle.getHoogleR" $ do
case mquery of
Just query -> do
let input = HoogleQueryInput
{ hqiQueryInput = query
{ hqiQueryInput =
case mPackageName of
Nothing -> query
Just pn -> concat ["+", pn, " ", query]
, hqiLimitTo = count'
, hqiOffsetBy = offset
, hqiExact = exact

View File

@ -106,6 +106,11 @@ packagePage mversion pname = track "Handler.Package.packagePage" $ do
])
let pn = pname
toPkgVer x y = concat [x, "-", y]
hoogleForm name =
let exact = False
mPackageName = Just pname
queryText = "" :: Text
in $(widgetFile "hoogle-form")
$(widgetFile "package")
where enumerate = zip [0::Int ..]
renderModules sname version = renderForest [] . moduleForest . map moduleName

View File

@ -20,6 +20,7 @@ getStackageHomeR name = track "Handler.StackageHome.getStackageHomeR" $ do
let hoogleForm =
let queryText = "" :: Text
exact = False
mPackageName = Nothing :: Maybe Text
in $(widgetFile "hoogle-form")
packageCount <- getPackageCount sid
packages <- getPackages sid

View File

@ -1,6 +1,8 @@
<form .hoogle action=@{SnapshotR name HoogleR}>
<input type=search autofocus name=q value=#{queryText} placeholder="Hoogle Search Phrase" .search>
<input .btn type="submit" value="Search">
$maybe packageName <- mPackageName
<input type=hidden name=package value=#{packageName}>
<label .checkbox .exact-lookup for=exact title="Only find identifiers matching your search term precisely">
<input type=checkbox name=exact :exact:checked #exact>
Exact lookup

View File

@ -101,6 +101,7 @@ $newline never
$if null modules
<p>There are no documented modules for this package.
$else
^{hoogleForm sname}
^{renderModules sname (toPkgVer pname' version) modules}
$if not (LT.null (LT.renderHtml (packageDescription package)))