diff --git a/src/commands/CommandShutdown.java b/src/commands/CommandShutdown.java index 6a28ef4..06eabda 100644 --- a/src/commands/CommandShutdown.java +++ b/src/commands/CommandShutdown.java @@ -54,7 +54,7 @@ public class CommandShutdown extends Command } else { - res.CallImmediate(LocStrings.Stub("ShutdownUnsafe"));// "`Shutting down and immediately and abandoning all threads without sync.`"); + res.CallImmediate(LocStrings.Stub("ShutdownUnsafe"));// "``"); GlobalLog.Warn(LogFilter.Command, LocStrings.Lookup("ShutdownSafe")); System.exit(0); } diff --git a/src/commands/benchmark/BenchmarkCommandCompare.java b/src/commands/benchmark/BenchmarkCommandCompare.java new file mode 100644 index 0000000..e58c32e --- /dev/null +++ b/src/commands/benchmark/BenchmarkCommandCompare.java @@ -0,0 +1,43 @@ +package commands.benchmark; + +import java.util.List; + +import core.benchmark.BenchmarkCommand; +import core.benchmark.BenchmarkEntry; +import core.benchmark.BenchmarkInput; +import core.benchmark.BenchmarkManager; + +public class BenchmarkCommandCompare extends BenchmarkCommand +{ + public String OnRun(BenchmarkManager manager, BenchmarkInput input) + { + final String lineDelimiter = "\n"; + String output = ""; + String[] inputSplit = input.value.trim().split("\\s+"); + + if(inputSplit.length < 2) + return "You must to specify 2 models to compare!"; + + for(int i = 0; i < inputSplit.length; ++i) + { + if(i != 0) + output += lineDelimiter; + + List entries = manager.FindModel(inputSplit[i]); + + if(entries.size() < 1) + output += "Couldn't find any models containing `" + inputSplit[i] + "`!"; + + output += BenchmarkCommandInfo.FormatInfo(entries.get(0)); + output += lineDelimiter; + + if(entries.size() > 1) + output += "_chose " + entries.get(0).model + " from " + entries.size() + " potential components. To see others, try the command `benchmark find " + inputSplit[i] +"`_)"; + + output += lineDelimiter; + output += "----------"; + } + + return output; + } +} diff --git a/src/commands/benchmark/BenchmarkCommandFind.java b/src/commands/benchmark/BenchmarkCommandFind.java index 478d76f..fa3e000 100644 --- a/src/commands/benchmark/BenchmarkCommandFind.java +++ b/src/commands/benchmark/BenchmarkCommandFind.java @@ -6,7 +6,8 @@ import core.benchmark.*; public class BenchmarkCommandFind extends BenchmarkCommand { - final char lineDelimiter = '\n'; + private final char lineDelimiter = '\n'; + private final int listMax = 30; public String OnRun(BenchmarkManager manager, BenchmarkInput input) { @@ -19,7 +20,6 @@ public class BenchmarkCommandFind extends BenchmarkCommand { output += "```" + lineDelimiter; int max = entries.size(); - final int listMax = 30; boolean fencepost = true; for(int i = 0; i < entries.size() && i < listMax; ++i) @@ -33,7 +33,7 @@ public class BenchmarkCommandFind extends BenchmarkCommand } if(max > listMax) - output += "\n\nPlus " + (max - listMax) + " more items..."; + output += lineDelimiter + lineDelimiter + "Plus " + (max - listMax) + " more items..."; output += "```"; } diff --git a/src/commands/benchmark/BenchmarkCommandInfo.java b/src/commands/benchmark/BenchmarkCommandInfo.java new file mode 100644 index 0000000..a66898c --- /dev/null +++ b/src/commands/benchmark/BenchmarkCommandInfo.java @@ -0,0 +1,46 @@ +package commands.benchmark; + +import java.util.List; + +import core.benchmark.BenchmarkCommand; +import core.benchmark.BenchmarkEntry; +import core.benchmark.BenchmarkInput; +import core.benchmark.BenchmarkManager; + +public class BenchmarkCommandInfo extends BenchmarkCommand +{ + static final String lineDelimiter = "\n"; + + public static String FormatInfo(BenchmarkEntry entry) + { + String output = ""; + + output += "`" + entry.brand + " " + entry.model + "`" + lineDelimiter; + output += "<" + entry.url + ">"; + + return output; + } + + @Override + public String OnRun(BenchmarkManager manager, BenchmarkInput input) + { + String searchString = input.value.trim(); + + String output = ""; + output += lineDelimiter; + + List entries = manager.FindModel(searchString); + + if(entries.size() < 1) + output += "Couldn't find any models containing `" + searchString + "`!"; + + output += FormatInfo(entries.get(0)); + output += lineDelimiter; + + if(entries.size() > 1) + output += "_chose " + entries.get(0).model + " from " + entries.size() + " potential components. To see others, try the command `benchmark find " + searchString +"`_)"; + + return output; + } + +} diff --git a/src/core/LocStrings.java b/src/core/LocStrings.java index 2cee4ed..ad7ed5f 100644 --- a/src/core/LocStrings.java +++ b/src/core/LocStrings.java @@ -35,6 +35,12 @@ public class LocStrings extends LocBase public static String Stub(String toStub) { - return instance.GetKey(toStub); + return Lookup(toStub); + } + + // Won't be picked up when scraping + public static String Lookup(String stubbedPreviously) + { + return instance.GetKey(stubbedPreviously); } } \ No newline at end of file diff --git a/src/core/benchmark/BenchmarkFramework.java b/src/core/benchmark/BenchmarkFramework.java index a4a3012..c072767 100644 --- a/src/core/benchmark/BenchmarkFramework.java +++ b/src/core/benchmark/BenchmarkFramework.java @@ -17,6 +17,8 @@ public class BenchmarkFramework this.benchmarkCommand = new HashMap(); RegisterCommand("find", new BenchmarkCommandFind()); + RegisterCommand("compare", new BenchmarkCommandCompare()); + RegisterCommand("info", new BenchmarkCommandInfo()); } // Runs a command if possible. diff --git a/src/core/benchmark/BenchmarkInput.java b/src/core/benchmark/BenchmarkInput.java index 2469b2e..3e131ff 100644 --- a/src/core/benchmark/BenchmarkInput.java +++ b/src/core/benchmark/BenchmarkInput.java @@ -1,5 +1,7 @@ package core.benchmark; +import utils.StringUtils; + // Lifted from an early iteration of RPGInput public class BenchmarkInput { @@ -17,7 +19,7 @@ public class BenchmarkInput return; raw = raw.trim(); - int whitespacePos = FindFirstWhitespace(raw); + int whitespacePos = StringUtils.FindFirstWhitespace(raw); if(whitespacePos == -1) { @@ -29,16 +31,6 @@ public class BenchmarkInput value = raw.substring(whitespacePos).trim(); } - // Finds first whitespace in the string - private int FindFirstWhitespace(String str) - { - for (int i = 0; i < str.length(); ++i) - { - if (Character.isWhitespace(str.charAt(i))) - return i; - } - - return -1; - } + } diff --git a/src/core/rpg/RPGInput.java b/src/core/rpg/RPGInput.java index e3c3cec..64ec472 100644 --- a/src/core/rpg/RPGInput.java +++ b/src/core/rpg/RPGInput.java @@ -1,5 +1,7 @@ package core.rpg; +import utils.StringUtils; + public class RPGInput { public String raw; @@ -16,7 +18,7 @@ public class RPGInput return; raw = raw.trim(); - int whitespacePos = FindFirstWhitespace(raw); + int whitespacePos = StringUtils.FindFirstWhitespace(raw); if(whitespacePos == -1) { @@ -27,16 +29,4 @@ public class RPGInput key = raw.substring(0, whitespacePos).trim(); value = raw.substring(whitespacePos).trim(); } - - // Finds first whitespace in the string - private int FindFirstWhitespace(String str) - { - for (int i = 0; i < str.length(); ++i) - { - if (Character.isWhitespace(str.charAt(i))) - return i; - } - - return -1; - } } diff --git a/src/utils/StringUtils.java b/src/utils/StringUtils.java index 026b46d..5b490c4 100644 --- a/src/utils/StringUtils.java +++ b/src/utils/StringUtils.java @@ -26,4 +26,15 @@ public class StringUtils return str; } + // Finds first whitespace in the string + public static int FindFirstWhitespace(String str) + { + for (int i = 0; i < str.length(); ++i) + { + if (Character.isWhitespace(str.charAt(i))) + return i; + } + + return -1; + } }