FrontMatter accessible from templates.

This commit is contained in:
JesseBrault0709 2023-01-04 21:17:12 -06:00
parent 5b2f83898d
commit b293bb856b
5 changed files with 21 additions and 6 deletions

View File

@ -62,7 +62,7 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator {
}
// Render the template using the result of rendering the text earlier
def result = template.type.renderer.render(template, renderedText, parts)
def result = template.type.renderer.render(template, frontMatter, renderedText, parts)
logger.debug('result: {}', result)
// Output the result to the outfile, an .html file

View File

@ -2,6 +2,7 @@ package com.jessebrault.ssg.template
import com.jessebrault.ssg.part.Part
import com.jessebrault.ssg.part.PartsMap
import com.jessebrault.ssg.text.FrontMatter
import groovy.text.GStringTemplateEngine
import groovy.text.TemplateEngine
@ -10,8 +11,9 @@ class GspTemplateRenderer implements TemplateRenderer {
private static final TemplateEngine engine = new GStringTemplateEngine()
@Override
String render(Template template, String text, Collection<Part> parts) {
String render(Template template, FrontMatter frontMatter, String text, Collection<Part> parts) {
engine.createTemplate(template.text).make([
frontMatter: frontMatter,
text: text,
parts: new PartsMap(parts)
])

View File

@ -1,7 +1,8 @@
package com.jessebrault.ssg.template
import com.jessebrault.ssg.part.Part
import com.jessebrault.ssg.text.FrontMatter
interface TemplateRenderer {
String render(Template template, String text, Collection<Part> parts)
String render(Template template, FrontMatter frontMatter, String text, Collection<Part> parts)
}

View File

@ -11,12 +11,12 @@ class FrontMatter {
private final Map<String, List<String>> data
String getSingle(String key) {
String get(String key) {
data[key][0]
}
String getAt(String key) {
this.getSingle(key)
this.get(key)
}
List<String> getList(String key) {

View File

@ -3,6 +3,7 @@ package com.jessebrault.ssg.template
import com.jessebrault.ssg.part.GspPartRenderer
import com.jessebrault.ssg.part.Part
import com.jessebrault.ssg.part.PartType
import com.jessebrault.ssg.text.FrontMatter
import org.junit.jupiter.api.Test
import static org.junit.jupiter.api.Assertions.assertEquals
@ -23,8 +24,19 @@ class GspTemplateRendererTests {
new PartType(['.gsp'], new GspPartRenderer()),
'Hello, $person!'
)
def r = this.renderer.render(template, '', [part])
def r = this.renderer.render(template, new FrontMatter([:]), '', [part])
assertEquals('Hello, World!', r)
}
@Test
void frontMatter() {
def template = new Template(
"<%= frontMatter['title'] %>",
null,
null
)
def r = this.renderer.render(template, new FrontMatter([title: ['Hello!']]), '', [])
assertEquals('Hello!', r)
}
}