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 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(
|
||||
textTypes: [markdownText],
|
||||
templateTypes: [gspTemplate],
|
||||
partTypes: [gspPart],
|
||||
specialPageTypes: [gspSpecialPage],
|
||||
|
||||
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) }
|
||||
textProviders: [defaultTextsProvider],
|
||||
templatesProviders: [defaultTemplatesProvider],
|
||||
partsProviders: [defaultPartsProvider],
|
||||
specialPagesProviders: [defaultSpecialPagesProvider]
|
||||
)
|
||||
|
||||
def globals = [:]
|
||||
|
@ -1,35 +1,19 @@
|
||||
package com.jessebrault.ssg
|
||||
|
||||
import com.jessebrault.ssg.part.PartType
|
||||
import com.jessebrault.ssg.part.PartsProvider
|
||||
import com.jessebrault.ssg.specialpage.SpecialPageType
|
||||
import com.jessebrault.ssg.specialpage.SpecialPagesProvider
|
||||
import com.jessebrault.ssg.template.TemplateType
|
||||
import com.jessebrault.ssg.template.TemplatesProvider
|
||||
import com.jessebrault.ssg.text.TextType
|
||||
import com.jessebrault.ssg.text.TextsProvider
|
||||
import groovy.transform.Canonical
|
||||
import groovy.transform.MapConstructor
|
||||
import groovy.transform.NullCheck
|
||||
|
||||
import java.util.function.Function
|
||||
|
||||
@Canonical
|
||||
@MapConstructor
|
||||
@NullCheck
|
||||
class Config {
|
||||
Collection<TextType> textTypes
|
||||
Collection<TemplateType> templateTypes
|
||||
Collection<PartType> partTypes
|
||||
Collection<SpecialPageType> specialPageTypes
|
||||
|
||||
File textsDir
|
||||
File templatesDir
|
||||
File partsDir
|
||||
File specialPagesDir
|
||||
|
||||
Function<Config, TextsProvider> textsProviderGetter
|
||||
Function<Config, TemplatesProvider> templatesProviderGetter
|
||||
Function<Config, PartsProvider> partsProviderGetter
|
||||
Function<Config, SpecialPagesProvider> specialPagesProviderGetter
|
||||
Collection<TextsProvider> textProviders
|
||||
Collection<TemplatesProvider> templatesProviders
|
||||
Collection<PartsProvider> partsProviders
|
||||
Collection<SpecialPagesProvider> specialPagesProviders
|
||||
}
|
||||
|
@ -16,17 +16,9 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator {
|
||||
private static final Marker exit = MarkerFactory.getMarker('EXIT')
|
||||
|
||||
private final Config config
|
||||
private final TextsProvider textsProvider
|
||||
private final TemplatesProvider templatesProvider
|
||||
private final PartsProvider partsProvider
|
||||
private final SpecialPagesProvider specialPagesProvider
|
||||
|
||||
SimpleStaticSiteGenerator(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
|
||||
@ -34,10 +26,10 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator {
|
||||
logger.trace(enter, 'buildDir: {}', buildDir)
|
||||
|
||||
// Get all texts, templates, parts, and specialPages
|
||||
def texts = this.textsProvider.getTextFiles()
|
||||
def templates = this.templatesProvider.getTemplates()
|
||||
def parts = this.partsProvider.getParts()
|
||||
def specialPages = this.specialPagesProvider.getSpecialPages()
|
||||
def texts = this.config.textProviders.collectMany { it.getTextFiles() }
|
||||
def templates = this.config.templatesProviders.collectMany { it.getTemplates() }
|
||||
def parts = this.config.partsProviders.collectMany { it.getParts() }
|
||||
def specialPages = this.config.specialPagesProviders.collectMany { it.getSpecialPages() }
|
||||
|
||||
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.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(
|
||||
textTypes: [new TextType(['.md'], new MarkdownTextRenderer(), new MarkdownFrontMatterGetter())],
|
||||
templateTypes: [new TemplateType(['.gsp'], new GspTemplateRenderer())],
|
||||
partTypes: [new PartType(['.gsp'], new GspPartRenderer())],
|
||||
specialPageTypes: [new SpecialPageType(['.gsp'], new GspSpecialPageRenderer())],
|
||||
|
||||
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) }
|
||||
textProviders: [textsProvider],
|
||||
templatesProviders: [templatesProvider],
|
||||
partsProviders: [partsProvider],
|
||||
specialPagesProviders: [specialPagesProvider]
|
||||
)
|
||||
this.ssg = new SimpleStaticSiteGenerator(config)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user