From 0f196f59c6a4cb76ab8409da62ff1f35505f94a8 Mon Sep 17 00:00:00 2001 From: Dico Karssiens Date: Sun, 11 Nov 2018 14:06:45 +0000 Subject: Changes I made before breaking my local repository. Hoping this works. --- .../chat/help/defaults/SyntaxHelpTopic.java | 184 ++++++++++----------- 1 file changed, 92 insertions(+), 92 deletions(-) (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/SyntaxHelpTopic.java') diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/SyntaxHelpTopic.java b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/SyntaxHelpTopic.java index d0e3ebe..f0f820f 100644 --- a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/SyntaxHelpTopic.java +++ b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/defaults/SyntaxHelpTopic.java @@ -1,92 +1,92 @@ -package io.dico.dicore.command.chat.help.defaults; - -import io.dico.dicore.command.Command; -import io.dico.dicore.command.EMessageType; -import io.dico.dicore.command.ExecutionContext; -import io.dico.dicore.command.ICommandAddress; -import io.dico.dicore.Formatting; -import io.dico.dicore.command.chat.help.IHelpComponent; -import io.dico.dicore.command.chat.help.IHelpTopic; -import io.dico.dicore.command.chat.help.SimpleHelpComponent; -import io.dico.dicore.command.parameter.Parameter; -import io.dico.dicore.command.parameter.ParameterList; -import org.bukkit.permissions.Permissible; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -public class SyntaxHelpTopic implements IHelpTopic { - - @Override - public List getComponents(ICommandAddress target, Permissible viewer, ExecutionContext context, boolean isForPage) { - if (!target.hasCommand()) { - return Collections.emptyList(); - } - - if (target.hasChildren()) { - if (!isForPage) { - // HelpPages will send help instead of syntax, which might in turn include syntax as well. - return Collections.emptyList(); - } - - if (!target.hasUserDeclaredCommand() && !target.getCommand().getParameterList().hasAnyParameters()) { - // no point adding syntax at all - return Collections.emptyList(); - } - } - - StringBuilder line = new StringBuilder(); - if (isForPage) - line.append(context.getFormat(EMessageType.SYNTAX)) - .append("Syntax: "); - - line.append('/') - .append(context.getFormat(EMessageType.INSTRUCTION)) - .append(target.getAddress()) - .append(' '); - - addShortSyntax(line, target, context); - - return Collections.singletonList(new SimpleHelpComponent(line.toString())); - } - - private static void addShortSyntax(StringBuilder builder, ICommandAddress address, ExecutionContext ctx) { - if (address.hasCommand()) { - Formatting syntaxColor = ctx.getFormat(EMessageType.SYNTAX); - Formatting highlight = ctx.getFormat(EMessageType.HIGHLIGHT); - builder.append(syntaxColor); - - Command command = address.getCommand(); - ParameterList list = command.getParameterList(); - Parameter repeated = list.getRepeatedParameter(); - - int requiredCount = list.getRequiredCount(); - List> indexedParameters = list.getIndexedParameters(); - for (int i = 0, n = indexedParameters.size(); i < n; i++) { - builder.append(i < requiredCount ? " <" : " ["); - Parameter param = indexedParameters.get(i); - builder.append(param.getName()); - if (param == repeated) { - builder.append(highlight).append("...").append(syntaxColor); - } - builder.append(i < requiredCount ? '>' : ']'); - } - - Map> parametersByName = list.getParametersByName(); - for (Parameter param : parametersByName.values()) { - if (param.isFlag()) { - builder.append(" [").append(param.getName()); - if (param.expectsInput()) { - builder.append(" <").append(param.getName()).append(">"); - } - builder.append(']'); - } - } - - } else { - builder.append(' '); - } - } - -} +package io.dico.dicore.command.chat.help.defaults; + +import io.dico.dicore.command.Command; +import io.dico.dicore.command.EMessageType; +import io.dico.dicore.command.ExecutionContext; +import io.dico.dicore.command.ICommandAddress; +import io.dico.dicore.Formatting; +import io.dico.dicore.command.chat.help.IHelpComponent; +import io.dico.dicore.command.chat.help.IHelpTopic; +import io.dico.dicore.command.chat.help.SimpleHelpComponent; +import io.dico.dicore.command.parameter.Parameter; +import io.dico.dicore.command.parameter.ParameterList; +import org.bukkit.permissions.Permissible; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +public class SyntaxHelpTopic implements IHelpTopic { + + @Override + public List getComponents(ICommandAddress target, Permissible viewer, ExecutionContext context, boolean isForPage) { + if (!target.hasCommand()) { + return Collections.emptyList(); + } + + if (target.hasChildren()) { + if (!isForPage) { + // HelpPages will send help instead of syntax, which might in turn include syntax as well. + return Collections.emptyList(); + } + + if (!target.hasUserDeclaredCommand() && !target.getCommand().getParameterList().hasAnyParameters()) { + // no point adding syntax at all + return Collections.emptyList(); + } + } + + StringBuilder line = new StringBuilder(); + if (isForPage) + line.append(context.getFormat(EMessageType.SYNTAX)) + .append("Syntax: "); + + line.append('/') + .append(context.getFormat(EMessageType.INSTRUCTION)) + .append(target.getAddress()) + .append(' '); + + addShortSyntax(line, target, context); + + return Collections.singletonList(new SimpleHelpComponent(line.toString())); + } + + private static void addShortSyntax(StringBuilder builder, ICommandAddress address, ExecutionContext ctx) { + if (address.hasCommand()) { + Formatting syntaxColor = ctx.getFormat(EMessageType.SYNTAX); + Formatting highlight = ctx.getFormat(EMessageType.HIGHLIGHT); + builder.append(syntaxColor); + + Command command = address.getCommand(); + ParameterList list = command.getParameterList(); + Parameter repeated = list.getRepeatedParameter(); + + int requiredCount = list.getRequiredCount(); + List> indexedParameters = list.getIndexedParameters(); + for (int i = 0, n = indexedParameters.size(); i < n; i++) { + builder.append(i < requiredCount ? " <" : " ["); + Parameter param = indexedParameters.get(i); + builder.append(param.getName()); + if (param == repeated) { + builder.append(highlight).append("...").append(syntaxColor); + } + builder.append(i < requiredCount ? '>' : ']'); + } + + Map> parametersByName = list.getParametersByName(); + for (Parameter param : parametersByName.values()) { + if (param.isFlag()) { + builder.append(" [").append(param.getName()); + if (param.expectsInput()) { + builder.append(" <").append(param.getName()).append(">"); + } + builder.append(']'); + } + } + + } else { + builder.append(' '); + } + } + +} -- cgit v1.2.3