Changed texts in special pages to be a collection rather than a map.

This commit is contained in:
JesseBrault0709 2023-01-05 18:35:53 -06:00
parent fd49b34756
commit 12e44c3e00
7 changed files with 32 additions and 27 deletions

View File

@ -3,12 +3,12 @@ package com.jessebrault.ssg.part
import groovy.transform.ToString
@ToString(includeFields = true)
class PartsMap {
class EmbeddablePartsMap {
@Delegate
private final Map<String, EmbeddablePart> partsMap = [:]
PartsMap(Collection<Part> parts) {
EmbeddablePartsMap(Collection<Part> parts) {
Objects.requireNonNull(parts)
parts.each {
this.put(it.name, new EmbeddablePart(it))

View File

@ -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<Text> texts, Collection<Part> parts) {
engine.createTemplate(text).make([
texts: new TextsMap(texts),
parts: new PartsMap(parts)
texts: new EmbeddableTextsCollection(texts),
parts: new EmbeddablePartsMap(parts)
])
}

View File

@ -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)
])
}

View File

@ -18,4 +18,8 @@ import groovy.transform.TupleConstructor
this.text.type.frontMatterGetter.get(this.text.text)
}
String getPath() {
this.text.path
}
}

View File

@ -0,0 +1,19 @@
package com.jessebrault.ssg.text
import groovy.transform.ToString
@ToString(includeFields = true)
class EmbeddableTextsCollection {
@Delegate
private final Collection<EmbeddableText> embeddableTexts = []
EmbeddableTextsCollection(Collection<Text> texts) {
Objects.requireNonNull(texts).each {
this << new EmbeddableText(it)
}
}
}

View File

@ -1,18 +0,0 @@
package com.jessebrault.ssg.text
import groovy.transform.ToString
@ToString(includeFields = true)
class TextsMap {
@Delegate
private final Map<String, EmbeddableText> textsMap = [:]
TextsMap(Collection<Text> texts) {
Objects.requireNonNull(texts)
texts.each {
this.put(it.path, new EmbeddableText(it))
}
}
}

View File

@ -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!')