Skip to content

Commit 9311a0d

Browse files
committed
censor array fields when performing special queries
1 parent b34cdb6 commit 9311a0d

28 files changed

+270
-188
lines changed

Sources/SwiftinitPages/Contexts/IdentifiablePageContext.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ extension IdentifiablePageContext<Never?>
7070
}
7171
extension IdentifiablePageContext<Unidoc.Scalar>
7272
{
73-
func constraints(_ constraints:[GenericConstraint<Unidoc.Scalar?>]) -> ConstraintsList?
73+
func constraints(
74+
_ constraints:[GenericConstraint<Unidoc.Scalar?>]) -> Swiftinit.ConstraintsList?
7475
{
7576
.init(self, constraints: constraints)
7677
}
@@ -93,7 +94,7 @@ extension IdentifiablePageContext where ID:Swiftinit.VertexPageIdentifier
9394
.init(self, bytecode: snippet.bytecode, scalars: snippet.scalars)
9495
}
9596

96-
func card(_ scalar:Unidoc.Scalar) -> GroupList.Card?
97+
func card(_ scalar:Unidoc.Scalar) -> Swiftinit.GroupList.Card?
9798
{
9899
self.cache[scalar].map
99100
{

Sources/SwiftinitPages/Sections/GroupList.swift

Lines changed: 0 additions & 37 deletions
This file was deleted.

Sources/SwiftinitPages/Sections/ConstraintsList.swift renamed to Sources/SwiftinitPages/Sections/Swiftinit.ConstraintsList.swift

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@ import HTML
22
import Signatures
33
import Unidoc
44

5-
struct ConstraintsList
5+
extension Swiftinit
66
{
7-
let context:IdentifiablePageContext<Unidoc.Scalar>
7+
struct ConstraintsList
8+
{
9+
let context:IdentifiablePageContext<Unidoc.Scalar>
810

9-
private
10-
let constraints:[GenericConstraint<Unidoc.Scalar?>]
11+
private
12+
let constraints:[GenericConstraint<Unidoc.Scalar?>]
1113

12-
init?(_ context:IdentifiablePageContext<Unidoc.Scalar>,
13-
constraints:[GenericConstraint<Unidoc.Scalar?>])
14-
{
15-
if constraints.isEmpty
14+
init?(_ context:IdentifiablePageContext<Unidoc.Scalar>,
15+
constraints:[GenericConstraint<Unidoc.Scalar?>])
1616
{
17-
return nil
18-
}
17+
if constraints.isEmpty
18+
{
19+
return nil
20+
}
1921

20-
self.context = context
21-
self.constraints = constraints
22+
self.context = context
23+
self.constraints = constraints
24+
}
2225
}
2326
}
24-
extension ConstraintsList:HTML.OutputStreamable
27+
extension Swiftinit.ConstraintsList:HTML.OutputStreamable
2528
{
2629
static
2730
func += (code:inout HTML.ContentEncoder, self:Self)
Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,37 @@
11
import HTML
22
import Unidoc
33

4+
extension Swiftinit.DenseList
5+
{
6+
struct Card
7+
{
8+
let link:HTML.Link<String>
9+
let constraints:Swiftinit.ConstraintsList?
10+
11+
init(link:HTML.Link<String>, constraints:Swiftinit.ConstraintsList?)
12+
{
13+
self.link = link
14+
self.constraints = constraints
15+
}
16+
}
17+
}
18+
extension Swiftinit.DenseList.Card:HTML.OutputStreamable
19+
{
20+
static
21+
func += (li:inout HTML.ContentEncoder, self:Self)
22+
{
23+
li[.p] { $0[.code] = self.link }
24+
25+
guard
26+
let constraints:Swiftinit.ConstraintsList = self.constraints
27+
else
28+
{
29+
return
30+
}
31+
32+
li[.p] { $0[.code] { $0.class = "constraints" } = constraints }
33+
}
34+
}
435
extension Swiftinit
536
{
637
struct DenseList
@@ -16,25 +47,33 @@ extension Swiftinit
1647
}
1748
}
1849
}
50+
extension Swiftinit.DenseList:RandomAccessCollection
51+
{
52+
var startIndex:Int { self.members.startIndex }
53+
var endIndex:Int { self.members.endIndex }
54+
55+
subscript(i:Int) -> Card?
56+
{
57+
let type:Unidoc.ConformingType = self.members[i]
58+
59+
guard
60+
let link:HTML.Link<String> = self.context.link(decl: type.id)
61+
else
62+
{
63+
return nil
64+
}
65+
66+
return .init(link: link, constraints: self.context.constraints(type.constraints))
67+
}
68+
}
1969
extension Swiftinit.DenseList:HTML.OutputStreamable
2070
{
2171
static
2272
func += (ul:inout HTML.ContentEncoder, self:Self)
2373
{
24-
for type:Unidoc.ConformingType in self.members
74+
for case let card? in self
2575
{
26-
ul[.li]
27-
{
28-
$0[.p] = self.context.link(decl: type.id)
29-
$0[.p]
30-
{
31-
$0 += "Available"
32-
$0[.code]
33-
{
34-
$0.class = "constraints"
35-
} = self.context.constraints(type.constraints)
36-
}
37-
}
76+
ul[.li] = card
3877
}
3978
}
4079
}

Sources/SwiftinitPages/Sections/GroupList.Card.swift renamed to Sources/SwiftinitPages/Sections/Swiftinit.GroupList.Card.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import HTML
22
import UnidocRecords
33

4-
extension GroupList
4+
extension Swiftinit.GroupList
55
{
66
struct Card
77
{
@@ -18,7 +18,7 @@ extension GroupList
1818
}
1919
}
2020
}
21-
extension GroupList.Card:HTML.OutputStreamable
21+
extension Swiftinit.GroupList.Card:HTML.OutputStreamable
2222
{
2323
static
2424
func += (html:inout HTML.ContentEncoder, self:Self)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import HTML
2+
import Unidoc
3+
4+
extension Swiftinit
5+
{
6+
struct GroupList
7+
{
8+
let context:IdentifiablePageContext<Unidoc.Scalar>
9+
10+
let heading:String?
11+
let scalars:[Unidoc.Scalar]
12+
13+
init(_ context:IdentifiablePageContext<Unidoc.Scalar>,
14+
heading:String?,
15+
scalars:[Unidoc.Scalar])
16+
{
17+
self.context = context
18+
self.heading = heading
19+
self.scalars = scalars
20+
}
21+
}
22+
}
23+
extension Swiftinit.GroupList:HTML.OutputStreamable
24+
{
25+
static
26+
func += (html:inout HTML.ContentEncoder, self:Self)
27+
{
28+
if let heading:String = self.heading
29+
{
30+
html[.h3] = heading
31+
}
32+
html[.ul]
33+
{
34+
for scalar:Unidoc.Scalar in self.scalars
35+
{
36+
$0 ?= self.context.card(scalar)
37+
}
38+
}
39+
}
40+
}

Sources/SwiftinitPages/Sections/GroupSections.Genericness.swift renamed to Sources/SwiftinitPages/Sections/Swiftinit.GroupLists.Genericness.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
extension GroupSections
1+
extension Swiftinit.GroupLists
22
{
33
enum Genericness:Equatable, Hashable, Comparable, Sendable
44
{

Sources/SwiftinitPages/Sections/GroupSections.Generics.swift renamed to Sources/SwiftinitPages/Sections/Swiftinit.GroupLists.Generics.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Signatures
22
import Unidoc
33
import UnidocRecords
44

5-
extension GroupSections
5+
extension Swiftinit.GroupLists
66
{
77
struct Generics
88
{
@@ -16,7 +16,7 @@ extension GroupSections
1616
}
1717
}
1818
}
19-
extension GroupSections.Generics
19+
extension Swiftinit.GroupLists.Generics
2020
{
2121
init(_ generics:__shared [GenericParameter])
2222
{

Sources/SwiftinitPages/Sections/GroupSections.Mode.swift renamed to Sources/SwiftinitPages/Sections/Swiftinit.GroupLists.Mode.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Symbols
22

3-
extension GroupSections
3+
extension Swiftinit.GroupLists
44
{
55
enum Mode:Hashable, Equatable, Sendable
66
{

Sources/SwiftinitPages/Sections/GroupSections.Partisanship.swift renamed to Sources/SwiftinitPages/Sections/Swiftinit.GroupLists.Partisanship.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Symbols
22

3-
extension GroupSections
3+
extension Swiftinit.GroupLists
44
{
55
enum Partisanship:Equatable, Hashable, Comparable, Sendable
66
{

0 commit comments

Comments
 (0)