diff --git a/components/groovy/com/jessebrault/site/CompositionListing.groovy b/components/groovy/com/jessebrault/site/CompositionListing.groovy new file mode 100644 index 0000000..2368bac --- /dev/null +++ b/components/groovy/com/jessebrault/site/CompositionListing.groovy @@ -0,0 +1,14 @@ +package com.jessebrault.site + +import com.jessebrault.site.composition.Composition +import groowt.view.component.web.BaseWebViewComponent + +class CompositionListing extends BaseWebViewComponent { + + final Composition composition + + CompositionListing(Composition composition) { + this.composition = composition + } + +} diff --git a/components/groovy/com/jessebrault/site/Header.groovy b/components/groovy/com/jessebrault/site/Header.groovy new file mode 100644 index 0000000..090ea4a --- /dev/null +++ b/components/groovy/com/jessebrault/site/Header.groovy @@ -0,0 +1,30 @@ +package com.jessebrault.site + +import com.jessebrault.ssg.di.Global +import com.jessebrault.ssg.di.InjectPages +import com.jessebrault.ssg.page.Page +import groowt.view.component.web.BaseWebViewComponent +import jakarta.inject.Inject +import jakarta.inject.Named + +class Header extends BaseWebViewComponent { + + final String siteName + final String siteTagLine + final List menuItems + + @Inject + Header( + @Named('siteName') String siteName, + @Global('siteTagLine') String siteTagLine, + @Global('menuItems') List menuItems, + @InjectPages('/*') Set allPages + ) { + this.siteName = siteName + this.siteTagLine = siteTagLine + this.menuItems = menuItems.collect { menuItem -> + allPages.find { it.name == menuItem } + } + } + +} diff --git a/components/resources/com/jessebrault/site/CompositionListingTemplate.wvc b/components/resources/com/jessebrault/site/CompositionListingTemplate.wvc new file mode 100644 index 0000000..ee3726f --- /dev/null +++ b/components/resources/com/jessebrault/site/CompositionListingTemplate.wvc @@ -0,0 +1,4 @@ +--- +package com.jessebrault.site +--- +

$composition.title

diff --git a/components/resources/com/jessebrault/site/HeaderTemplate.wvc b/components/resources/com/jessebrault/site/HeaderTemplate.wvc new file mode 100644 index 0000000..36a9612 --- /dev/null +++ b/components/resources/com/jessebrault/site/HeaderTemplate.wvc @@ -0,0 +1,9 @@ +
+

$siteName

+

$siteTagLine

+ +
diff --git a/components/resources/com/jessebrault/site/StandardPageTemplate.wvc b/components/resources/com/jessebrault/site/StandardPageTemplate.wvc index 07efbb2..3a7cb57 100644 --- a/components/resources/com/jessebrault/site/StandardPageTemplate.wvc +++ b/components/resources/com/jessebrault/site/StandardPageTemplate.wvc @@ -4,6 +4,7 @@ package com.jessebrault.site +
<% bodyChildren -> pageChildren.each { bodyChildren << it } %> diff --git a/pages/groovy/com/jessebrault/site/CompositionsPage.groovy b/pages/groovy/com/jessebrault/site/CompositionsPage.groovy index ddfa89d..91099ee 100644 --- a/pages/groovy/com/jessebrault/site/CompositionsPage.groovy +++ b/pages/groovy/com/jessebrault/site/CompositionsPage.groovy @@ -1,7 +1,10 @@ package com.jessebrault.site +import com.jessebrault.site.composition.Composition import com.jessebrault.site.util.TitleMaker +import com.jessebrault.ssg.di.InjectTexts import com.jessebrault.ssg.page.PageSpec +import com.jessebrault.ssg.text.Text import com.jessebrault.ssg.view.WvcPageView import jakarta.inject.Inject @@ -9,10 +12,14 @@ import jakarta.inject.Inject class CompositionsPage extends WvcPageView { private final TitleMaker titleMaker + final Set compositions @Inject - CompositionsPage(TitleMaker titleMaker) { + CompositionsPage(TitleMaker titleMaker, @InjectTexts('/compositions/*.md') Set compositions) { this.titleMaker = titleMaker + this.compositions = compositions.collect { + new Composition(it, it.frontMatter.title) + } } String getTitle() { diff --git a/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc b/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc index 2e2efef..f92edd0 100644 --- a/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc +++ b/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc @@ -2,5 +2,8 @@ package com.jessebrault.site --- -

Compositions

+
+

Compositions

+ } /> +
diff --git a/src/main/groovy/com/jessebrault/site/composition/Composition.groovy b/src/main/groovy/com/jessebrault/site/composition/Composition.groovy new file mode 100644 index 0000000..df75f9a --- /dev/null +++ b/src/main/groovy/com/jessebrault/site/composition/Composition.groovy @@ -0,0 +1,16 @@ +package com.jessebrault.site.composition + +import com.jessebrault.ssg.text.Text +import groovy.transform.EqualsAndHashCode +import groovy.transform.NullCheck +import groovy.transform.ToString +import groovy.transform.TupleConstructor + +@TupleConstructor(defaults = false) +@NullCheck(includeGenerated = true) +@EqualsAndHashCode +@ToString +class Composition { + final Text text + final String title +} diff --git a/ssg/default.groovy b/ssg/default.groovy index 999e4d3..faf5054 100644 --- a/ssg/default.groovy +++ b/ssg/default.groovy @@ -10,6 +10,11 @@ BuildScriptBase base build { siteName 'Jesse R. Brault' baseUrl 'https://jessebrault.com' + basePackage 'com.jessebrault.site' + globals { + siteTagLine = 'Conductor and Composer' + menuItems = ['Biography', 'Compositions'] + } objectFactoryBuilder.configure { configureRegistry { bind(TitleMaker, toSelf()) diff --git a/texts/compositions/SpiritTravels.md b/texts/compositions/SpiritTravels.md new file mode 100644 index 0000000..dfe506e --- /dev/null +++ b/texts/compositions/SpiritTravels.md @@ -0,0 +1,4 @@ +--- +title: Spirit Travels +--- +Information about _Spirit Travels_.