mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-11 19:58:28 +01:00
Add Hoogle search to package page
This commit is contained in:
parent
aa0fe190ac
commit
ce3fffcb6e
@ -20,6 +20,7 @@ getHoogleR :: SnapName -> Handler Html
|
|||||||
getHoogleR name = track "Handler.Hoogle.getHoogleR" $ do
|
getHoogleR name = track "Handler.Hoogle.getHoogleR" $ do
|
||||||
Entity _ snapshot <- lookupSnapshot name >>= maybe notFound return
|
Entity _ snapshot <- lookupSnapshot name >>= maybe notFound return
|
||||||
mquery <- lookupGetParam "q"
|
mquery <- lookupGetParam "q"
|
||||||
|
mPackageName <- lookupGetParam "package"
|
||||||
mpage <- lookupGetParam "page"
|
mpage <- lookupGetParam "page"
|
||||||
exact <- isJust <$> lookupGetParam "exact"
|
exact <- isJust <$> lookupGetParam "exact"
|
||||||
mresults' <- lookupGetParam "results"
|
mresults' <- lookupGetParam "results"
|
||||||
@ -43,7 +44,10 @@ getHoogleR name = track "Handler.Hoogle.getHoogleR" $ do
|
|||||||
case mquery of
|
case mquery of
|
||||||
Just query -> do
|
Just query -> do
|
||||||
let input = HoogleQueryInput
|
let input = HoogleQueryInput
|
||||||
{ hqiQueryInput = query
|
{ hqiQueryInput =
|
||||||
|
case mPackageName of
|
||||||
|
Nothing -> query
|
||||||
|
Just pn -> concat ["+", pn, " ", query]
|
||||||
, hqiLimitTo = count'
|
, hqiLimitTo = count'
|
||||||
, hqiOffsetBy = offset
|
, hqiOffsetBy = offset
|
||||||
, hqiExact = exact
|
, hqiExact = exact
|
||||||
|
|||||||
@ -106,6 +106,11 @@ packagePage mversion pname = track "Handler.Package.packagePage" $ do
|
|||||||
])
|
])
|
||||||
let pn = pname
|
let pn = pname
|
||||||
toPkgVer x y = concat [x, "-", y]
|
toPkgVer x y = concat [x, "-", y]
|
||||||
|
hoogleForm name =
|
||||||
|
let exact = False
|
||||||
|
mPackageName = Just pname
|
||||||
|
queryText = "" :: Text
|
||||||
|
in $(widgetFile "hoogle-form")
|
||||||
$(widgetFile "package")
|
$(widgetFile "package")
|
||||||
where enumerate = zip [0::Int ..]
|
where enumerate = zip [0::Int ..]
|
||||||
renderModules sname version = renderForest [] . moduleForest . map moduleName
|
renderModules sname version = renderForest [] . moduleForest . map moduleName
|
||||||
|
|||||||
@ -20,6 +20,7 @@ getStackageHomeR name = track "Handler.StackageHome.getStackageHomeR" $ do
|
|||||||
let hoogleForm =
|
let hoogleForm =
|
||||||
let queryText = "" :: Text
|
let queryText = "" :: Text
|
||||||
exact = False
|
exact = False
|
||||||
|
mPackageName = Nothing :: Maybe Text
|
||||||
in $(widgetFile "hoogle-form")
|
in $(widgetFile "hoogle-form")
|
||||||
packageCount <- getPackageCount sid
|
packageCount <- getPackageCount sid
|
||||||
packages <- getPackages sid
|
packages <- getPackages sid
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
<form .hoogle action=@{SnapshotR name HoogleR}>
|
<form .hoogle action=@{SnapshotR name HoogleR}>
|
||||||
<input type=search autofocus name=q value=#{queryText} placeholder="Hoogle Search Phrase" .search>
|
<input type=search autofocus name=q value=#{queryText} placeholder="Hoogle Search Phrase" .search>
|
||||||
<input .btn type="submit" value="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">
|
<label .checkbox .exact-lookup for=exact title="Only find identifiers matching your search term precisely">
|
||||||
<input type=checkbox name=exact :exact:checked #exact>
|
<input type=checkbox name=exact :exact:checked #exact>
|
||||||
Exact lookup
|
Exact lookup
|
||||||
|
|||||||
@ -101,6 +101,7 @@ $newline never
|
|||||||
$if null modules
|
$if null modules
|
||||||
<p>There are no documented modules for this package.
|
<p>There are no documented modules for this package.
|
||||||
$else
|
$else
|
||||||
|
^{hoogleForm sname}
|
||||||
^{renderModules sname (toPkgVer pname' version) modules}
|
^{renderModules sname (toPkgVer pname' version) modules}
|
||||||
|
|
||||||
$if not (LT.null (LT.renderHtml (packageDescription package)))
|
$if not (LT.null (LT.renderHtml (packageDescription package)))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user