Skip to content

Commit 1332572

Browse files
committed
implement Realms page
1 parent 2f7f6c1 commit 1332572

33 files changed

+395
-92
lines changed

Assets/css/Main.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/css/Main.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/HTTP/HTTP.ServerResponseFactory.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ protocol _HTTPServerResponseFactory<Format>
1616
{
1717
associatedtype Format
1818

19+
consuming
1920
func response(as format:Format) throws -> HTTP.ServerResponse
2021
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
extension Swiftinit
2+
{
3+
@frozen public
4+
enum Realm:StaticRoot
5+
{
6+
@inlinable public static
7+
var root:String { "realm" }
8+
}
9+
}

Sources/SwiftinitPages/Surfaces/Administration/Swiftinit.AdminPage.Recode.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension Swiftinit.AdminPage.Recode
2525
extension Swiftinit.AdminPage.Recode:Swiftinit.RenderablePage
2626
{
2727
public
28-
var title:String { "Schema - Administrator Tools" }
28+
var title:String { "Schema · Administrator Tools" }
2929
}
3030
extension Swiftinit.AdminPage.Recode:Swiftinit.StaticPage
3131
{

Sources/SwiftinitPages/Surfaces/Administration/Swiftinit.AdminPage.Slaves.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ extension Swiftinit.AdminPage.Slaves
2929
extension Swiftinit.AdminPage.Slaves:Swiftinit.RenderablePage
3030
{
3131
public
32-
var title:String { "Slaves - Administrator Tools" }
32+
var title:String { "Slaves · Administrator Tools" }
3333
}
3434
extension Swiftinit.AdminPage.Slaves:Swiftinit.StaticPage
3535
{

Sources/SwiftinitPages/Surfaces/Editions/Swiftinit.TagsPage.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ extension Swiftinit.TagsPage
7575
}
7676
extension Swiftinit.TagsPage:Swiftinit.RenderablePage
7777
{
78-
var title:String { "Git Tags - \(self.package.symbol)" }
78+
var title:String { "Git Tags · \(self.package.symbol)" }
7979
}
8080
extension Swiftinit.TagsPage:Swiftinit.StaticPage
8181
{
@@ -218,7 +218,10 @@ extension Swiftinit.TagsPage:Swiftinit.ApplicationPage
218218
{
219219
if let realm:Unidoc.RealmMetadata = self.realm
220220
{
221-
$0[.span] = realm.symbol
221+
$0[.a]
222+
{
223+
$0.href = "\(Swiftinit.Realm[realm.symbol])"
224+
} = realm.symbol
222225

223226
guard self.package.realmAligning
224227
else

Sources/SwiftinitPages/Surfaces/Editions/Unidoc.PackageQuery.Output (ext).swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import UnidocRecords
77

88
extension Unidoc.PackageQuery.Output:HTTP.ServerResponseFactory
99
{
10-
public
10+
public consuming
1111
func response(as format:Swiftinit.RenderFormat) -> HTTP.ServerResponse
1212
{
1313
switch format.accept
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import Symbols
2+
import URI
3+
4+
extension Swiftinit.Realm
5+
{
6+
@inlinable public static
7+
subscript(realm:String) -> URI
8+
{
9+
var uri:URI = Self.uri
10+
11+
uri.path.append(realm)
12+
13+
return uri
14+
}
15+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import HTML
2+
import URI
3+
4+
extension Swiftinit
5+
{
6+
struct RealmPage
7+
{
8+
let metadata:Unidoc.RealmMetadata
9+
let packages:[Unidoc.PackageMetadata]
10+
let user:Unidoc.User?
11+
12+
private
13+
init(metadata:Unidoc.RealmMetadata,
14+
packages:[Unidoc.PackageMetadata],
15+
user:Unidoc.User?)
16+
{
17+
self.metadata = metadata
18+
self.packages = packages
19+
self.user = user
20+
}
21+
}
22+
}
23+
extension Swiftinit.RealmPage
24+
{
25+
init(from output:consuming Unidoc.RealmQuery.Output)
26+
{
27+
let output:Unidoc.RealmQuery.Output = output
28+
29+
var packages:[Unidoc.PackageMetadata] = output.packages
30+
let metadata:Unidoc.RealmMetadata = output.metadata
31+
let user:Unidoc.User? = (consume output).user
32+
33+
packages.sort { $0.symbol < $1.symbol }
34+
35+
self.init(metadata: metadata, packages: packages, user: user)
36+
}
37+
}
38+
extension Swiftinit.RealmPage:Swiftinit.RenderablePage
39+
{
40+
var title:String { "Realms · \(self.metadata.symbol)" }
41+
}
42+
extension Swiftinit.RealmPage:Swiftinit.StaticPage
43+
{
44+
var location:URI { Swiftinit.Realm[self.metadata.symbol] }
45+
}
46+
extension Swiftinit.RealmPage:Swiftinit.ApplicationPage
47+
{
48+
func main(_ main:inout HTML.ContentEncoder, format:Swiftinit.RenderFormat)
49+
{
50+
main[.section, { $0.class = "introduction" }]
51+
{
52+
$0[.h1] = "\(self.metadata.symbol) (realm)"
53+
}
54+
55+
main[.section, { $0.class = "details" }]
56+
{
57+
if self.packages.isEmpty
58+
{
59+
$0[.p] = "This realm contains no packages."
60+
return
61+
}
62+
63+
$0[.h2] = "Realm members"
64+
$0[.ol, { $0.class = "packages" }]
65+
{
66+
for package:Unidoc.PackageMetadata in self.packages
67+
{
68+
$0[.li]
69+
{
70+
$0[.a]
71+
{
72+
$0.href = "\(Swiftinit.Tags[package.symbol])"
73+
} = "\(package.symbol)"
74+
}
75+
}
76+
}
77+
}
78+
}
79+
}

0 commit comments

Comments
 (0)