Skip to content

Commit

Permalink
Use more efficient implementation of iridium colors; Add support for …
Browse files Browse the repository at this point in the history
…using adventure along with iridium coloring
  • Loading branch information
shitzuu committed Aug 16, 2024
1 parent aa28b82 commit 6258f52
Show file tree
Hide file tree
Showing 9 changed files with 2,764 additions and 13 deletions.
2,555 changes: 2,555 additions & 0 deletions .idea/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
124 changes: 124 additions & 0 deletions .idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/honey-publish.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group = "dev.shiza"
version = "1.0.0-SNAPSHOT"
version = "1.0.1-SNAPSHOT"

java {
withSourcesJar()
Expand Down
14 changes: 11 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,20 @@
honey = "1.0.0"
apache-commons-lang3 = "3.16.0"
allegro-opel = "1.1.14"
iridium = "1.1.0"
iridium = "2.0.0"
parboiled = "1.4.1"
adventure = "4.17.0"

[libraries]
honey = { module = "dev.shiza:honey", version.ref = "honey" }
opel = { module = "pl.allegro.tech:opel", version.ref = "allegro-opel" }
lang = { module = "org.apache.commons:commons-lang3", version.ref = "apache-commons-lang3" }
iridium = { module = "com.iridium:IridiumColorAPI", version.ref = "iridium" }
parboiled = { module = "org.parboiled:parboiled-java", version.ref = "parboiled" }
iridium-colors = { module = "com.iridium:iridium-colors", version.ref = "iridium" }
iridium-colors-adventure = { module = "com.iridium:iridium-colors-adventure", version.ref = "iridium" }
parboiled = { module = "org.parboiled:parboiled-java", version.ref = "parboiled" }
adventure-api = { module = "net.kyori:adventure-api", version.ref = "adventure" }
adventure-minimessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure" }

[bundles]
iridium = ["iridium-colors", "iridium-colors-adventure"]
adventure = ["adventure-api", "adventure-minimessage"]
3 changes: 2 additions & 1 deletion honey-iridium/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ plugins {
}

dependencies {
api(libs.bundles.iridium)
compileOnly(libs.honey)
api(libs.iridium)
compileOnly(libs.bundles.adventure)
}

honeyPublish {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
package dev.shiza.honey.iridium;

import static com.iridium.iridiumcolorapi.IridiumColorAPI.process;
import static com.iridium.iridiumcolorapi.IridiumColorAPI.stripColorFormatting;
import static com.iridium.colors.IridiumColors.process;
import static com.iridium.colors.IridiumColors.stripColorFormatting;

import dev.shiza.honey.message.MessageCompiler;
import dev.shiza.honey.placeholder.sanitizer.SanitizedPlaceholder;
import java.util.List;
import java.util.function.Function;

class IridiumMessageCompiler implements MessageCompiler<String> {
class IridiumMessageCompiler<T> implements MessageCompiler<T> {

private static final char TAG_RESOLVER_INIT = '<';
private static final char TAG_RESOLVER_STOP = '>';
private final Function<String, T> transformation;

IridiumMessageCompiler() {}
IridiumMessageCompiler(final Function<String, T> transformation) {
this.transformation = transformation;
}

@Override
public String compile(
final String sanitizedContent, final List<SanitizedPlaceholder> placeholders) {
public T compile(final String sanitizedContent, final List<SanitizedPlaceholder> placeholders) {
String processedContent = sanitizedContent;
for (final SanitizedPlaceholder placeholder : placeholders) {
final String evaluatedValue = placeholder.evaluatedValue().toString();
Expand All @@ -25,7 +28,7 @@ public String compile(
processedContent.replace(getResolvableTag(placeholder.key()), sanitizedValue);
processedContent = process(processedContent);
}
return processedContent;
return transformation.apply(processedContent);
}

private String getResolvableTag(final String key) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
package dev.shiza.honey.iridium;

import static java.util.function.Function.identity;

import dev.shiza.honey.message.MessageCompiler;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.legacy.IridiumComponentSerializer;

public final class IridiumMessageCompilerFactory {

private static final IridiumComponentSerializer COMPONENT_SERIALIZER =
IridiumComponentSerializer.create();

private IridiumMessageCompilerFactory() {}

public static MessageCompiler<String> create() {
return new IridiumMessageCompiler();
return new IridiumMessageCompiler<>(identity());
}

public static MessageCompiler<Component> createAdventure() {
return new IridiumMessageCompiler<>(COMPONENT_SERIALIZER::deserialize);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package dev.shiza.honey.iridium.adventure;

import dev.shiza.honey.Honey;
import dev.shiza.honey.iridium.IridiumMessageCompilerFactory;
import dev.shiza.honey.message.MessageCompiler;
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.reflection.ReflectivePlaceholderEvaluatorFactory;
import net.kyori.adventure.text.Component;

public interface AdventureIridiumHoney extends Honey<Component> {

static AdventureIridiumHoney createReflective() {
return create(
IridiumMessageCompilerFactory.createAdventure(),
PlaceholderResolver.create(),
PlaceholderSanitizer.create(),
ReflectivePlaceholderEvaluatorFactory.create());
}

private static AdventureIridiumHoney create(
final MessageCompiler<Component> messageCompiler,
final PlaceholderResolver placeholderResolver,
final PlaceholderSanitizer placeholderSanitizer,
final PlaceholderEvaluator placeholderEvaluator) {
return new AdventureIridiumHoneyImpl(
messageCompiler, placeholderResolver, placeholderSanitizer, placeholderEvaluator);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package dev.shiza.honey.iridium.adventure;

import dev.shiza.honey.HoneyImpl;
import dev.shiza.honey.message.MessageCompiler;
import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator;
import dev.shiza.honey.placeholder.resolver.PlaceholderResolver;
import dev.shiza.honey.placeholder.sanitizer.PlaceholderSanitizer;
import net.kyori.adventure.text.Component;

class AdventureIridiumHoneyImpl extends HoneyImpl<Component> implements AdventureIridiumHoney {

AdventureIridiumHoneyImpl(
final MessageCompiler<Component> messageCompiler,
final PlaceholderResolver placeholderResolver,
final PlaceholderSanitizer placeholderSanitizer,
final PlaceholderEvaluator placeholderEvaluator) {
super(messageCompiler, placeholderResolver, placeholderSanitizer, placeholderEvaluator);
}
}

0 comments on commit 6258f52

Please sign in to comment.