diff --git a/src/main/java/de/prob2/jupyter/Command.java b/src/main/java/de/prob2/jupyter/Command.java index ee1361accd0fa0a7a9984fe7c81acafbd06dad36..01fccee5bdd5b9fc6a801eb77e5298d014016141 100644 --- a/src/main/java/de/prob2/jupyter/Command.java +++ b/src/main/java/de/prob2/jupyter/Command.java @@ -43,7 +43,7 @@ public interface Command { public abstract @Nullable DisplayData run(final @NotNull ParsedArguments args); - public abstract @Nullable DisplayData inspect(final @NotNull String argString, final int at); + public abstract @NotNull ParameterInspectors getParameterInspectors(); public abstract @Nullable ReplacementOptions complete(final @NotNull String argString, final int at); } diff --git a/src/main/java/de/prob2/jupyter/CommandUtils.java b/src/main/java/de/prob2/jupyter/CommandUtils.java index 10c97352290f59a9518756d325cf8c3fc867e95d..c36d84ecd2e2798039646a2f31de4cfa1d27ceff 100644 --- a/src/main/java/de/prob2/jupyter/CommandUtils.java +++ b/src/main/java/de/prob2/jupyter/CommandUtils.java @@ -90,7 +90,7 @@ public final class CommandUtils { } } - public static @NotNull SplitResult splitArgs(final @NotNull Parameters parameters, final @NotNull String argString) { + public static @NotNull SplitResult splitArgs(final @NotNull Parameters parameters, final @NotNull String argString, final int upToPosition) { final SplitArguments splitArgs = new SplitArguments(Collections.emptyMap()); PositionedString remainingArgs = new PositionedString(argString, 0); if (parameters.getBodyParam().isPresent()) { @@ -102,6 +102,7 @@ public final class CommandUtils { } } + Parameter<?> parameterAtPosition = null; for (int i = 0; i < parameters.getPositionalParameters().size();) { final Parameter<?> param = parameters.getPositionalParameters().get(i); if (remainingArgs.getValue().isEmpty()) { @@ -112,12 +113,29 @@ public final class CommandUtils { splitArgs.add(param, splitSingleArg.getSplitArg()); remainingArgs = splitSingleArg.getRemainingArgString(); + if (remainingArgs.getValue().isEmpty() || remainingArgs.getStartPosition() > upToPosition) { + parameterAtPosition = param; + break; + } + if (!param.isRepeating()) { i++; } } - return new SplitResult(splitArgs, remainingArgs); + if (parameters.getBodyParam().isPresent() && splitArgs.containsKey(parameters.getBodyParam().get())) { + final List<PositionedString> bodyParamValues = splitArgs.get(parameters.getBodyParam().get()); + assert bodyParamValues.size() == 1; + if (upToPosition >= bodyParamValues.get(0).getStartPosition()) { + parameterAtPosition = parameters.getBodyParam().get(); + } + } + + return new SplitResult(splitArgs, parameterAtPosition, remainingArgs); + } + + public static @NotNull SplitResult splitArgs(final @NotNull Parameters parameters, final @NotNull String argString) { + return splitArgs(parameters, argString, argString.length()); } private static <T> void validateSplitParameter(final @NotNull ParsedArguments parsed, final @NotNull SplitArguments splitArgs, final @NotNull Parameter<T> param) { @@ -290,25 +308,6 @@ public final class CommandUtils { ); } - public static @Nullable DisplayData inspectArgs(final @NotNull String argString, final int at, final @NotNull Inspector @NotNull... inspectors) { - final Matcher argSplitMatcher = ARG_SPLIT_PATTERN.matcher(argString); - int argStart = 0; - int argEnd = argString.length(); - int i = 0; - while (argSplitMatcher.find()) { - if (argSplitMatcher.end() > at) { - argEnd = argSplitMatcher.start(); - break; - } - argStart = argSplitMatcher.end(); - if (i >= inspectors.length-1) { - break; - } - i++; - } - return inspectors[i].inspect(argString.substring(argStart, argEnd), at - argStart); - } - public static @Nullable ReplacementOptions completeArgs(final @NotNull String argString, final int at, final @NotNull Completer @NotNull... completers) { final Matcher argSplitMatcher = ARG_SPLIT_PATTERN.matcher(argString); int argStart = 0; diff --git a/src/main/java/de/prob2/jupyter/ParameterInspectors.java b/src/main/java/de/prob2/jupyter/ParameterInspectors.java new file mode 100644 index 0000000000000000000000000000000000000000..e848396c77a2e2b5bb15a280c66a9be54a4864aa --- /dev/null +++ b/src/main/java/de/prob2/jupyter/ParameterInspectors.java @@ -0,0 +1,41 @@ +package de.prob2.jupyter; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import com.google.common.base.MoreObjects; + +import org.jetbrains.annotations.NotNull; + +public final class ParameterInspectors { + public static final @NotNull ParameterInspectors NONE = new ParameterInspectors(Collections.emptyMap()); + + private final @NotNull Map<@NotNull Parameter<?>, CommandUtils.@NotNull Inspector> inspectors; + + public ParameterInspectors(final @NotNull Map<@NotNull Parameter<?>, CommandUtils.@NotNull Inspector> inspectors) { + super(); + + this.inspectors = Collections.unmodifiableMap(new HashMap<>(inspectors)); + } + + public @NotNull Map<@NotNull Parameter<?>, CommandUtils.@NotNull Inspector> getInspectors() { + return this.inspectors; + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("inspectors", this.getInspectors()) + .toString(); + } + + public @NotNull Optional<CommandUtils.Inspector> getInspectorForParameter(final @NotNull Parameter<?> parameter) { + if (this.getInspectors().containsKey(parameter)) { + return Optional.of(this.getInspectors().get(parameter)); + } else { + return Optional.empty(); + } + } +} diff --git a/src/main/java/de/prob2/jupyter/ProBKernel.java b/src/main/java/de/prob2/jupyter/ProBKernel.java index 9e6f0c46fd5bf179b06d4fe5bcbb900b903a47b1..b2c986437ef99fde95b885ba0041580da3c563f4 100644 --- a/src/main/java/de/prob2/jupyter/ProBKernel.java +++ b/src/main/java/de/prob2/jupyter/ProBKernel.java @@ -13,6 +13,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Properties; import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Matcher; @@ -353,6 +354,23 @@ public final class ProBKernel extends BaseKernel { } } + private static @Nullable DisplayData inspectCommandArguments(final @NotNull Command command, final @NotNull String argString, final int at) { + final SplitResult split = CommandUtils.splitArgs(command.getParameters(), argString, at); + if (split.getParameterAtPosition().isPresent()) { + final Optional<CommandUtils.Inspector> inspector = command.getParameterInspectors().getInspectorForParameter(split.getParameterAtPosition().get()); + if (inspector.isPresent()) { + final List<PositionedString> argsAtPosition = split.getArguments().get(split.getParameterAtPosition().get()); + assert !argsAtPosition.isEmpty(); + final PositionedString lastArgument = argsAtPosition.get(argsAtPosition.size() - 1); + return inspector.get().inspect(lastArgument.getValue(), at - lastArgument.getStartPosition()); + } else { + return null; + } + } else { + return null; + } + } + @Override public @Nullable DisplayData inspect(final @NotNull String code, final int at, final boolean extraDetail) { // Note: We ignore the extraDetail parameter, because in practice it is always false. This is because the inspect_request messages sent by Jupyter Notebook always have their detail_level set to 0. @@ -373,7 +391,7 @@ public final class ProBKernel extends BaseKernel { // The cursor is somewhere in the command arguments, ask the command to inspect. assert name != null; final String argString = commandMatcher.group(2) == null ? "" : commandMatcher.group(2); - return command.inspect(argString, at - argOffset); + return inspectCommandArguments(command, argString, at - argOffset); } } else { // Invalid command, can't inspect. @@ -381,7 +399,7 @@ public final class ProBKernel extends BaseKernel { } } else { // The code is not a valid command, ask :eval to inspect. - return this.getCommands().get(":eval").inspect(code, at); + return inspectCommandArguments(this.getCommands().get(":eval"), code, at); } } diff --git a/src/main/java/de/prob2/jupyter/SplitResult.java b/src/main/java/de/prob2/jupyter/SplitResult.java index 5ae46948ca6da7579e1a0113d721df010c8c11e5..1cf57685059a389f582f5ef40a95442262ff170a 100644 --- a/src/main/java/de/prob2/jupyter/SplitResult.java +++ b/src/main/java/de/prob2/jupyter/SplitResult.java @@ -1,15 +1,22 @@ package de.prob2.jupyter; +import java.util.Optional; + +import com.google.common.base.MoreObjects; + import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public final class SplitResult { private final @NotNull SplitArguments arguments; + private final @Nullable Parameter<?> parameterAtPosition; private final @NotNull PositionedString remaining; - public SplitResult(final @NotNull SplitArguments arguments, final @NotNull PositionedString remaining) { + public SplitResult(final @NotNull SplitArguments arguments, final @Nullable Parameter<?> parameterAtPosition, final @NotNull PositionedString remaining) { super(); this.arguments = arguments; + this.parameterAtPosition = parameterAtPosition; this.remaining = remaining; } @@ -17,7 +24,20 @@ public final class SplitResult { return this.arguments; } + public @NotNull Optional<Parameter<?>> getParameterAtPosition() { + return Optional.ofNullable(this.parameterAtPosition); + } + public @NotNull PositionedString getRemaining() { return this.remaining; } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("arguments", this.getArguments()) + .add("parameterAtPosition", this.getParameterAtPosition()) + .add("remaining", this.getRemaining()) + .toString(); + } } diff --git a/src/main/java/de/prob2/jupyter/commands/AssertCommand.java b/src/main/java/de/prob2/jupyter/commands/AssertCommand.java index b886c6ff4af65425cb344c64bf8b62319ded8536..cfe9e22d5f6de80e6a48d5db7d37569abfbc68ee 100644 --- a/src/main/java/de/prob2/jupyter/commands/AssertCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/AssertCommand.java @@ -12,6 +12,7 @@ import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -22,7 +23,6 @@ import io.github.spencerpark.jupyter.kernel.display.DisplayData; import io.github.spencerpark.jupyter.kernel.display.mime.MIMEType; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class AssertCommand implements Command { private static final @NotNull Parameter.RequiredSingle FORMULA_PARAM = Parameter.requiredRemainder("formula"); @@ -84,8 +84,10 @@ public final class AssertCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + FORMULA_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java index 28ca4af4f592ac2a5d775c85e28c6f22ba0966fc..a42e3c72f4d7cf5bd061d6dae768916cbfe081e1 100644 --- a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java @@ -12,6 +12,7 @@ import de.prob.statespace.LoadedMachine; import de.prob.statespace.Trace; import de.prob.statespace.Transition; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; @@ -90,8 +91,8 @@ public final class BrowseCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/BsymbCommand.java b/src/main/java/de/prob2/jupyter/commands/BsymbCommand.java index e799a475c480be6557364617ddad5e80987e767a..fd6b68e7ff26f932cc263c92460413f9d61f7185 100644 --- a/src/main/java/de/prob2/jupyter/commands/BsymbCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/BsymbCommand.java @@ -3,6 +3,7 @@ package de.prob2.jupyter.commands; import com.google.inject.Inject; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; @@ -53,8 +54,8 @@ public final class BsymbCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/CheckCommand.java b/src/main/java/de/prob2/jupyter/commands/CheckCommand.java index a20db9ea518bdc567efc0cbdfc021289bc8a37c1..6f8be9fe49bcce00c80220e98cec86def31e25ba 100644 --- a/src/main/java/de/prob2/jupyter/commands/CheckCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/CheckCommand.java @@ -23,6 +23,7 @@ import de.prob.unicode.UnicodeTranslator; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.UserErrorException; @@ -31,7 +32,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class CheckCommand implements Command { private static final @NotNull Parameter.RequiredSingle WHAT_PARAM = Parameter.required("what"); @@ -113,8 +113,8 @@ public final class CheckCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java b/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java index 0388125740feb74112eb864b4ee210a2dcde7295..d7d2a14e1c6e48232c1953167e2b18e67be91c8d 100644 --- a/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java @@ -13,6 +13,7 @@ import de.prob.statespace.Transition; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -21,7 +22,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class ConstantsCommand implements Command { private static final @NotNull Parameter.OptionalSingle PREDICATE_PARAM = Parameter.optionalRemainder("predicate"); @@ -80,8 +80,10 @@ public final class ConstantsCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + PREDICATE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/DotCommand.java b/src/main/java/de/prob2/jupyter/commands/DotCommand.java index 9148588b82b129983318eff2e7c54a38a8e7a655..f1d39882f54db31ee4c0e41b08f9ac42ab1e94f4 100644 --- a/src/main/java/de/prob2/jupyter/commands/DotCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/DotCommand.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; import com.google.inject.Provider; @@ -23,6 +24,7 @@ import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -135,12 +137,11 @@ public final class DotCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectArgs( - argString, at, - (commandName, at0) -> null, // TODO - CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) - ); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(ImmutableMap.of( + COMMAND_PARAM, (commandName, at) -> null, // TODO + FORMULA_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/EvalCommand.java b/src/main/java/de/prob2/jupyter/commands/EvalCommand.java index 34c33999d0dd90c1198213fdb0bc15adfccf73c9..972926f604c67bea93cdf560bc89218c58c89596 100644 --- a/src/main/java/de/prob2/jupyter/commands/EvalCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/EvalCommand.java @@ -10,6 +10,7 @@ import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -18,7 +19,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class EvalCommand implements Command { private static final @NotNull Parameter.RequiredSingle FORMULA_PARAM = Parameter.requiredRemainder("formula"); @@ -67,8 +67,10 @@ public final class EvalCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + FORMULA_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/ExecCommand.java b/src/main/java/de/prob2/jupyter/commands/ExecCommand.java index 5515f0fe2ce18778489f2be6e5b6ac46935d482f..3b123e295e0de3d8b970ada4fae7bb576da3253b 100644 --- a/src/main/java/de/prob2/jupyter/commands/ExecCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/ExecCommand.java @@ -5,6 +5,7 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; import com.google.inject.Provider; @@ -15,6 +16,7 @@ import de.prob.statespace.Transition; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -86,12 +88,11 @@ public final class ExecCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectArgs( - argString, at, - (operation, at0) -> null, // TODO - CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) - ); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(ImmutableMap.of( + OPERATION_PARAM, (operation, at) -> null, // TODO + PREDICATE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/FindCommand.java b/src/main/java/de/prob2/jupyter/commands/FindCommand.java index 88aa529a7a5e22693b219eb4ad5f9fc88d7cdd7d..055d4695a806fedb70446ddf77cc794c27a96008 100644 --- a/src/main/java/de/prob2/jupyter/commands/FindCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/FindCommand.java @@ -12,6 +12,7 @@ import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -20,7 +21,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class FindCommand implements Command { private static final @NotNull Parameter.RequiredSingle PREDICATE_PARAM = Parameter.requiredRemainder("predicate"); @@ -75,8 +75,10 @@ public final class FindCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + PREDICATE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/GotoCommand.java b/src/main/java/de/prob2/jupyter/commands/GotoCommand.java index 798d0e30e60f7d826e6c653061908d51def99896..557b7511a66bbe9f0b85119937568c23378da642 100644 --- a/src/main/java/de/prob2/jupyter/commands/GotoCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/GotoCommand.java @@ -8,6 +8,7 @@ import de.prob.statespace.AnimationSelector; import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.UserErrorException; @@ -68,8 +69,8 @@ public final class GotoCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java b/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java index 083cef677e16b05fc9d75a544586428840cd4b93..2f085e925d93a914af2721f9f8d9597415a50da2 100644 --- a/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java @@ -12,6 +12,7 @@ import com.google.inject.Injector; import de.prob.scripting.ScriptEngineProvider; import de.prob2.jupyter.Command; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -76,8 +77,8 @@ public final class GroovyCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/HelpCommand.java b/src/main/java/de/prob2/jupyter/commands/HelpCommand.java index 57d4418d55042e66cdafde6cf6a605d976f76c3b..9b9ca2f2b26e56868b67d549ada4a7018ab25611 100644 --- a/src/main/java/de/prob2/jupyter/commands/HelpCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/HelpCommand.java @@ -14,6 +14,7 @@ import com.google.inject.Injector; import de.prob2.jupyter.Command; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -23,7 +24,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class HelpCommand implements Command { private static final @NotNull Parameter.OptionalSingle COMMAND_NAME_PARAM = Parameter.optional("commandName"); @@ -170,8 +170,8 @@ public final class HelpCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java b/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java index b93fc03a204377ecc3ae24fc867ec3467147ed5c..278de524c558353836cbf1f76b618fe15d8f0164 100644 --- a/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java @@ -13,6 +13,7 @@ import de.prob.statespace.Transition; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -21,7 +22,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class InitialiseCommand implements Command { private static final @NotNull Parameter.OptionalSingle PREDICATE_PARAM = Parameter.optionalRemainder("predicate"); @@ -80,8 +80,10 @@ public final class InitialiseCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + PREDICATE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/LetCommand.java b/src/main/java/de/prob2/jupyter/commands/LetCommand.java index 24868dedbe9836bdad718fdeb66cea441c0c8a05..d77fa45c58f0bada4e3aaf994f0ed407c3128d81 100644 --- a/src/main/java/de/prob2/jupyter/commands/LetCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/LetCommand.java @@ -12,6 +12,7 @@ import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -76,9 +77,9 @@ public final class LetCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { + public @NotNull ParameterInspectors getParameterInspectors() { // TODO - return null; + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java b/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java index 1a39922989576ab7b43621458866d096d9ea9dfa..92a416b8e7553e94d1ebfffafafc66ff246c4275 100644 --- a/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java @@ -4,6 +4,7 @@ import java.nio.file.Paths; import java.util.Collections; import java.util.Map; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; import com.google.inject.Provider; @@ -13,6 +14,7 @@ import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -84,15 +86,11 @@ public final class LoadCellCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - final int newlinePos = argString.indexOf('\n'); - if (newlinePos == -1 || at < newlinePos) { - // Cursor is on the first line, provide preference inspections. - return CommandUtils.inspectInPreferences(this.animationSelector.getCurrentTrace(), argString, at); - } else { - // Cursor is in the body, provide B inspections. - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); - } + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(ImmutableMap.of( + PREFS_PARAM, CommandUtils.preferencesInspector(this.animationSelector.getCurrentTrace()), + CODE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java b/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java index d8980f521b0b8e344a0760b1ad982935af1e8b27..123d0778629b4b23e6c63d1905c71c9c46e1ff46 100644 --- a/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java @@ -10,6 +10,7 @@ import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Provider; @@ -22,6 +23,7 @@ import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -110,12 +112,11 @@ public final class LoadFileCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectArgs( - argString, at, - (filename, at0) -> null, - CommandUtils.preferencesInspector(this.animationSelector.getCurrentTrace()) - ); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(ImmutableMap.of( + FILE_NAME_PARAM, (filename, at) -> null, + PREFS_PARAM, CommandUtils.preferencesInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java b/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java index 8c45b168e80d43c306b85abb001d0e4a9c49bef4..65e1d91d0f2d5a029a977cdefcd8c15f7bad8ef8 100644 --- a/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java @@ -16,6 +16,7 @@ import de.prob.check.StateSpaceStats; import de.prob.statespace.AnimationSelector; import de.prob.statespace.StateSpace; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -128,8 +129,8 @@ public final class ModelCheckCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/PrefCommand.java b/src/main/java/de/prob2/jupyter/commands/PrefCommand.java index 2baac286b0be4cad5e1f5a4466d3f2abed3fc126..da0fe8a0c3722d919377cbbf8eec1299f73c0a36 100644 --- a/src/main/java/de/prob2/jupyter/commands/PrefCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/PrefCommand.java @@ -15,6 +15,7 @@ import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.UserErrorException; @@ -110,8 +111,10 @@ public final class PrefCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInPreferences(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + PREFS_PARAM, CommandUtils.preferencesInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java b/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java index 752d0058d47cf37f4e568bb0c6dd6b8f7ff52efe..0cf7bbb3668c50c0095cf87d25d664bcdf24a607 100644 --- a/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java @@ -11,6 +11,7 @@ import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; @@ -18,7 +19,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class PrettyPrintCommand implements Command { private static final @NotNull Parameter.RequiredSingle PREDICATE_PARAM = Parameter.requiredRemainder("predicate"); @@ -75,8 +75,10 @@ public final class PrettyPrintCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + PREDICATE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/RenderCommand.java b/src/main/java/de/prob2/jupyter/commands/RenderCommand.java index cafd252f42c27c165a4f72c5259483c185b1e811..7e1d4484399ec1b60aad4f07bc79b5d2db2e3759 100644 --- a/src/main/java/de/prob2/jupyter/commands/RenderCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/RenderCommand.java @@ -6,6 +6,7 @@ import com.google.inject.Inject; import de.prob2.jupyter.Command; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; @@ -60,8 +61,8 @@ public final class RenderCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/ShowCommand.java b/src/main/java/de/prob2/jupyter/commands/ShowCommand.java index 84441d3612e742607cc4e30ef14f4f6eed8bd71c..9621989cb875b74105bfe0b529f7b91f3c17f83a 100644 --- a/src/main/java/de/prob2/jupyter/commands/ShowCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/ShowCommand.java @@ -16,6 +16,7 @@ import de.prob.animator.domainobjects.AnimationMatrixEntry; import de.prob.statespace.AnimationSelector; import de.prob.statespace.Trace; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -152,8 +153,8 @@ public final class ShowCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/SolveCommand.java b/src/main/java/de/prob2/jupyter/commands/SolveCommand.java index d8d3973ba9c77f0958b21899969e9110db832b35..3b29bc922580bd8cff545f8bf0039b68a555d4ae 100644 --- a/src/main/java/de/prob2/jupyter/commands/SolveCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/SolveCommand.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; import com.google.inject.Provider; @@ -16,6 +17,7 @@ import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -92,12 +94,11 @@ public final class SolveCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectArgs( - argString, at, - (solverName, at0) -> null, // TODO - CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) - ); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(ImmutableMap.of( + SOLVER_PARAM, (solverName, at) -> null, // TODO + PREDICATE_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/StatsCommand.java b/src/main/java/de/prob2/jupyter/commands/StatsCommand.java index 8c180dc3ebd6f9d74035aab0fd77827b6a5d2dd3..abe5917f948884b64b20bec2d3655fc7d70c2709 100644 --- a/src/main/java/de/prob2/jupyter/commands/StatsCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/StatsCommand.java @@ -6,6 +6,7 @@ import de.prob.animator.command.ComputeStateSpaceStatsCommand; import de.prob.check.StateSpaceStats; import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; @@ -81,8 +82,8 @@ public final class StatsCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/TableCommand.java b/src/main/java/de/prob2/jupyter/commands/TableCommand.java index 74553f1ff311a956cdebca27389c28c7e113994a..0e09bfa11fb7ffbb22b60b0d1309658819058ebe 100644 --- a/src/main/java/de/prob2/jupyter/commands/TableCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/TableCommand.java @@ -19,6 +19,7 @@ import de.prob.unicode.UnicodeTranslator; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -27,7 +28,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class TableCommand implements Command { private static final @NotNull Parameter.RequiredSingle EXPRESSION_PARAM = Parameter.requiredRemainder("expression"); @@ -111,8 +111,10 @@ public final class TableCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + EXPRESSION_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java index 844936bd5073437f76b521f3ffd66b7d7b54728c..0f653b2d769fa665c4727bae5c7d566a1c6d005c 100644 --- a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java @@ -10,6 +10,7 @@ import com.google.inject.Injector; import de.prob2.jupyter.Command; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -73,8 +74,10 @@ public final class TimeCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return this.injector.getInstance(ProBKernel.class).inspect(argString, at, false); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + COMMAND_AND_ARGS_PARAM, (argString, at) -> this.injector.getInstance(ProBKernel.class).inspect(argString, at, false) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/TraceCommand.java b/src/main/java/de/prob2/jupyter/commands/TraceCommand.java index b37af724e9cf22c59eb7ec66b28bd8558db21c93..6073818ea2d62d945a7ecde450a2943b5fd3141b 100644 --- a/src/main/java/de/prob2/jupyter/commands/TraceCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/TraceCommand.java @@ -8,6 +8,7 @@ import de.prob.statespace.AnimationSelector; import de.prob.statespace.Trace; import de.prob.statespace.Transition; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; @@ -89,8 +90,8 @@ public final class TraceCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/TypeCommand.java b/src/main/java/de/prob2/jupyter/commands/TypeCommand.java index 67ed0c3f05e5a2e6ba7452a5e8860c905c72dadd..61c18438baf79c5c8f8fe4453eec70d7c527348f 100644 --- a/src/main/java/de/prob2/jupyter/commands/TypeCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/TypeCommand.java @@ -14,6 +14,7 @@ import de.prob.statespace.Trace; import de.prob2.jupyter.Command; import de.prob2.jupyter.CommandUtils; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -22,7 +23,6 @@ import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class TypeCommand implements Command { private static final @NotNull Parameter.RequiredSingle FORMULA_PARAM = Parameter.requiredRemainder("formula"); @@ -77,8 +77,10 @@ public final class TypeCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at); + public @NotNull ParameterInspectors getParameterInspectors() { + return new ParameterInspectors(Collections.singletonMap( + FORMULA_PARAM, CommandUtils.bExpressionInspector(this.animationSelector.getCurrentTrace()) + )); } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/UnletCommand.java b/src/main/java/de/prob2/jupyter/commands/UnletCommand.java index c2bb02b109ba40fdad89348901491fe046cbf956..2d6960dba561fdfb97ebae9c99d6f6f7c9fdb741 100644 --- a/src/main/java/de/prob2/jupyter/commands/UnletCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/UnletCommand.java @@ -8,6 +8,7 @@ import com.google.inject.Injector; import de.prob2.jupyter.Command; import de.prob2.jupyter.Parameter; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -68,9 +69,9 @@ public final class UnletCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { + public @NotNull ParameterInspectors getParameterInspectors() { // TODO - return null; + return ParameterInspectors.NONE; } @Override diff --git a/src/main/java/de/prob2/jupyter/commands/VersionCommand.java b/src/main/java/de/prob2/jupyter/commands/VersionCommand.java index 8f6180e8dce88a5cfd817e34895b939eb851245b..147296df9ec5aa87039bed947d9a51bbfeec4343 100644 --- a/src/main/java/de/prob2/jupyter/commands/VersionCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/VersionCommand.java @@ -7,6 +7,7 @@ import de.prob.Main; import de.prob.animator.command.GetVersionCommand; import de.prob.statespace.AnimationSelector; import de.prob2.jupyter.Command; +import de.prob2.jupyter.ParameterInspectors; import de.prob2.jupyter.Parameters; import de.prob2.jupyter.ParsedArguments; import de.prob2.jupyter.ProBKernel; @@ -77,8 +78,8 @@ public final class VersionCommand implements Command { } @Override - public @Nullable DisplayData inspect(final @NotNull String argString, final int at) { - return null; + public @NotNull ParameterInspectors getParameterInspectors() { + return ParameterInspectors.NONE; } @Override