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

View File

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

View File

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

View File

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