Changed Config to only include Providers

This commit is contained in:
JesseBrault0709 2023-01-07 17:03:04 -06:00
parent 8f1bf081e4
commit f205d0b543
4 changed files with 31 additions and 60 deletions

View File

@ -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 = [:]

View File

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

View File

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

View File

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