Skip to content

Commit 4796040

Browse files
authored
Merge pull request #1280 from 414owen/os/revamp-detailed-deps-page
feat: Specify component types in detailed deps page
2 parents 88b384a + fc4ec43 commit 4796040

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

src/Distribution/Server/Features/Html.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1461,7 +1461,7 @@ mkHtmlCandidates ServerEnv{..} utilities@HtmlUtilities{..}
14611461
dependenciesPage :: Bool -> PackageRender -> URL -> Resource.XHtml
14621462
dependenciesPage isCandidate render docURL =
14631463
Resource.XHtml $ hackagePage (pkg ++ ": dependencies") $
1464-
[h2 << heading, Pages.renderDetailedDependencies render]
1464+
[h1 << heading, Pages.renderDetailedDependencies render]
14651465
++ Pages.renderPackageFlags render docURL
14661466
where
14671467
pkg = display $ rendPkgId render

src/Distribution/Server/Packages/Render.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,11 @@ data ModSigIndex = ModSigIndex {
6767
data PackageRender = PackageRender {
6868
rendPkgId :: PackageIdentifier,
6969
rendLibName :: LibraryName -> String,
70+
rendComponentName :: ComponentName -> String,
7071
rendDepends :: [Dependency],
7172
rendExecNames :: [String],
7273
rendLibraryDeps :: [(LibraryName, DependencyTree)],
73-
rendExecutableDeps :: [(String, DependencyTree)],
74+
rendExecutableDeps :: [(ComponentName, DependencyTree)],
7475
rendLicenseName :: String,
7576
rendLicenseFiles :: [FilePath],
7677
rendMaintainer :: Maybe String,
@@ -100,8 +101,9 @@ doPackageRender users info = PackageRender
100101
{ rendPkgId = packageId'
101102
, rendDepends = flatDependencies genDesc
102103
, rendLibName = renderLibName
104+
, rendComponentName = renderComponentName
103105
, rendExecNames = map (unUnqualComponentName . exeName) (executables flatDesc)
104-
, rendExecutableDeps = (unUnqualComponentName *** depTree buildInfo)
106+
, rendExecutableDeps = (CExeName *** depTree buildInfo)
105107
`map` condExecutables genDesc
106108
, rendLibraryDeps = second (depTree libBuildInfo) <$> allCondLibs genDesc
107109
, rendLicenseName = prettyShow (license desc) -- maybe make this a bit more human-readable
@@ -182,6 +184,10 @@ doPackageRender users info = PackageRender
182184
renderLibName (LSubLibName name) =
183185
packageName' ++ ":" ++ unUnqualComponentName name
184186

187+
renderComponentName :: ComponentName -> String
188+
renderComponentName (CLibName name) = renderLibName name
189+
renderComponentName name@(CNotLibName _) = componentNameRaw name
190+
185191
allCondLibs :: GenericPackageDescription -> [(LibraryName, CondTree ConfVar [Dependency] Library)]
186192
allCondLibs desc = maybeToList ((LMainLibName,) <$> condLibrary desc)
187193
++ (first LSubLibName <$> condSubLibraries desc)

src/Distribution/Server/Pages/Package.hs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import qualified Text.XHtml.Strict
3737
import Data.Bool (bool)
3838
import Data.Maybe (fromMaybe, isJust, mapMaybe, catMaybes)
3939
import Data.List (intersperse, intercalate, partition)
40-
import Control.Arrow (second, Arrow (..))
40+
import Control.Arrow (Arrow (..))
4141
import System.FilePath.Posix ((</>), (<.>))
4242

4343
import qualified Documentation.Haddock.Markup as Haddock
@@ -201,11 +201,6 @@ moduleSection render mdocIndex docURL mPkgId quickNav = case renderedModules of
201201
renderedModules :: [(LibraryName, ModSigIndex)]
202202
renderedModules = rendModules render mdocIndex
203203

204-
tabulate :: [(String, Html)] -> Html
205-
tabulate items = table ! [theclass "properties"] <<
206-
[tr << [th << t, td << d] | (t, d) <- items]
207-
208-
209204
renderDependencies :: PackageRender -> (String, Html)
210205
renderDependencies render =
211206
("Dependencies", summary +++ detailsLink)
@@ -236,12 +231,23 @@ nonbreakingSpan :: Html -> Html
236231
nonbreakingSpan str = thespan ! [thestyle "white-space: nowrap"] << str
237232

238233
renderDetailedDependencies :: PackageRender -> Html
239-
renderDetailedDependencies pkgRender =
240-
tabulate $ map (second (fromMaybe noDeps . render)) targets
234+
renderDetailedDependencies pkgRender
235+
= mconcat (mapMaybe renderComponentType componentsByType)
236+
241237
where
242-
targets :: [(String, DependencyTree)]
243-
targets = (first (rendLibName pkgRender) <$> rendLibraryDeps pkgRender)
244-
++ rendExecutableDeps pkgRender
238+
componentsByType :: [(String, [(ComponentName, DependencyTree)])]
239+
componentsByType =
240+
[ ("Libraries", first CLibName <$> rendLibraryDeps pkgRender)
241+
, ("Executables", rendExecutableDeps pkgRender)
242+
]
243+
244+
renderComponentType :: (String, [(ComponentName, DependencyTree)]) -> Maybe Html
245+
renderComponentType (_, []) = Nothing
246+
renderComponentType (componentType, items) = Just $ mconcat
247+
[ h2 << componentType
248+
, flip foldMap items $ \(componentName, deptree) ->
249+
h3 << rendComponentName pkgRender componentName +++ fromMaybe noDeps (render deptree)
250+
]
245251

246252
noDeps = list [toHtml "No dependencies"]
247253

@@ -257,7 +263,7 @@ renderDetailedDependencies pkgRender =
257263
NotBuildable -> [strong << "buildable:" +++ " False"]
258264

259265
list :: [Html] -> Html
260-
list items = thediv ! [identifier "detailed-dependencies"] << unordList items
266+
list items = unordList items ! [identifier "detailed-dependencies"]
261267

262268
renderComponent :: CondBranch ConfVar [Dependency] IsBuildable
263269
-> Maybe Html

0 commit comments

Comments
 (0)