diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartsMap.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy similarity index 80% rename from lib/src/main/groovy/com/jessebrault/ssg/part/PartsMap.groovy rename to lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy index c89b027..dbe61c5 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartsMap.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy @@ -3,12 +3,12 @@ package com.jessebrault.ssg.part import groovy.transform.ToString @ToString(includeFields = true) -class PartsMap { +class EmbeddablePartsMap { @Delegate private final Map partsMap = [:] - PartsMap(Collection parts) { + EmbeddablePartsMap(Collection parts) { Objects.requireNonNull(parts) parts.each { this.put(it.name, new EmbeddablePart(it)) diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy index 71403e1..94a4873 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy @@ -1,9 +1,9 @@ package com.jessebrault.ssg.specialpage import com.jessebrault.ssg.part.Part -import com.jessebrault.ssg.part.PartsMap +import com.jessebrault.ssg.part.EmbeddablePartsMap +import com.jessebrault.ssg.text.EmbeddableTextsCollection import com.jessebrault.ssg.text.Text -import com.jessebrault.ssg.text.TextsMap import groovy.text.GStringTemplateEngine import groovy.text.TemplateEngine @@ -14,8 +14,8 @@ class GspSpecialPageRenderer implements SpecialPageRenderer { @Override String render(String text, Collection texts, Collection parts) { engine.createTemplate(text).make([ - texts: new TextsMap(texts), - parts: new PartsMap(parts) + texts: new EmbeddableTextsCollection(texts), + parts: new EmbeddablePartsMap(parts) ]) } 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 0897599..5173f0d 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy @@ -1,7 +1,7 @@ package com.jessebrault.ssg.template import com.jessebrault.ssg.part.Part -import com.jessebrault.ssg.part.PartsMap +import com.jessebrault.ssg.part.EmbeddablePartsMap import com.jessebrault.ssg.text.FrontMatter import groovy.text.GStringTemplateEngine import groovy.text.TemplateEngine @@ -15,7 +15,7 @@ class GspTemplateRenderer implements TemplateRenderer { engine.createTemplate(template.text).make([ frontMatter: frontMatter, text: text, - parts: new PartsMap(parts) + parts: new EmbeddablePartsMap(parts) ]) } diff --git a/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableText.groovy b/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableText.groovy index 654c384..9ab652d 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableText.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableText.groovy @@ -18,4 +18,8 @@ import groovy.transform.TupleConstructor this.text.type.frontMatterGetter.get(this.text.text) } + String getPath() { + this.text.path + } + } diff --git a/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableTextsCollection.groovy b/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableTextsCollection.groovy new file mode 100644 index 0000000..d2080ec --- /dev/null +++ b/lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableTextsCollection.groovy @@ -0,0 +1,19 @@ +package com.jessebrault.ssg.text + +import groovy.transform.ToString + +@ToString(includeFields = true) +class EmbeddableTextsCollection { + + @Delegate + private final Collection embeddableTexts = [] + + EmbeddableTextsCollection(Collection texts) { + Objects.requireNonNull(texts).each { + this << new EmbeddableText(it) + } + } + + + +} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/text/TextsMap.groovy b/lib/src/main/groovy/com/jessebrault/ssg/text/TextsMap.groovy deleted file mode 100644 index 368a628..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/text/TextsMap.groovy +++ /dev/null @@ -1,18 +0,0 @@ -package com.jessebrault.ssg.text - -import groovy.transform.ToString - -@ToString(includeFields = true) -class TextsMap { - - @Delegate - private final Map textsMap = [:] - - TextsMap(Collection texts) { - Objects.requireNonNull(texts) - texts.each { - this.put(it.path, new EmbeddableText(it)) - } - } - -} diff --git a/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy b/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy index f81184b..491c7a4 100644 --- a/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy +++ b/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy @@ -87,7 +87,7 @@ class StaticSiteGeneratorTests { @Test void outputsSpecialPage() { - new FileTreeBuilder(this.specialPagesDir).file('special.gsp', $/<%= texts['test'].render() %>/$) + new FileTreeBuilder(this.specialPagesDir).file('special.gsp', $/<%= texts.find { it.path == 'test' }.render() %>/$) new FileTreeBuilder(this.templatesDir).file('template.gsp', '<%= 1 + 1 %>') new FileTreeBuilder(this.textsDir).file('test.md', '---\ntemplate: template.gsp\n---\nHello, World!')