diff --git a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy index 95e6e45..6df75ee 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy @@ -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 diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy index affa50b..0897599 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy @@ -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 parts) { + String render(Template template, FrontMatter frontMatter, String text, Collection parts) { engine.createTemplate(template.text).make([ + frontMatter: frontMatter, text: text, parts: new PartsMap(parts) ]) diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateRenderer.groovy index c7c21e1..fa80228 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateRenderer.groovy @@ -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 parts) + String render(Template template, FrontMatter frontMatter, String text, Collection parts) } diff --git a/lib/src/main/groovy/com/jessebrault/ssg/text/FrontMatter.groovy b/lib/src/main/groovy/com/jessebrault/ssg/text/FrontMatter.groovy index 4529ef8..b2d2c27 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/text/FrontMatter.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/text/FrontMatter.groovy @@ -11,12 +11,12 @@ class FrontMatter { private final Map> data - String getSingle(String key) { + String get(String key) { data[key][0] } String getAt(String key) { - this.getSingle(key) + this.get(key) } List getList(String key) { diff --git a/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy b/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy index 7524bfa..4055b43 100644 --- a/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy +++ b/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy @@ -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) + } + }