Skip to content

Commit 38e3144

Browse files
authored
Fix extend not rendered when wrapped by with (#129)
1 parent 547a134 commit 38e3144

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

Sources/LeafKit/LeafSyntax/LeafSyntax.swift

+2
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ extension Syntax: BodiedSyntax {
8585
.custom(let bS as BodiedSyntax),
8686
.export(let bS as BodiedSyntax),
8787
.extend(let bS as BodiedSyntax),
88+
.with(let bS as BodiedSyntax),
8889
.loop(let bS as BodiedSyntax): return bS.externals()
8990
default: return .init()
9091
}
@@ -125,6 +126,7 @@ extension Syntax: BodiedSyntax {
125126
.custom(let bS as BodiedSyntax),
126127
.export(let bS as BodiedSyntax),
127128
.extend(let bS as BodiedSyntax),
129+
.with(let bS as BodiedSyntax),
128130
.loop(let bS as BodiedSyntax): result += bS.inlineRefs(externals, imports)
129131
case .expression(let pDA): result.append(.expression(pDA.inlineImports(imports)))
130132
// .variable, .raw

Tests/LeafKitTests/LeafTests.swift

+28
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,34 @@ final class LeafTests: XCTestCase {
224224
try XCTAssertEqual(render(template, ["parent": ["child": "Elizabeth"]]), expected)
225225
}
226226

227+
func testWithWrappingExtend() throws {
228+
let header = """
229+
<h1>#(child)</h1>
230+
"""
231+
232+
let base = """
233+
<body>#with(parent):<main>#extend("header")</main>#endwith</body>
234+
"""
235+
236+
let expected = """
237+
<body><main><h1>Elizabeth</h1></main></body>
238+
"""
239+
240+
let headerAST = try LeafAST(name: "header", ast: parse(header))
241+
let baseAST = try LeafAST(name: "base", ast: parse(base))
242+
243+
let baseResolved = LeafAST(from: baseAST, referencing: ["header": headerAST])
244+
245+
var serializer = LeafSerializer(
246+
ast: baseResolved.ast,
247+
ignoreUnfoundImports: false
248+
)
249+
let view = try serializer.serialize(context: ["parent": ["child": "Elizabeth"]])
250+
let str = view.getString(at: view.readerIndex, length: view.readableBytes) ?? ""
251+
252+
XCTAssertEqual(str, expected)
253+
}
254+
227255
func testExtendWithSugar() throws {
228256
let header = """
229257
<h1>#(child)</h1>

0 commit comments

Comments
 (0)