Changed onDiagnostics Closure<Void> to diagnosticsConsumer Consumer<Collection<Diagnostic>>.
This commit is contained in:
parent
2af6eeddec
commit
958d3ca0ff
@ -3,9 +3,12 @@ package com.jessebrault.ssg.dsl
|
||||
import com.jessebrault.ssg.part.Part
|
||||
import com.jessebrault.ssg.render.RenderContext
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import org.jetbrains.annotations.Nullable
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
import static java.util.Objects.requireNonNull
|
||||
|
||||
@EqualsAndHashCode(includeFields = true)
|
||||
@ -13,7 +16,7 @@ final class EmbeddablePart {
|
||||
|
||||
private final Part part
|
||||
private final RenderContext context
|
||||
private final Closure<Void> onDiagnostics
|
||||
private final Consumer<Collection<Diagnostic>> diagnosticsConsumer
|
||||
|
||||
@Nullable
|
||||
private final Text text
|
||||
@ -21,24 +24,24 @@ final class EmbeddablePart {
|
||||
EmbeddablePart(
|
||||
Part part,
|
||||
RenderContext context,
|
||||
Closure<Void> onDiagnostics,
|
||||
Consumer<Collection<Diagnostic>> diagnosticsConsumer,
|
||||
@Nullable Text text
|
||||
) {
|
||||
this.part = requireNonNull(part)
|
||||
this.context = requireNonNull(context)
|
||||
this.onDiagnostics = requireNonNull(onDiagnostics)
|
||||
this.diagnosticsConsumer = requireNonNull(diagnosticsConsumer)
|
||||
this.text = text
|
||||
}
|
||||
|
||||
String render(Map binding = [:]) {
|
||||
def result = part.type.renderer.render(
|
||||
def result = this.part.type.renderer.render(
|
||||
this.part,
|
||||
binding,
|
||||
this.context,
|
||||
this.text
|
||||
)
|
||||
if (result.hasDiagnostics()) {
|
||||
this.onDiagnostics.call(result.diagnostics)
|
||||
this.diagnosticsConsumer.accept(result.diagnostics)
|
||||
''
|
||||
} else {
|
||||
result.get()
|
||||
|
@ -2,9 +2,12 @@ package com.jessebrault.ssg.dsl
|
||||
|
||||
import com.jessebrault.ssg.render.RenderContext
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import org.jetbrains.annotations.Nullable
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
import static java.util.Objects.requireNonNull
|
||||
|
||||
@EqualsAndHashCode(includeFields = true)
|
||||
@ -15,13 +18,13 @@ final class EmbeddablePartsMap {
|
||||
|
||||
EmbeddablePartsMap(
|
||||
RenderContext context,
|
||||
Closure<Void> onDiagnostics,
|
||||
Consumer<Collection<Diagnostic>> diagnosticsConsumer,
|
||||
@Nullable Text text = null
|
||||
) {
|
||||
requireNonNull(context)
|
||||
requireNonNull(onDiagnostics)
|
||||
requireNonNull(diagnosticsConsumer)
|
||||
context.parts.each {
|
||||
this.put(it.path, new EmbeddablePart(it, context, onDiagnostics, text))
|
||||
this[it.path] = new EmbeddablePart(it, context, diagnosticsConsumer, text)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,24 +2,27 @@ package com.jessebrault.ssg.dsl
|
||||
|
||||
import com.jessebrault.ssg.text.FrontMatter
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import groovy.transform.Memoized
|
||||
import groovy.transform.NullCheck
|
||||
import groovy.transform.TupleConstructor
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
@TupleConstructor(includeFields = true, defaults = false)
|
||||
@NullCheck(includeGenerated = true)
|
||||
@EqualsAndHashCode(includeFields = true)
|
||||
final class EmbeddableText {
|
||||
|
||||
private final Text text
|
||||
private final Closure<Void> onDiagnostics
|
||||
private final Consumer<Collection<Diagnostic>> diagnosticsConsumer
|
||||
|
||||
@Memoized
|
||||
String render() {
|
||||
def result = this.text.type.renderer.render(this.text)
|
||||
if (result.diagnostics.size() > 0) {
|
||||
this.onDiagnostics.call(result.diagnostics)
|
||||
this.diagnosticsConsumer.accept(result.diagnostics)
|
||||
''
|
||||
} else {
|
||||
result.get()
|
||||
@ -30,7 +33,7 @@ final class EmbeddableText {
|
||||
FrontMatter getFrontMatter() {
|
||||
def result = this.text.type.frontMatterGetter.get(this.text)
|
||||
if (result.hasDiagnostics()) {
|
||||
this.onDiagnostics.call(result.diagnostics)
|
||||
this.diagnosticsConsumer.accept(result.diagnostics)
|
||||
new FrontMatter(this.text, [:])
|
||||
} else {
|
||||
result.get()
|
||||
@ -41,7 +44,7 @@ final class EmbeddableText {
|
||||
String getExcerpt(int limit) {
|
||||
def result = this.text.type.excerptGetter.getExcerpt(this.text, limit)
|
||||
if (result.hasDiagnostics()) {
|
||||
this.onDiagnostics.call(result.diagnostics)
|
||||
this.diagnosticsConsumer.accept(result.diagnostics)
|
||||
''
|
||||
} else {
|
||||
result.get()
|
||||
|
@ -1,9 +1,12 @@
|
||||
package com.jessebrault.ssg.dsl
|
||||
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import groovy.transform.NullCheck
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
@NullCheck
|
||||
@EqualsAndHashCode(includeFields = true)
|
||||
final class EmbeddableTextsCollection {
|
||||
@ -11,9 +14,9 @@ final class EmbeddableTextsCollection {
|
||||
@Delegate
|
||||
private final Collection<EmbeddableText> embeddableTexts = []
|
||||
|
||||
EmbeddableTextsCollection(Collection<Text> texts, Closure<Void> onDiagnostics) {
|
||||
EmbeddableTextsCollection(Collection<Text> texts, Consumer<Collection<Diagnostic>> diagnosticsConsumer) {
|
||||
texts.each {
|
||||
this << new EmbeddableText(it, onDiagnostics)
|
||||
this << new EmbeddableText(it, diagnosticsConsumer)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,11 +4,12 @@ import com.jessebrault.ssg.dsl.tagbuilder.DynamicTagBuilder
|
||||
import com.jessebrault.ssg.dsl.urlbuilder.PathBasedUrlBuilder
|
||||
import com.jessebrault.ssg.render.RenderContext
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import groovy.transform.NullCheck
|
||||
import groovy.transform.stc.ClosureParams
|
||||
import groovy.transform.stc.SimpleType
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
final class StandardDslMap {
|
||||
|
||||
@NullCheck(includeGenerated = true)
|
||||
@ -16,8 +17,8 @@ final class StandardDslMap {
|
||||
|
||||
private final Map<String, Object> custom = [:]
|
||||
|
||||
Consumer<Collection<Diagnostic>> diagnosticsConsumer = { }
|
||||
String loggerName = ''
|
||||
Closure<Void> onDiagnostics = { }
|
||||
Text text = null
|
||||
|
||||
void putCustom(String key, Object value) {
|
||||
@ -32,17 +33,10 @@ final class StandardDslMap {
|
||||
|
||||
static Map<String, Object> get(
|
||||
RenderContext context,
|
||||
@DelegatesTo(value = Builder, strategy = Closure.DELEGATE_FIRST)
|
||||
@ClosureParams(
|
||||
value = SimpleType,
|
||||
options = ['com.jessebrault.ssg.dsl.StandardDslMap.Builder']
|
||||
)
|
||||
Closure<Void> builderClosure
|
||||
Consumer<Builder> builderConsumer
|
||||
) {
|
||||
def b = new Builder()
|
||||
builderClosure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
builderClosure.delegate = b
|
||||
builderClosure(b)
|
||||
builderConsumer.accept(b)
|
||||
|
||||
[:].tap {
|
||||
// standard variables
|
||||
@ -51,7 +45,7 @@ final class StandardDslMap {
|
||||
it.models = new ModelCollection<Object>(context.models)
|
||||
it.parts = new EmbeddablePartsMap(
|
||||
context,
|
||||
b.onDiagnostics,
|
||||
b.diagnosticsConsumer,
|
||||
b.text
|
||||
)
|
||||
it.siteSpec = context.siteSpec
|
||||
@ -61,11 +55,11 @@ final class StandardDslMap {
|
||||
it.tasks = new TaskCollection(context.tasks)
|
||||
it.text = b.text ? new EmbeddableText(
|
||||
b.text,
|
||||
b.onDiagnostics
|
||||
b.diagnosticsConsumer
|
||||
) : null
|
||||
it.texts = new EmbeddableTextsCollection(
|
||||
context.texts,
|
||||
b.onDiagnostics
|
||||
b.diagnosticsConsumer
|
||||
)
|
||||
it.urlBuilder = new PathBasedUrlBuilder(
|
||||
context.targetPath,
|
||||
|
@ -21,9 +21,8 @@ final class GspPageRenderer implements PageRenderer {
|
||||
def diagnostics = []
|
||||
try {
|
||||
def result = this.gspRenderer.render(specialPage.text, context) {
|
||||
it.diagnosticsConsumer = diagnostics.&addAll
|
||||
it.loggerName = "GspSpecialPage(${ specialPage.path })"
|
||||
it.onDiagnostics = diagnostics.&addAll
|
||||
return
|
||||
}
|
||||
Result.of(diagnostics, result.toString())
|
||||
} catch (Exception e) {
|
||||
|
@ -1,10 +1,10 @@
|
||||
package com.jessebrault.ssg.part
|
||||
|
||||
import com.jessebrault.ssg.render.StandardGspRenderer
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import com.jessebrault.ssg.render.RenderContext
|
||||
import com.jessebrault.ssg.util.Result
|
||||
import com.jessebrault.ssg.render.StandardGspRenderer
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.util.Diagnostic
|
||||
import com.jessebrault.ssg.util.Result
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import org.jetbrains.annotations.Nullable
|
||||
|
||||
@ -29,12 +29,11 @@ final class GspPartRenderer implements PartRenderer {
|
||||
try {
|
||||
def result = this.gspRenderer.render(part.text, context) {
|
||||
it.putCustom('binding', binding)
|
||||
it.diagnosticsConsumer = diagnostics.&addAll
|
||||
it.loggerName = "GspPart(${ part.path })"
|
||||
it.onDiagnostics = diagnostics.&addAll
|
||||
if (text) {
|
||||
it.text = text
|
||||
}
|
||||
return
|
||||
}
|
||||
Result.of(diagnostics, result.toString())
|
||||
} catch (Exception e) {
|
||||
|
@ -5,6 +5,8 @@ import groovy.text.GStringTemplateEngine
|
||||
import groovy.text.TemplateEngine
|
||||
import org.codehaus.groovy.control.CompilerConfiguration
|
||||
|
||||
import java.util.function.Consumer
|
||||
|
||||
final class StandardGspRenderer {
|
||||
|
||||
private final TemplateEngine engine
|
||||
@ -18,10 +20,9 @@ final class StandardGspRenderer {
|
||||
String render(
|
||||
String template,
|
||||
RenderContext context,
|
||||
@DelegatesTo(value = StandardDslMap.Builder, strategy = Closure.DELEGATE_FIRST)
|
||||
Closure<Void> dslMapBuilderClosure
|
||||
Consumer<StandardDslMap.Builder> dslMapBuilderConsumer
|
||||
) {
|
||||
this.engine.createTemplate(template).make(StandardDslMap.get(context, dslMapBuilderClosure)).toString()
|
||||
this.engine.createTemplate(template).make(StandardDslMap.get(context, dslMapBuilderConsumer)).toString()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -23,10 +23,9 @@ final class GspTemplateRenderer implements TemplateRenderer {
|
||||
def diagnostics = []
|
||||
try {
|
||||
def result = this.gspRenderer.render(template.text, context) {
|
||||
it.diagnosticsConsumer = diagnostics.&addAll
|
||||
it.loggerName = "GspTemplate(${ template.path })"
|
||||
it.onDiagnostics = diagnostics.&addAll
|
||||
it.text = text
|
||||
return
|
||||
}
|
||||
Result.of(diagnostics, result)
|
||||
} catch (Exception e) {
|
||||
|
Loading…
Reference in New Issue
Block a user