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)
|
||||
}
|
||||
|
||||
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() {}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
CollectionProvider<T> plus(Provider<T> other)
|
||||
|
||||
@Deprecated
|
||||
CollectionProvider<T> asType(Class<CollectionProvider> collectionProviderClass)
|
||||
|
||||
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