Some Property/etc. work.
This commit is contained in:
parent
2a4d3d8025
commit
4fa2ba0ac9
@ -0,0 +1,5 @@
|
|||||||
|
package com.jessebrault.ssg.property
|
||||||
|
|
||||||
|
interface CollectionProperty<T> extends Property<T> {
|
||||||
|
// TODO
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.jessebrault.ssg.property
|
||||||
|
|
||||||
|
interface MapProperty<K, V> extends Property<Map<K, V>> {
|
||||||
|
V get(K key)
|
||||||
|
void put(K key, V value)
|
||||||
|
void putAll(Map<? extends K, ? extends V> map)
|
||||||
|
}
|
@ -14,6 +14,21 @@ final class Properties {
|
|||||||
new SimpleProperty<>(convention, t)
|
new SimpleProperty<>(convention, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static <K, V> MapProperty<K, V> getMap() {
|
||||||
|
new SimpleMapProperty<K, V>()
|
||||||
|
}
|
||||||
|
|
||||||
|
static <K, V> MapProperty<K, V> getMap(Map<? extends K, ? extends V> convention) {
|
||||||
|
new SimpleMapProperty<K, V>(convention)
|
||||||
|
}
|
||||||
|
|
||||||
|
static <K, V> MapProperty<K, V> getMap(
|
||||||
|
Map<? extends K, ? extends V> convention,
|
||||||
|
Map<? extends K, ? extends V> value
|
||||||
|
) {
|
||||||
|
new SimpleMapProperty<K, V>(convention, value)
|
||||||
|
}
|
||||||
|
|
||||||
private Properties() {}
|
private Properties() {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,122 @@
|
|||||||
|
package com.jessebrault.ssg.property
|
||||||
|
|
||||||
|
import com.jessebrault.ssg.provider.CollectionProvider
|
||||||
|
import com.jessebrault.ssg.provider.Provider
|
||||||
|
import groovy.transform.EqualsAndHashCode
|
||||||
|
import groovy.transform.NullCheck
|
||||||
|
import groovy.transform.PackageScope
|
||||||
|
|
||||||
|
import java.util.function.Function
|
||||||
|
import java.util.function.UnaryOperator
|
||||||
|
|
||||||
|
@PackageScope
|
||||||
|
@NullCheck
|
||||||
|
@EqualsAndHashCode(includeFields = true)
|
||||||
|
final class SimpleMapProperty<K, V> implements MapProperty<K, V> {
|
||||||
|
|
||||||
|
private final Map<K, V> convention = [:]
|
||||||
|
private final Map<K, V> m = [:]
|
||||||
|
|
||||||
|
SimpleMapProperty(
|
||||||
|
Map<? extends K, ? extends V> convention,
|
||||||
|
Map<? extends K, ? extends V> m
|
||||||
|
) {
|
||||||
|
this.convention.putAll(convention)
|
||||||
|
this.m.putAll(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleMapProperty(Map<? extends K, ? extends V> convention) {
|
||||||
|
this(convention, [:] as Map<K, V>)
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleMapProperty() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
V get(K key) {
|
||||||
|
if (m[key] != null) {
|
||||||
|
m[key]
|
||||||
|
} else if (convention[key] != null) {
|
||||||
|
convention[key]
|
||||||
|
} else {
|
||||||
|
throw new NullPointerException("no such key: ${ key }")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void put(K key, V value) {
|
||||||
|
this.m.put(key, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void putAll(Map<? extends K, ? extends V> map) {
|
||||||
|
this.m.putAll(map)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void set(Map<K, V> kvMap) {
|
||||||
|
this.m.clear()
|
||||||
|
this.m.putAll(kvMap)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void set(Provider<Map<K, V>> provider) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void unset() {
|
||||||
|
this.m.clear()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
Map<K, V> getConvention() {
|
||||||
|
this.convention
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void setConvention(Map<K, V> kvMap) {
|
||||||
|
this.convention.clear()
|
||||||
|
this.convention.putAll(kvMap)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void setConvention(Provider<Map<K, V>> provider) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void unsetConvention() {
|
||||||
|
this.convention.clear()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void map(UnaryOperator<Map<K, V>> operator) {
|
||||||
|
this.m.putAll(operator.apply(this.convention + this.m))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void flatMap(Function<Map<K, V>, Provider<Map<K, V>>> function) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
Map<K, V> provide() {
|
||||||
|
this.convention + this.m
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
CollectionProvider<Map<K, V>> plus(Provider<Map<K, V>> other) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
CollectionProvider<Map<K, V>> asType(Class<CollectionProvider> collectionProviderClass) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean isEmpty() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,6 +7,7 @@ interface Provider<T> {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
CollectionProvider<T> plus(Provider<T> other)
|
CollectionProvider<T> plus(Provider<T> other)
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
CollectionProvider<T> asType(Class<CollectionProvider> collectionProviderClass)
|
CollectionProvider<T> asType(Class<CollectionProvider> collectionProviderClass)
|
||||||
|
|
||||||
boolean isEmpty()
|
boolean isEmpty()
|
||||||
|
36
sketchingBaseBuild.groovy
Normal file
36
sketchingBaseBuild.groovy
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
abstractBuild(name: 'redDogAll', extends: 'default') {
|
||||||
|
siteSpec.merge {
|
||||||
|
name = 'Red Dog Ensemble'
|
||||||
|
baseUrl = 'https://reddogensemble.com'
|
||||||
|
}
|
||||||
|
|
||||||
|
globals.merge {
|
||||||
|
greeting = 'Say hello to good music!'
|
||||||
|
}
|
||||||
|
|
||||||
|
sources { types ->
|
||||||
|
models.map { acc ->
|
||||||
|
old + someMethodThatGetsEventModels()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
taskFactories { sources ->
|
||||||
|
register(name: 'eventToHtml', supplier: ModelToHtmlFactory::new) {
|
||||||
|
modelsProvider.map { acc ->
|
||||||
|
acc + CollectionProviders.fromSupplier {
|
||||||
|
sources.models.provide().findAll { it.name.startsWith('event/') }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build(name: 'preview', extends: 'redDogAll') {
|
||||||
|
siteSpec.merge {
|
||||||
|
baseUrl += '/preview' // if possible
|
||||||
|
}
|
||||||
|
|
||||||
|
globals.merge {
|
||||||
|
greeting = 'Hello from preview!'
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user