Changed texts in special pages to be a collection rather than a map.
This commit is contained in:
parent
fd49b34756
commit
12e44c3e00
@ -3,12 +3,12 @@ package com.jessebrault.ssg.part
|
|||||||
import groovy.transform.ToString
|
import groovy.transform.ToString
|
||||||
|
|
||||||
@ToString(includeFields = true)
|
@ToString(includeFields = true)
|
||||||
class PartsMap {
|
class EmbeddablePartsMap {
|
||||||
|
|
||||||
@Delegate
|
@Delegate
|
||||||
private final Map<String, EmbeddablePart> partsMap = [:]
|
private final Map<String, EmbeddablePart> partsMap = [:]
|
||||||
|
|
||||||
PartsMap(Collection<Part> parts) {
|
EmbeddablePartsMap(Collection<Part> parts) {
|
||||||
Objects.requireNonNull(parts)
|
Objects.requireNonNull(parts)
|
||||||
parts.each {
|
parts.each {
|
||||||
this.put(it.name, new EmbeddablePart(it))
|
this.put(it.name, new EmbeddablePart(it))
|
@ -1,9 +1,9 @@
|
|||||||
package com.jessebrault.ssg.specialpage
|
package com.jessebrault.ssg.specialpage
|
||||||
|
|
||||||
import com.jessebrault.ssg.part.Part
|
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.Text
|
||||||
import com.jessebrault.ssg.text.TextsMap
|
|
||||||
import groovy.text.GStringTemplateEngine
|
import groovy.text.GStringTemplateEngine
|
||||||
import groovy.text.TemplateEngine
|
import groovy.text.TemplateEngine
|
||||||
|
|
||||||
@ -14,8 +14,8 @@ class GspSpecialPageRenderer implements SpecialPageRenderer {
|
|||||||
@Override
|
@Override
|
||||||
String render(String text, Collection<Text> texts, Collection<Part> parts) {
|
String render(String text, Collection<Text> texts, Collection<Part> parts) {
|
||||||
engine.createTemplate(text).make([
|
engine.createTemplate(text).make([
|
||||||
texts: new TextsMap(texts),
|
texts: new EmbeddableTextsCollection(texts),
|
||||||
parts: new PartsMap(parts)
|
parts: new EmbeddablePartsMap(parts)
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
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.part.PartsMap
|
import com.jessebrault.ssg.part.EmbeddablePartsMap
|
||||||
import com.jessebrault.ssg.text.FrontMatter
|
import com.jessebrault.ssg.text.FrontMatter
|
||||||
import groovy.text.GStringTemplateEngine
|
import groovy.text.GStringTemplateEngine
|
||||||
import groovy.text.TemplateEngine
|
import groovy.text.TemplateEngine
|
||||||
@ -15,7 +15,7 @@ class GspTemplateRenderer implements TemplateRenderer {
|
|||||||
engine.createTemplate(template.text).make([
|
engine.createTemplate(template.text).make([
|
||||||
frontMatter: frontMatter,
|
frontMatter: frontMatter,
|
||||||
text: text,
|
text: text,
|
||||||
parts: new PartsMap(parts)
|
parts: new EmbeddablePartsMap(parts)
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,4 +18,8 @@ import groovy.transform.TupleConstructor
|
|||||||
this.text.type.frontMatterGetter.get(this.text.text)
|
this.text.type.frontMatterGetter.get(this.text.text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String getPath() {
|
||||||
|
this.text.path
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -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))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -87,7 +87,7 @@ class StaticSiteGeneratorTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void outputsSpecialPage() {
|
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.templatesDir).file('template.gsp', '<%= 1 + 1 %>')
|
||||||
new FileTreeBuilder(this.textsDir).file('test.md', '---\ntemplate: template.gsp\n---\nHello, World!')
|
new FileTreeBuilder(this.textsDir).file('test.md', '---\ntemplate: template.gsp\n---\nHello, World!')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user