Changed Config to only include Providers
This commit is contained in:
parent
8f1bf081e4
commit
f205d0b543
@ -27,21 +27,16 @@ class StaticSiteGeneratorCli {
|
|||||||
def gspPart = new PartType(['.gsp'], new GspPartRenderer())
|
def gspPart = new PartType(['.gsp'], new GspPartRenderer())
|
||||||
def gspSpecialPage = new SpecialPageType(['.gsp'], new GspSpecialPageRenderer())
|
def gspSpecialPage = new SpecialPageType(['.gsp'], new GspSpecialPageRenderer())
|
||||||
|
|
||||||
|
def defaultTextsProvider = new TextFileTextsProvider([markdownText], new File('texts'))
|
||||||
|
def defaultTemplatesProvider = new TemplateFileTemplatesProvider([gspTemplate], new File('templates'))
|
||||||
|
def defaultPartsProvider = new PartFilePartsProvider([gspPart], new File('parts'))
|
||||||
|
def defaultSpecialPagesProvider = new SpecialPageFileSpecialPagesProvider([gspSpecialPage], new File('specialPages'))
|
||||||
|
|
||||||
def config = new Config(
|
def config = new Config(
|
||||||
textTypes: [markdownText],
|
textProviders: [defaultTextsProvider],
|
||||||
templateTypes: [gspTemplate],
|
templatesProviders: [defaultTemplatesProvider],
|
||||||
partTypes: [gspPart],
|
partsProviders: [defaultPartsProvider],
|
||||||
specialPageTypes: [gspSpecialPage],
|
specialPagesProviders: [defaultSpecialPagesProvider]
|
||||||
|
|
||||||
textsDir: new File('texts'),
|
|
||||||
templatesDir: new File('templates'),
|
|
||||||
partsDir: new File('parts'),
|
|
||||||
specialPagesDir: new File('specialPages'),
|
|
||||||
|
|
||||||
textsProviderGetter: { Config config -> new TextFileTextsProvider(config.textTypes, config.textsDir) },
|
|
||||||
templatesProviderGetter: { Config config -> new TemplateFileTemplatesProvider(config.templateTypes, config.templatesDir) },
|
|
||||||
partsProviderGetter: { Config config -> new PartFilePartsProvider(config.partTypes, config.partsDir) },
|
|
||||||
specialPagesProviderGetter: { Config config -> new SpecialPageFileSpecialPagesProvider(config.specialPageTypes, config.specialPagesDir) }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def globals = [:]
|
def globals = [:]
|
||||||
|
@ -1,35 +1,19 @@
|
|||||||
package com.jessebrault.ssg
|
package com.jessebrault.ssg
|
||||||
|
|
||||||
import com.jessebrault.ssg.part.PartType
|
|
||||||
import com.jessebrault.ssg.part.PartsProvider
|
import com.jessebrault.ssg.part.PartsProvider
|
||||||
import com.jessebrault.ssg.specialpage.SpecialPageType
|
|
||||||
import com.jessebrault.ssg.specialpage.SpecialPagesProvider
|
import com.jessebrault.ssg.specialpage.SpecialPagesProvider
|
||||||
import com.jessebrault.ssg.template.TemplateType
|
|
||||||
import com.jessebrault.ssg.template.TemplatesProvider
|
import com.jessebrault.ssg.template.TemplatesProvider
|
||||||
import com.jessebrault.ssg.text.TextType
|
|
||||||
import com.jessebrault.ssg.text.TextsProvider
|
import com.jessebrault.ssg.text.TextsProvider
|
||||||
import groovy.transform.Canonical
|
import groovy.transform.Canonical
|
||||||
import groovy.transform.MapConstructor
|
import groovy.transform.MapConstructor
|
||||||
import groovy.transform.NullCheck
|
import groovy.transform.NullCheck
|
||||||
|
|
||||||
import java.util.function.Function
|
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
@MapConstructor
|
@MapConstructor
|
||||||
@NullCheck
|
@NullCheck
|
||||||
class Config {
|
class Config {
|
||||||
Collection<TextType> textTypes
|
Collection<TextsProvider> textProviders
|
||||||
Collection<TemplateType> templateTypes
|
Collection<TemplatesProvider> templatesProviders
|
||||||
Collection<PartType> partTypes
|
Collection<PartsProvider> partsProviders
|
||||||
Collection<SpecialPageType> specialPageTypes
|
Collection<SpecialPagesProvider> specialPagesProviders
|
||||||
|
|
||||||
File textsDir
|
|
||||||
File templatesDir
|
|
||||||
File partsDir
|
|
||||||
File specialPagesDir
|
|
||||||
|
|
||||||
Function<Config, TextsProvider> textsProviderGetter
|
|
||||||
Function<Config, TemplatesProvider> templatesProviderGetter
|
|
||||||
Function<Config, PartsProvider> partsProviderGetter
|
|
||||||
Function<Config, SpecialPagesProvider> specialPagesProviderGetter
|
|
||||||
}
|
}
|
||||||
|
@ -16,17 +16,9 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator {
|
|||||||
private static final Marker exit = MarkerFactory.getMarker('EXIT')
|
private static final Marker exit = MarkerFactory.getMarker('EXIT')
|
||||||
|
|
||||||
private final Config config
|
private final Config config
|
||||||
private final TextsProvider textsProvider
|
|
||||||
private final TemplatesProvider templatesProvider
|
|
||||||
private final PartsProvider partsProvider
|
|
||||||
private final SpecialPagesProvider specialPagesProvider
|
|
||||||
|
|
||||||
SimpleStaticSiteGenerator(Config config) {
|
SimpleStaticSiteGenerator(Config config) {
|
||||||
this.config = config
|
this.config = config
|
||||||
this.textsProvider = config.textsProviderGetter.apply(config)
|
|
||||||
this.templatesProvider = config.templatesProviderGetter.apply(config)
|
|
||||||
this.partsProvider = config.partsProviderGetter.apply(config)
|
|
||||||
this.specialPagesProvider = config.specialPagesProviderGetter.apply(config)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -34,10 +26,10 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator {
|
|||||||
logger.trace(enter, 'buildDir: {}', buildDir)
|
logger.trace(enter, 'buildDir: {}', buildDir)
|
||||||
|
|
||||||
// Get all texts, templates, parts, and specialPages
|
// Get all texts, templates, parts, and specialPages
|
||||||
def texts = this.textsProvider.getTextFiles()
|
def texts = this.config.textProviders.collectMany { it.getTextFiles() }
|
||||||
def templates = this.templatesProvider.getTemplates()
|
def templates = this.config.templatesProviders.collectMany { it.getTemplates() }
|
||||||
def parts = this.partsProvider.getParts()
|
def parts = this.config.partsProviders.collectMany { it.getParts() }
|
||||||
def specialPages = this.specialPagesProvider.getSpecialPages()
|
def specialPages = this.config.specialPagesProviders.collectMany { it.getSpecialPages() }
|
||||||
|
|
||||||
logger.debug('\n\ttexts: {}\n\ttemplates: {}\n\tparts: {}\n\tspecialPages: {}', texts, templates, parts, specialPages)
|
logger.debug('\n\ttexts: {}\n\ttemplates: {}\n\tparts: {}\n\tspecialPages: {}', texts, templates, parts, specialPages)
|
||||||
|
|
||||||
|
@ -35,21 +35,21 @@ class StaticSiteGeneratorTests {
|
|||||||
this.partsDir = File.createTempDir()
|
this.partsDir = File.createTempDir()
|
||||||
this.specialPagesDir = File.createTempDir()
|
this.specialPagesDir = File.createTempDir()
|
||||||
|
|
||||||
|
def markdownTextType = new TextType(['.md'], new MarkdownTextRenderer(), new MarkdownFrontMatterGetter())
|
||||||
|
def gspTemplateType = new TemplateType(['.gsp'], new GspTemplateRenderer())
|
||||||
|
def gspPartType = new PartType(['.gsp'], new GspPartRenderer())
|
||||||
|
def gspSpecialPageType = new SpecialPageType(['.gsp'], new GspSpecialPageRenderer())
|
||||||
|
|
||||||
|
def textsProvider = new TextFileTextsProvider([markdownTextType], this.textsDir)
|
||||||
|
def templatesProvider = new TemplateFileTemplatesProvider([gspTemplateType], this.templatesDir)
|
||||||
|
def partsProvider = new PartFilePartsProvider([gspPartType], this.partsDir)
|
||||||
|
def specialPagesProvider = new SpecialPageFileSpecialPagesProvider([gspSpecialPageType], this.specialPagesDir)
|
||||||
|
|
||||||
def config = new Config(
|
def config = new Config(
|
||||||
textTypes: [new TextType(['.md'], new MarkdownTextRenderer(), new MarkdownFrontMatterGetter())],
|
textProviders: [textsProvider],
|
||||||
templateTypes: [new TemplateType(['.gsp'], new GspTemplateRenderer())],
|
templatesProviders: [templatesProvider],
|
||||||
partTypes: [new PartType(['.gsp'], new GspPartRenderer())],
|
partsProviders: [partsProvider],
|
||||||
specialPageTypes: [new SpecialPageType(['.gsp'], new GspSpecialPageRenderer())],
|
specialPagesProviders: [specialPagesProvider]
|
||||||
|
|
||||||
textsDir: this.textsDir,
|
|
||||||
templatesDir: this.templatesDir,
|
|
||||||
partsDir: this.partsDir,
|
|
||||||
specialPagesDir: this.specialPagesDir,
|
|
||||||
|
|
||||||
textsProviderGetter: { Config config -> new TextFileTextsProvider(config.textTypes, config.textsDir) },
|
|
||||||
templatesProviderGetter: { Config config -> new TemplateFileTemplatesProvider(config.templateTypes, config.templatesDir) },
|
|
||||||
partsProviderGetter: { Config config -> new PartFilePartsProvider(config.partTypes, config.partsDir) },
|
|
||||||
specialPagesProviderGetter: { Config config -> new SpecialPageFileSpecialPagesProvider(config.specialPageTypes, config.specialPagesDir) }
|
|
||||||
)
|
)
|
||||||
this.ssg = new SimpleStaticSiteGenerator(config)
|
this.ssg = new SimpleStaticSiteGenerator(config)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user