Skip to content

Commit

Permalink
text-minimessage: Add additional TagResolvers to Context$parse
Browse files Browse the repository at this point in the history
  • Loading branch information
Joo200 committed Feb 23, 2022
1 parent 6e44152 commit 5c98011
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
Expand Up @@ -25,6 +25,7 @@

import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand All @@ -42,10 +43,11 @@ public interface Context {
* Parses a MiniMessage string using all the settings of this context.
*
* @param message the message to parse
* @param resolvers additional tag resolvers
* @return the parsed message
* @since 4.10.0
*/
@NotNull Component parse(final @NotNull String message);
@NotNull Component parse(final @NotNull String message, final @NotNull TagResolver@NotNull... resolvers);

/**
* Create a new parsing exception.
Expand Down
Expand Up @@ -106,8 +106,9 @@ public UnaryOperator<Component> postProcessor() {
}

@Override
public @NotNull Component parse(final @NotNull String message) {
return this.miniMessage.deserialize(requireNonNull(message, "message"), this.tagResolver);
public @NotNull Component parse(final @NotNull String message, final @NotNull TagResolver@NotNull... resolvers) {
return this.miniMessage.deserialize(requireNonNull(message, "message"),
TagResolver.resolver(this.tagResolver, TagResolver.resolver(resolvers)));
}

@Override
Expand Down
Expand Up @@ -26,6 +26,7 @@
import java.util.Arrays;
import java.util.List;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.minimessage.Context;
import net.kyori.adventure.text.minimessage.ParsingException;
import net.kyori.adventure.text.minimessage.TestBase;
Expand All @@ -35,6 +36,8 @@
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.Test;

import static net.kyori.adventure.text.Component.text;
import static net.kyori.adventure.text.format.TextColor.color;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.fail;
Expand Down Expand Up @@ -81,6 +84,27 @@ void testSingleAndResolversCombine() {
assertEquals("from resolver", ((PreProcess) resolveForTest(built, "overlapping")).value());
}

@Test
void testParseInResolver() {
final List<TagResolver> placeholders = Arrays.asList(
Placeholder.parsed("foo", "<red>Hello</red>"),
Placeholder.parsed("bar", "<yellow>World</yellow>")
);
final Context ctx = TestBase.dummyContext("dummy text");
final Component input = ctx.parse("<foo> <bar>",
Placeholder.parsed("foo", "<red>Hello</red>"), Placeholder.parsed("bar", "<yellow>World</yellow>"));

final Component expected = Component.text()
.append(
text("Hello", color(NamedTextColor.RED)),
text(" "),
text("World", color(NamedTextColor.YELLOW))
)
.build();

assertEquals(expected, input);
}

private static @NotNull Tag resolveForTest(final TagResolver resolver, final String tag) {
try {
final Context ctx = TestBase.dummyContext("help i shouldn't be seen");
Expand Down

0 comments on commit 5c98011

Please sign in to comment.