From 16032b6587bced71d01cf75380210f7373ed32d6 Mon Sep 17 00:00:00 2001
From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com>
Date: Mon, 10 Jun 2024 08:58:13 +0200
Subject: [PATCH] Added more composition info fields and supporting components.
---
.../jessebrault/site/icon/ExternalIcon.groovy | 17 ++++++++++
.../site/util/MaybeExternalLink.groovy | 21 +++++++++++++
.../jessebrault/site/util/WhenExternal.groovy | 29 +++++++++++++++++
.../com/jessebrault/site/icon/External.txt | 2 ++
.../site/util/MaybeExternalLinkTemplate.wvc | 11 +++++++
.../composition/CompositionPageTemplate.wvc | 31 +++++++++++++++++--
.../site/composition/Composition.groovy | 4 +++
.../composition/CompositionContainer.groovy | 4 +++
static/main.css | 16 ++++++++--
texts/compositions/Arcadia.md | 7 +++++
10 files changed, 138 insertions(+), 4 deletions(-)
create mode 100644 components/groovy/com/jessebrault/site/icon/ExternalIcon.groovy
create mode 100644 components/groovy/com/jessebrault/site/util/MaybeExternalLink.groovy
create mode 100644 components/groovy/com/jessebrault/site/util/WhenExternal.groovy
create mode 100644 components/resources/com/jessebrault/site/icon/External.txt
create mode 100644 components/resources/com/jessebrault/site/util/MaybeExternalLinkTemplate.wvc
diff --git a/components/groovy/com/jessebrault/site/icon/ExternalIcon.groovy b/components/groovy/com/jessebrault/site/icon/ExternalIcon.groovy
new file mode 100644
index 0000000..4de4904
--- /dev/null
+++ b/components/groovy/com/jessebrault/site/icon/ExternalIcon.groovy
@@ -0,0 +1,17 @@
+package com.jessebrault.site.icon
+
+import com.jessebrault.ssg.view.SkipTemplate
+import groowt.view.View
+import groowt.view.component.web.lib.DelegatingWebViewComponent
+
+@SkipTemplate
+class ExternalIcon extends DelegatingWebViewComponent {
+
+ private static final String externalText = ExternalIcon.getResource('External.txt').text
+
+ @Override
+ protected View getDelegate() {
+ return { Writer w -> w << externalText }
+ }
+
+}
diff --git a/components/groovy/com/jessebrault/site/util/MaybeExternalLink.groovy b/components/groovy/com/jessebrault/site/util/MaybeExternalLink.groovy
new file mode 100644
index 0000000..497c922
--- /dev/null
+++ b/components/groovy/com/jessebrault/site/util/MaybeExternalLink.groovy
@@ -0,0 +1,21 @@
+package com.jessebrault.site.util
+
+import groowt.view.component.web.BaseWebViewComponent
+
+class MaybeExternalLink extends BaseWebViewComponent {
+
+ final String href
+
+ MaybeExternalLink(Map attr) {
+ href = attr.href
+ }
+
+ Object getLinkChildren() {
+ children
+ }
+
+ boolean getIsExternal() {
+ href.startsWith('https://')
+ }
+
+}
diff --git a/components/groovy/com/jessebrault/site/util/WhenExternal.groovy b/components/groovy/com/jessebrault/site/util/WhenExternal.groovy
new file mode 100644
index 0000000..da249ff
--- /dev/null
+++ b/components/groovy/com/jessebrault/site/util/WhenExternal.groovy
@@ -0,0 +1,29 @@
+package com.jessebrault.site.util
+
+import com.jessebrault.ssg.view.SkipTemplate
+import groowt.view.View
+import groowt.view.component.runtime.DefaultComponentWriter
+import groowt.view.component.web.lib.DelegatingWebViewComponent
+
+@SkipTemplate
+class WhenExternal extends DelegatingWebViewComponent {
+
+ private final String href
+ private final Closure render
+
+ WhenExternal(Map attr) {
+ href = attr.href
+ render = attr.render
+ }
+
+ @Override
+ protected View getDelegate() {
+ return { Writer w ->
+ if (href.startsWith('https://')) {
+ def cw = new DefaultComponentWriter(w, context.renderContext, context)
+ cw << render.call()
+ }
+ }
+ }
+
+}
diff --git a/components/resources/com/jessebrault/site/icon/External.txt b/components/resources/com/jessebrault/site/icon/External.txt
new file mode 100644
index 0000000..c477d91
--- /dev/null
+++ b/components/resources/com/jessebrault/site/icon/External.txt
@@ -0,0 +1,2 @@
+
+
diff --git a/components/resources/com/jessebrault/site/util/MaybeExternalLinkTemplate.wvc b/components/resources/com/jessebrault/site/util/MaybeExternalLinkTemplate.wvc
new file mode 100644
index 0000000..10572b1
--- /dev/null
+++ b/components/resources/com/jessebrault/site/util/MaybeExternalLinkTemplate.wvc
@@ -0,0 +1,11 @@
+---
+package com.jessebrault.site.util
+
+import com.jessebrault.site.icon.ExternalIcon
+---
+
+
+ <% children -> children.addAll(linkChildren) %>
+
$composition.instrumentation
+