Skip to content
Snippets Groups Projects
Commit 28932b05 authored by dgelessus's avatar dgelessus
Browse files

Allow returning null from Command.run

parent 13ed2586
No related branches found
No related tags found
No related merge requests found
...@@ -45,6 +45,7 @@ import io.github.spencerpark.jupyter.kernel.display.DisplayData; ...@@ -45,6 +45,7 @@ import io.github.spencerpark.jupyter.kernel.display.DisplayData;
import io.github.spencerpark.jupyter.kernel.display.mime.MIMEType; import io.github.spencerpark.jupyter.kernel.display.mime.MIMEType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -168,7 +169,7 @@ public final class ProBKernel extends BaseKernel { ...@@ -168,7 +169,7 @@ public final class ProBKernel extends BaseKernel {
return Collections.singletonList(new LanguageInfo.Help("ProB User Manual", "https://www3.hhu.de/stups/prob/index.php/User_Manual")); return Collections.singletonList(new LanguageInfo.Help("ProB User Manual", "https://www3.hhu.de/stups/prob/index.php/User_Manual"));
} }
private @NotNull DisplayData executeCommand(final @NotNull String name, final @NotNull String argString) { private @Nullable DisplayData executeCommand(final @NotNull String name, final @NotNull String argString) {
final Command command = this.getCommands().get(name); final Command command = this.getCommands().get(name);
if (command == null) { if (command == null) {
throw new NoSuchCommandException(name); throw new NoSuchCommandException(name);
...@@ -180,7 +181,7 @@ public final class ProBKernel extends BaseKernel { ...@@ -180,7 +181,7 @@ public final class ProBKernel extends BaseKernel {
throw new CommandExecutionException(name, e); throw new CommandExecutionException(name, e);
} }
if (result.hasDataForType(MARKDOWN_MIME_TYPE)) { if (result != null && result.hasDataForType(MARKDOWN_MIME_TYPE)) {
// Add definitions for any used bsymb LaTeX commands to Markdown output. // Add definitions for any used bsymb LaTeX commands to Markdown output.
final String markdown = (String)result.getData(MARKDOWN_MIME_TYPE); final String markdown = (String)result.getData(MARKDOWN_MIME_TYPE);
final StringBuilder defs = new StringBuilder(); final StringBuilder defs = new StringBuilder();
...@@ -197,7 +198,7 @@ public final class ProBKernel extends BaseKernel { ...@@ -197,7 +198,7 @@ public final class ProBKernel extends BaseKernel {
} }
@Override @Override
public @NotNull DisplayData eval(final String expr) { public @Nullable DisplayData eval(final String expr) {
assert expr != null; assert expr != null;
final Matcher commandMatcher = COMMAND_PATTERN.matcher(expr); final Matcher commandMatcher = COMMAND_PATTERN.matcher(expr);
......
...@@ -5,11 +5,12 @@ import de.prob2.jupyter.ProBKernel; ...@@ -5,11 +5,12 @@ import de.prob2.jupyter.ProBKernel;
import io.github.spencerpark.jupyter.kernel.display.DisplayData; import io.github.spencerpark.jupyter.kernel.display.DisplayData;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface Command { public interface Command {
public abstract @NotNull String getSyntax(); public abstract @NotNull String getSyntax();
public abstract @NotNull String getShortHelp(); public abstract @NotNull String getShortHelp();
public abstract @NotNull DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString); public abstract @Nullable DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString);
} }
...@@ -7,6 +7,7 @@ import de.prob2.jupyter.ProBKernel; ...@@ -7,6 +7,7 @@ import de.prob2.jupyter.ProBKernel;
import io.github.spencerpark.jupyter.kernel.display.DisplayData; import io.github.spencerpark.jupyter.kernel.display.DisplayData;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class TimeCommand implements Command { public final class TimeCommand implements Command {
private static final long NANOSECONDS_PER_SECOND = 1000000000L; private static final long NANOSECONDS_PER_SECOND = 1000000000L;
...@@ -27,7 +28,7 @@ public final class TimeCommand implements Command { ...@@ -27,7 +28,7 @@ public final class TimeCommand implements Command {
} }
@Override @Override
public @NotNull DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString) { public @Nullable DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString) {
final long startTime = System.nanoTime(); final long startTime = System.nanoTime();
final DisplayData result = kernel.eval(argString); final DisplayData result = kernel.eval(argString);
final long stopTime = System.nanoTime(); final long stopTime = System.nanoTime();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment