FrontMatter accessible from templates.
This commit is contained in:
parent
5b2f83898d
commit
b293bb856b
@ -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
|
||||
|
@ -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)
|
||||
])
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user