Components and di properly working.
This commit is contained in:
parent
95caca0f0c
commit
5fe7fc923e
@ -12,7 +12,5 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation 'org.apache.groovy:groovy:4.0.21'
|
||||
ssgImplementation sourceSets.main.runtimeClasspath // TODO: put this in plugin
|
||||
pagesImplementation sourceSets.main.runtimeClasspath
|
||||
}
|
||||
|
||||
|
13
components/groovy/com/jessebrault/site/Head.groovy
Normal file
13
components/groovy/com/jessebrault/site/Head.groovy
Normal file
@ -0,0 +1,13 @@
|
||||
package com.jessebrault.site
|
||||
|
||||
import groowt.view.component.web.BaseWebViewComponent
|
||||
|
||||
class Head extends BaseWebViewComponent {
|
||||
|
||||
final String title
|
||||
|
||||
Head(Map attr) {
|
||||
title = attr.title
|
||||
}
|
||||
|
||||
}
|
17
components/groovy/com/jessebrault/site/StandardPage.groovy
Normal file
17
components/groovy/com/jessebrault/site/StandardPage.groovy
Normal file
@ -0,0 +1,17 @@
|
||||
package com.jessebrault.site
|
||||
|
||||
import groowt.view.component.web.BaseWebViewComponent
|
||||
|
||||
class StandardPage extends BaseWebViewComponent {
|
||||
|
||||
final String title
|
||||
|
||||
StandardPage(Map attr) {
|
||||
this.title = attr.title
|
||||
}
|
||||
|
||||
List getPageChildren() {
|
||||
this.children
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
---
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>$title</title>
|
||||
</head>
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<html lang="en">
|
||||
<Head title={title} />
|
||||
<body>
|
||||
<% bodyChildren -> pageChildren.each { bodyChildren << it } %>
|
||||
</body>
|
||||
</html>
|
@ -15,7 +15,6 @@ class BiographyPage extends WvcPageView {
|
||||
|
||||
@Inject
|
||||
BiographyPage(TitleMaker titleMaker, @InjectText('/Biography.md') Text biography) {
|
||||
super(BiographyPage.getResource('BiographyPage.wvc'))
|
||||
this.titleMaker = titleMaker
|
||||
this.biography = biography
|
||||
}
|
||||
@ -24,7 +23,7 @@ class BiographyPage extends WvcPageView {
|
||||
biography.render()
|
||||
}
|
||||
|
||||
String renderTitle() {
|
||||
String getTitle() {
|
||||
titleMaker.makeTitle(pageTitle)
|
||||
}
|
||||
|
||||
|
22
pages/groovy/com/jessebrault/site/CompositionsPage.groovy
Normal file
22
pages/groovy/com/jessebrault/site/CompositionsPage.groovy
Normal file
@ -0,0 +1,22 @@
|
||||
package com.jessebrault.site
|
||||
|
||||
import com.jessebrault.site.util.TitleMaker
|
||||
import com.jessebrault.ssg.page.PageSpec
|
||||
import com.jessebrault.ssg.view.WvcPageView
|
||||
import jakarta.inject.Inject
|
||||
|
||||
@PageSpec(name = 'Compositions', path = '/compositions')
|
||||
class CompositionsPage extends WvcPageView {
|
||||
|
||||
private final TitleMaker titleMaker
|
||||
|
||||
@Inject
|
||||
CompositionsPage(TitleMaker titleMaker) {
|
||||
this.titleMaker = titleMaker
|
||||
}
|
||||
|
||||
String getTitle() {
|
||||
titleMaker.makeTitle(pageTitle)
|
||||
}
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title><%= renderTitle() %></title>
|
||||
</head>
|
||||
<body>
|
||||
<article>
|
||||
<%= renderBiography() %>
|
||||
</article>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<StandardPage title={title}>
|
||||
<article>
|
||||
<%= renderBiography() %>
|
||||
</article>
|
||||
</StandardPage>
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<StandardPage title={title}>
|
||||
<h1>Compositions</h1>
|
||||
</StandardPage>
|
@ -1,17 +1,19 @@
|
||||
package com.jessebrault.site.util
|
||||
|
||||
import groowt.util.fp.provider.Provider
|
||||
import jakarta.inject.Inject
|
||||
import jakarta.inject.Named
|
||||
|
||||
class TitleMaker {
|
||||
|
||||
private final Provider<String> siteTitleProvider
|
||||
private final String siteTitle
|
||||
|
||||
TitleMaker(Provider<String> siteTitleProvider) {
|
||||
this.siteTitleProvider = siteTitleProvider
|
||||
@Inject
|
||||
TitleMaker(@Named('siteName') String siteTitle) {
|
||||
this.siteTitle = siteTitle
|
||||
}
|
||||
|
||||
String makeTitle(String pageTitle) {
|
||||
this.siteTitleProvider.get() + " — " + pageTitle
|
||||
this.siteTitle + " — " + pageTitle
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
import com.jessebrault.site.util.TitleMaker
|
||||
import com.jessebrault.ssg.buildscript.BuildScriptBase
|
||||
import groovy.transform.BaseScript
|
||||
import com.jessebrault.site.util.TitleMaker
|
||||
|
||||
import static groowt.util.di.BindingUtil.toSingleton
|
||||
import static groowt.util.di.BindingUtil.toSelf
|
||||
|
||||
@BaseScript
|
||||
BuildScriptBase base
|
||||
@ -12,7 +12,7 @@ build {
|
||||
baseUrl 'https://jessebrault.com'
|
||||
objectFactoryBuilder.configure {
|
||||
configureRegistry {
|
||||
bind(TitleMaker, toSingleton(new TitleMaker(siteName)))
|
||||
bind(TitleMaker, toSelf())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user