-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use builder pattern to allow for easier customization
- Loading branch information
Showing
6 changed files
with
160 additions
and
49 deletions.
There are no files selected for viewing
49 changes: 0 additions & 49 deletions
49
honey-common/src/dev/shiza/honey/adventure/AdventureHoney.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
honey-common/src/dev/shiza/honey/adventure/AdventureHoneyBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package dev.shiza.honey.adventure; | ||
|
||
import dev.shiza.honey.builder.HoneyBaseBuilder; | ||
import dev.shiza.honey.message.MessageCompiler; | ||
import net.kyori.adventure.text.Component; | ||
|
||
final class AdventureHoneyBuilder extends HoneyBaseBuilder<Component, AdventureHoney> { | ||
|
||
AdventureHoneyBuilder(final MessageCompiler<Component> messageCompiler) { | ||
super(messageCompiler); | ||
} | ||
|
||
@Override | ||
public AdventureHoney build() { | ||
return new AdventureHoneyImpl( | ||
this.messageCompiler, | ||
this.implicitConversion, | ||
this.placeholderContext, | ||
this.placeholderResolver, | ||
this.placeholderSanitizer, | ||
this.placeholderEvaluator, | ||
this.processorRegistry); | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
honey-common/src/dev/shiza/honey/adventure/AdventureHoneyFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package dev.shiza.honey.adventure; | ||
|
||
import dev.shiza.honey.builder.HoneyBuilder; | ||
import net.kyori.adventure.text.Component; | ||
import net.kyori.adventure.text.minimessage.MiniMessage; | ||
|
||
public final class AdventureHoneyFactory { | ||
|
||
private AdventureHoneyFactory() {} | ||
|
||
public static HoneyBuilder<Component, AdventureHoney> builder() { | ||
return new AdventureHoneyBuilder(AdventureMessageCompilerFactory.create()); | ||
} | ||
|
||
public static HoneyBuilder<Component, AdventureHoney> builder(final MiniMessage miniMessage) { | ||
return new AdventureHoneyBuilder(AdventureMessageCompilerFactory.create(miniMessage)); | ||
} | ||
} |
88 changes: 88 additions & 0 deletions
88
honey-common/src/dev/shiza/honey/builder/HoneyBaseBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package dev.shiza.honey.builder; | ||
|
||
import dev.shiza.honey.Honey; | ||
import dev.shiza.honey.conversion.ImplicitConversion; | ||
import dev.shiza.honey.message.MessageCompiler; | ||
import dev.shiza.honey.placeholder.evaluator.PlaceholderContext; | ||
import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; | ||
import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; | ||
import dev.shiza.honey.placeholder.sanitizer.PlaceholderSanitizer; | ||
import dev.shiza.honey.processor.ProcessorRegistry; | ||
import dev.shiza.honey.reflection.ReflectivePlaceholderEvaluatorFactory; | ||
import org.jetbrains.annotations.ApiStatus.Internal; | ||
|
||
@Internal | ||
public abstract class HoneyBaseBuilder<T, R extends Honey<T>> implements HoneyBuilder<T, R> { | ||
|
||
protected MessageCompiler<T> messageCompiler; | ||
protected ImplicitConversion implicitConversion; | ||
protected PlaceholderContext placeholderContext; | ||
protected PlaceholderResolver placeholderResolver; | ||
protected PlaceholderSanitizer placeholderSanitizer; | ||
protected PlaceholderEvaluator placeholderEvaluator; | ||
protected ProcessorRegistry processorRegistry; | ||
|
||
private HoneyBaseBuilder( | ||
final MessageCompiler<T> messageCompiler, | ||
final ImplicitConversion implicitConversion, | ||
final PlaceholderContext placeholderContext, | ||
final PlaceholderResolver placeholderResolver, | ||
final PlaceholderSanitizer placeholderSanitizer, | ||
final PlaceholderEvaluator placeholderEvaluator, | ||
final ProcessorRegistry processorRegistry) { | ||
this.messageCompiler = messageCompiler; | ||
this.implicitConversion = implicitConversion; | ||
this.placeholderContext = placeholderContext; | ||
this.placeholderResolver = placeholderResolver; | ||
this.placeholderSanitizer = placeholderSanitizer; | ||
this.placeholderEvaluator = placeholderEvaluator; | ||
this.processorRegistry = processorRegistry; | ||
} | ||
|
||
protected HoneyBaseBuilder(final MessageCompiler<T> messageCompiler) { | ||
this( | ||
messageCompiler, | ||
ImplicitConversion.create(), | ||
PlaceholderContext.create(), | ||
PlaceholderResolver.create(), | ||
PlaceholderSanitizer.create(), | ||
ReflectivePlaceholderEvaluatorFactory.create(), | ||
ProcessorRegistry.create()); | ||
} | ||
|
||
@Override | ||
public HoneyBuilder<T, R> implicitConversion(final ImplicitConversion implicitConversion) { | ||
this.implicitConversion = implicitConversion; | ||
return this; | ||
} | ||
|
||
@Override | ||
public HoneyBuilder<T, R> placeholderContext(final PlaceholderContext placeholderContext) { | ||
this.placeholderContext = placeholderContext; | ||
return this; | ||
} | ||
|
||
@Override | ||
public HoneyBuilder<T, R> placeholderResolver(final PlaceholderResolver placeholderResolver) { | ||
this.placeholderResolver = placeholderResolver; | ||
return this; | ||
} | ||
|
||
@Override | ||
public HoneyBuilder<T, R> placeholderSanitizer(final PlaceholderSanitizer placeholderSanitizer) { | ||
this.placeholderSanitizer = placeholderSanitizer; | ||
return this; | ||
} | ||
|
||
@Override | ||
public HoneyBuilder<T, R> placeholderEvaluator(final PlaceholderEvaluator placeholderEvaluator) { | ||
this.placeholderEvaluator = placeholderEvaluator; | ||
return this; | ||
} | ||
|
||
@Override | ||
public HoneyBuilder<T, R> processorRegistry(final ProcessorRegistry processorRegistry) { | ||
this.processorRegistry = processorRegistry; | ||
return this; | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
honey-common/src/dev/shiza/honey/builder/HoneyBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package dev.shiza.honey.builder; | ||
|
||
import dev.shiza.honey.Honey; | ||
import dev.shiza.honey.conversion.ImplicitConversion; | ||
import dev.shiza.honey.placeholder.evaluator.PlaceholderContext; | ||
import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; | ||
import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; | ||
import dev.shiza.honey.placeholder.sanitizer.PlaceholderSanitizer; | ||
import dev.shiza.honey.processor.ProcessorRegistry; | ||
|
||
public interface HoneyBuilder<T, R extends Honey<T>> { | ||
|
||
HoneyBuilder<T, R> implicitConversion(final ImplicitConversion implicitConversion); | ||
|
||
HoneyBuilder<T, R> placeholderContext(final PlaceholderContext placeholderContext); | ||
|
||
HoneyBuilder<T, R> placeholderResolver(final PlaceholderResolver placeholderResolver); | ||
|
||
HoneyBuilder<T, R> placeholderSanitizer(final PlaceholderSanitizer placeholderSanitizer); | ||
|
||
HoneyBuilder<T, R> placeholderEvaluator(final PlaceholderEvaluator placeholderEvaluator); | ||
|
||
HoneyBuilder<T, R> processorRegistry(final ProcessorRegistry processorRegistry); | ||
|
||
R build(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters