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
|
// 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)
|
logger.debug('result: {}', result)
|
||||||
|
|
||||||
// Output the result to the outfile, an .html file
|
// 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.Part
|
||||||
import com.jessebrault.ssg.part.PartsMap
|
import com.jessebrault.ssg.part.PartsMap
|
||||||
|
import com.jessebrault.ssg.text.FrontMatter
|
||||||
import groovy.text.GStringTemplateEngine
|
import groovy.text.GStringTemplateEngine
|
||||||
import groovy.text.TemplateEngine
|
import groovy.text.TemplateEngine
|
||||||
|
|
||||||
@ -10,8 +11,9 @@ class GspTemplateRenderer implements TemplateRenderer {
|
|||||||
private static final TemplateEngine engine = new GStringTemplateEngine()
|
private static final TemplateEngine engine = new GStringTemplateEngine()
|
||||||
|
|
||||||
@Override
|
@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([
|
engine.createTemplate(template.text).make([
|
||||||
|
frontMatter: frontMatter,
|
||||||
text: text,
|
text: text,
|
||||||
parts: new PartsMap(parts)
|
parts: new PartsMap(parts)
|
||||||
])
|
])
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package com.jessebrault.ssg.template
|
package com.jessebrault.ssg.template
|
||||||
|
|
||||||
import com.jessebrault.ssg.part.Part
|
import com.jessebrault.ssg.part.Part
|
||||||
|
import com.jessebrault.ssg.text.FrontMatter
|
||||||
|
|
||||||
interface TemplateRenderer {
|
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
|
private final Map<String, List<String>> data
|
||||||
|
|
||||||
String getSingle(String key) {
|
String get(String key) {
|
||||||
data[key][0]
|
data[key][0]
|
||||||
}
|
}
|
||||||
|
|
||||||
String getAt(String key) {
|
String getAt(String key) {
|
||||||
this.getSingle(key)
|
this.get(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> getList(String 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.GspPartRenderer
|
||||||
import com.jessebrault.ssg.part.Part
|
import com.jessebrault.ssg.part.Part
|
||||||
import com.jessebrault.ssg.part.PartType
|
import com.jessebrault.ssg.part.PartType
|
||||||
|
import com.jessebrault.ssg.text.FrontMatter
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals
|
import static org.junit.jupiter.api.Assertions.assertEquals
|
||||||
@ -23,8 +24,19 @@ class GspTemplateRendererTests {
|
|||||||
new PartType(['.gsp'], new GspPartRenderer()),
|
new PartType(['.gsp'], new GspPartRenderer()),
|
||||||
'Hello, $person!'
|
'Hello, $person!'
|
||||||
)
|
)
|
||||||
def r = this.renderer.render(template, '', [part])
|
def r = this.renderer.render(template, new FrontMatter([:]), '', [part])
|
||||||
assertEquals('Hello, World!', r)
|
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