Skip to content

Commit 52ede3f

Browse files
authored
Adjust the vapor provider (#102)
* Adjust the provider to the changes of the latest pull request * Make the provider available to use
1 parent 9d911d5 commit 52ede3f

File tree

5 files changed

+41
-34
lines changed

5 files changed

+41
-34
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let package = Package(
1010
products: [
1111
.library(
1212
name: "HTMLKit",
13-
targets: ["HTMLKit", "HTMLKitComponents"]
13+
targets: ["HTMLKit", "HTMLKitComponents", "HTMLKitVaporProvider"]
1414
),
1515
.plugin(
1616
name: "ComponentsPlugin",

Sources/HTMLKitVaporProvider/Extensions/Vapor+HTMLKit.swift

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Abstract:
3+
The file contains the extensions of some Vapor directives.
4+
*/
5+
16
import HTMLKit
27
import Vapor
38

@@ -45,12 +50,8 @@ extension Application {
4550
}
4651
}
4752

48-
public func add<T: HTMLKit.Page>(page: T) {
49-
self.renderer.add(page: page)
50-
}
51-
52-
public func add<T: HTMLKit.View>(view: T) {
53-
self.renderer.add(view: view)
53+
public func add<T: HTMLKit.AnyLayout>(layout: T) {
54+
self.renderer.add(layout: layout)
5455
}
5556
}
5657
}
Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,38 @@
1+
/*
2+
Abstract:
3+
The file contains the cache of the Vapor renderer.
4+
*/
5+
16
import HTMLKit
27
import Vapor
38

49
public class VaporCache {
510

6-
private var cache: [String: HTMLKit.Renderer.Formula]
11+
private var storage: [String: HTMLKit.Formula]
712

813
public var count: Int {
9-
return self.cache.keys.count
14+
return self.storage.keys.count
1015
}
1116

1217
public init() {
13-
self.cache = .init()
18+
self.storage = [:]
1419
}
1520

16-
public func retrieve(name: String, on loop: EventLoop) -> EventLoopFuture<HTMLKit.Renderer.Formula?> {
21+
public func retrieve(name: String, on loop: EventLoop) -> EventLoopFuture<HTMLKit.Formula?> {
1722

18-
if let cache = self.cache[name] {
23+
if let cache = self.storage[name] {
1924
return loop.makeSucceededFuture(cache)
2025

2126
} else {
2227
return loop.makeSucceededFuture(nil)
2328
}
2429
}
2530

26-
public func upsert(name: String, formula: HTMLKit.Renderer.Formula) {
27-
self.cache.updateValue(formula, forKey: name)
31+
public func upsert(name: String, formula: HTMLKit.Formula) {
32+
self.storage.updateValue(formula, forKey: name)
2833
}
2934

3035
public func remove(name: String) {
31-
self.cache.removeValue(forKey: name)
36+
self.storage.removeValue(forKey: name)
3237
}
3338
}

Sources/HTMLKitVaporProvider/VaporRenderer.swift

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Abstract:
3+
The file contains the Vapor renderer.
4+
*/
5+
16
import HTMLKit
27
import Vapor
38

@@ -39,9 +44,9 @@ public class VaporRenderer {
3944

4045
var buffer = ByteBufferAllocator().buffer(capacity: 4096)
4146

42-
let manager = HTMLKit.Renderer.ContextManager(rootContext: context)
47+
let manager = HTMLKit.ContextManager(context: context)
4348

44-
for ingredient in formula.ingredient {
49+
for ingredient in formula.ingredients {
4550

4651
if let value = try? ingredient.render(with: manager) {
4752
buffer.writeString(value)
@@ -52,22 +57,13 @@ public class VaporRenderer {
5257
}
5358
}
5459

55-
public func add<T:HTMLKit.Page>(page: T) {
56-
57-
let formula = HTMLKit.Renderer.Formula()
58-
59-
try? page.prerender(formula)
60-
61-
self.cache.upsert(name: String(describing: type(of: page)), formula: formula)
62-
}
63-
64-
public func add<T:HTMLKit.View>(view: T) {
60+
public func add<T:HTMLKit.AnyLayout>(layout: T) {
6561

66-
let formula = HTMLKit.Renderer.Formula()
62+
let formula = HTMLKit.Formula()
6763

68-
try? view.prerender(formula)
64+
try? layout.prerender(formula)
6965

70-
self.cache.upsert(name: String(describing: type(of: view)), formula: formula)
66+
self.cache.upsert(name: String(describing: type(of: layout)), formula: formula)
7167
}
7268
}
7369

Tests/HTMLKitVaporProviderTests/ProviderTests.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Abstract:
3+
The file tests the provider.
4+
*/
5+
16
import XCTVapor
27
import HTMLKit
38
import HTMLKitVaporProvider
@@ -14,7 +19,7 @@ final class ProviderTests: XCTestCase {
1419
var context
1520

1621
var body: AnyContent {
17-
Document(type: .html5)
22+
Document(.html5)
1823
Html {
1924
Head {
2025
Title {
@@ -38,7 +43,7 @@ final class ProviderTests: XCTestCase {
3843

3944
app.views.use(.htmlkit)
4045

41-
app.htmlkit.add(view: TestView())
46+
app.htmlkit.add(layout: TestView())
4247

4348
app.get("test") { request -> EventLoopFuture<Vapor.View> in
4449
return request.view.render("TestView", TestContext(greeting: "hello world"))
@@ -70,7 +75,7 @@ final class ProviderTests: XCTestCase {
7075

7176
defer { app.shutdown() }
7277

73-
app.htmlkit.add(view: TestView())
78+
app.htmlkit.add(layout: TestView())
7479

7580
app.get("test") { request -> EventLoopFuture<Vapor.View> in
7681
return request.htmlkit.render("TestView", TestContext(greeting: "hello world"))
@@ -103,7 +108,7 @@ final class ProviderTests: XCTestCase {
103108

104109
defer { app.shutdown() }
105110

106-
app.htmlkit.add(view: TestView())
111+
app.htmlkit.add(layout: TestView())
107112

108113
app.get("test") { request async throws -> Vapor.View in
109114
return try await request.htmlkit.render("TestView", TestContext(greeting: "hello world"))

0 commit comments

Comments
 (0)