diff --git a/src/Handler/Search.hs b/src/Handler/Search.hs index a4607f8..ca219a3 100644 --- a/src/Handler/Search.hs +++ b/src/Handler/Search.hs @@ -200,35 +200,44 @@ searchResultToJSON result@SearchResult{..} = do SourcePackage pn v -> (Bower.runPackageName pn, v) +moduleRoute :: SearchResult -> Text -> Route App +moduleRoute SearchResult{..} = + case srSource of + SourceBuiltin -> + BuiltinDocsR + SourcePackage pkgName version -> + PackageVersionModuleDocsR + (PathPackageName pkgName) + (PathVersion version) + +routeToModule :: SearchResult -> Text -> (Route App, Maybe Text) +routeToModule result modName = + ( moduleRoute result modName + , Nothing + ) + +routeToPackage :: SearchResult -> (Route App, Maybe a) +routeToPackage SearchResult{..} = + ( case srSource of + SourcePackage pkgName _ -> + PackageR (PathPackageName pkgName) + SourceBuiltin -> + -- this shouldn't happen + HomeR + , Nothing + ) + routeResult :: SearchResult -> (Route App, Maybe Text) -routeResult SearchResult{..} = +routeResult result@SearchResult{..} = case srInfo of PackageResult _ -> - ( case srSource of - SourcePackage pkgName _ -> - PackageR (PathPackageName pkgName) - SourceBuiltin -> - -- this shouldn't happen - HomeR - , Nothing - ) + routeToPackage result ModuleResult modName -> - ( moduleRoute modName - , Nothing - ) + routeToModule result modName DeclarationResult ns modName declTitle _ -> - ( moduleRoute modName + ( moduleRoute result modName , Just $ drop 1 $ makeFragment ns declTitle ) - where - moduleRoute = - case srSource of - SourceBuiltin -> - BuiltinDocsR - SourcePackage pkgName version -> - PackageVersionModuleDocsR - (PathPackageName pkgName) - (PathVersion version) -- | Like Prelude.take, except also returns a Bool indicating whether the -- original list has any additional elements after the returned prefix. @@ -306,15 +315,18 @@ searchResultHtml fr r = $of PackageResult _ $of ModuleResult _ - P - #{pkgName} + + P + #{pkgName} $of DeclarationResult _ moduleName _ _ - P - #{pkgName} + + P + #{pkgName} - M - #{moduleName} + + M + #{moduleName} |] where pkgName =