summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjculkin <bjculkin@mix.wvu.edu>2018-02-12 22:19:02 -0500
committerbjculkin <bjculkin@mix.wvu.edu>2018-02-12 22:19:02 -0500
commit32f5da54c628408c96db09d279f3a7ef44b3bd19 (patch)
treeef56d04518b8791409ed65db58c304b74b23a01b
parent49cd96c4c5bbb883c0c5c10d7916ad2e93ff2df0 (diff)
Update
-rw-r--r--base/src/main/java/bjc/utils/cli/CommandMode.java2
-rw-r--r--base/src/main/java/bjc/utils/cli/objects/BlockReaderCLI.java116
-rw-r--r--base/src/main/java/bjc/utils/cli/objects/Command.java40
-rw-r--r--base/src/main/java/bjc/utils/cli/objects/DefineCLI.java49
-rw-r--r--base/src/main/java/bjc/utils/components/ComponentDescription.java1
-rw-r--r--base/src/main/java/bjc/utils/data/Either.java12
-rw-r--r--base/src/main/java/bjc/utils/data/internals/BoundLazy.java1
-rw-r--r--base/src/main/java/bjc/utils/data/internals/BoundLazyPair.java1
-rw-r--r--base/src/main/java/bjc/utils/data/internals/BoundListHolder.java1
-rw-r--r--base/src/main/java/bjc/utils/esodata/AbbrevMap.java55
-rw-r--r--base/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java42
-rw-r--r--base/src/main/java/bjc/utils/ioutils/blocks/FilteredBlockReader.java14
-rw-r--r--base/src/main/java/bjc/utils/ioutils/format/CLModifiers.java33
-rw-r--r--base/src/main/java/bjc/utils/ioutils/format/Directive.java29
-rw-r--r--base/src/main/java/bjc/utils/ioutils/format/EscapeException.java18
-rw-r--r--base/src/main/java/bjc/utils/ioutils/format/IterationDirective.java2
-rw-r--r--base/src/main/java/bjc/utils/math/DualExpr.java84
-rw-r--r--base/src/main/java/bjc/utils/math/NumberUtils.java106
-rw-r--r--base/src/main/java/bjc/utils/parserutils/delims/DelimiterGroup.java6
19 files changed, 372 insertions, 240 deletions
diff --git a/base/src/main/java/bjc/utils/cli/CommandMode.java b/base/src/main/java/bjc/utils/cli/CommandMode.java
index 4107717..0415e27 100644
--- a/base/src/main/java/bjc/utils/cli/CommandMode.java
+++ b/base/src/main/java/bjc/utils/cli/CommandMode.java
@@ -19,7 +19,7 @@ public interface CommandMode extends Comparable<CommandMode> {
*/
default boolean canHandle(final String command) {
return false;
- };
+ }
/**
* Get the custom prompt for this mode.
diff --git a/base/src/main/java/bjc/utils/cli/objects/BlockReaderCLI.java b/base/src/main/java/bjc/utils/cli/objects/BlockReaderCLI.java
index 94ee726..ac62c80 100644
--- a/base/src/main/java/bjc/utils/cli/objects/BlockReaderCLI.java
+++ b/base/src/main/java/bjc/utils/cli/objects/BlockReaderCLI.java
@@ -35,20 +35,20 @@ public class BlockReaderCLI {
/**
* All of the configured block readers.
*/
- public final Map<String, BlockReader> readers;
+ public final Map<String, BlockReader> readers;
/**
* All of the configured I/O sources.
*/
- public final Map<String, Reader> sources;
+ public final Map<String, Reader> sources;
/**
* Create a new set of state for the block reader.
*
* @param readers
- * The set of configured block readers.
+ * The set of configured block readers.
*
* @param sources
- * The set of configured I/O sources.
+ * The set of configured I/O sources.
*/
public BlockReaderState(Map<String, BlockReader> readers, Map<String, Reader> sources) {
this.readers = readers;
@@ -63,7 +63,7 @@ public class BlockReaderCLI {
* Create a new CLI for configuring BlockReaders.
*
* @param srcs
- * The container of initial I/O sources.
+ * The container of initial I/O sources.
*/
public BlockReaderCLI(Map<String, Reader> srcs) {
stat = new BlockReaderState(new HashMap<>(), srcs);
@@ -73,7 +73,7 @@ public class BlockReaderCLI {
* Create a new CLI for configuring BlockReaders.
*
* @param state
- * The state object to use.
+ * The state object to use.
*/
public BlockReaderCLI(BlockReaderState state) {
stat = state;
@@ -84,12 +84,12 @@ public class BlockReaderCLI {
* Run the command line interface
*
* @param args
- * Ignored CLI args.
+ * Ignored CLI args.
*/
public static void main(String[] args) {
/* Create/configure I/O sources. */
Map<String, Reader> sources = new HashMap<>();
- BlockReaderCLI reader = new BlockReaderCLI(sources);
+ BlockReaderCLI reader = new BlockReaderCLI(sources);
sources.put("stdio", new InputStreamReader(System.in));
@@ -102,13 +102,13 @@ public class BlockReaderCLI {
* Run the CLI on an input source.
*
* @param input
- * The place to read input from.
+ * The place to read input from.
*
* @param ioSource
- * The name of the place to read input from.
+ * The name of the place to read input from.
*
* @param interactive
- * Whether or not the source is interactive
+ * Whether or not the source is interactive
*/
public void run(Scanner input, String ioSource, boolean interactive) {
int lno = 0;
@@ -128,9 +128,9 @@ public class BlockReaderCLI {
if(com == null) continue;
/* Handle a command. */
- CommandStatus stat = handleCommand(com, interactive);
+ CommandStatus stt = handleCommand(com, interactive);
/* Exit if we finished or encountered a fatal error. */
- if(stat == FINISH || stat == ERROR) {
+ if(stt == FINISH || stt == ERROR) {
return;
}
@@ -146,36 +146,36 @@ public class BlockReaderCLI {
* Handle a command.
*
* @param com
- * The command to handle
+ * The command to handle
*
* @param interactive
- * Whether the current input source is interactive or not.
+ * Whether the current input source is interactive or not.
+ * @return The status of the executed command.
*/
public CommandStatus handleCommand(Command com, boolean interactive) {
switch(com.nameCommand) {
- case "def-filtered":
- return defFiltered(com);
- case "def-layered":
- return defLayered(com);
- case "def-pushback":
- return defPushback(com);
- case "def-simple":
- return defSimple(com);
- case "def-serial":
- return defSerial(com);
- case "def-toggled":
- return defToggled(com);
- case "}":
- case "end":
- case "exit":
- case "quit":
- if(interactive)
- System.out.printf("Exiting reader-conf, %d readers configured in %d commands\n",
- stat.readers.size(), com.lineNo);
- return FINISH;
- default:
- LOGGER.severe(com.error("Unknown command '%s'\n", com.nameCommand));
- return FAIL;
+ case "def-filtered":
+ return defFiltered(com);
+ case "def-layered":
+ return defLayered(com);
+ case "def-pushback":
+ return defPushback(com);
+ case "def-simple":
+ return defSimple(com);
+ case "def-serial":
+ return defSerial(com);
+ case "def-toggled":
+ return defToggled(com);
+ case "}":
+ case "end":
+ case "exit":
+ case "quit":
+ if(interactive) System.out.printf("Exiting reader-conf, %d readers configured in %d commands\n",
+ stat.readers.size(), com.lineNo);
+ return FINISH;
+ default:
+ LOGGER.severe(com.error("Unknown command '%s'\n", com.nameCommand));
+ return FAIL;
}
}
@@ -191,7 +191,7 @@ public class BlockReaderCLI {
return FAIL;
}
String blockName = remn.substring(0, idx).trim();
- remn = remn.substring(idx).trim();
+ remn = remn.substring(idx).trim();
/*
* Check there isn't a reader already bound to this name.
@@ -205,11 +205,11 @@ public class BlockReaderCLI {
*/
idx = remn.indexOf(' ');
if(idx == -1) {
- LOGGER.severe(com.error("No reader-name argument for def-filtered.\n"));
+ LOGGER.severe(com.error("No reader-name argument for def-filtered.\n"));
return FAIL;
}
String readerName = remn.substring(0, idx).trim();
- remn = remn.substring(idx).trim();
+ remn = remn.substring(idx).trim();
/*
* Check there is a reader bound to that name.
@@ -238,22 +238,26 @@ public class BlockReaderCLI {
return mat.matches();
};
+ @SuppressWarnings("resource")
BlockReader reader = new FilteredBlockReader(stat.readers.get(readerName), pred);
stat.readers.put(blockName, reader);
- } catch (PatternSyntaxException psex) {
- LOGGER.severe(com.error("Invalid regular expression '%s' for filter. (%s)\n", filter, psex.getMessage()));
+ } catch(PatternSyntaxException psex) {
+ LOGGER.severe(com.error("Invalid regular expression '%s' for filter. (%s)\n", filter,
+ psex.getMessage()));
return FAIL;
}
return SUCCESS;
}
+ @SuppressWarnings("resource")
private CommandStatus defPushback(Command com) {
String[] parts = com.remnCommand.split(" ");
if(parts.length != 2) {
- LOGGER.severe(com.error("Incorrect number of arguments to def-pushback. Requires a block name and a reader name\n"));
+ LOGGER.severe(com.error(
+ "Incorrect number of arguments to def-pushback. Requires a block name and a reader name\n"));
return FAIL;
}
@@ -275,11 +279,13 @@ public class BlockReaderCLI {
return SUCCESS;
}
+ @SuppressWarnings("resource")
private CommandStatus defToggled(Command com) {
String[] parts = com.remnCommand.split(" ");
if(parts.length != 3) {
- LOGGER.severe(com.error("Incorrect number of arguments to def-toggled. Requires a block name and two reader names\n"));
+ LOGGER.severe(com.error(
+ "Incorrect number of arguments to def-toggled. Requires a block name and two reader names\n"));
return FAIL;
}
@@ -310,11 +316,13 @@ public class BlockReaderCLI {
return SUCCESS;
}
+ @SuppressWarnings("resource")
private CommandStatus defLayered(Command com) {
String[] parts = com.remnCommand.split(" ");
if(parts.length != 3) {
- LOGGER.severe(com.error("Incorrect number of arguments to def-layered. Requires a block name and two reader names\n"));
+ LOGGER.severe(com.error(
+ "Incorrect number of arguments to def-layered. Requires a block name and two reader names\n"));
return FAIL;
}
@@ -345,11 +353,13 @@ public class BlockReaderCLI {
return SUCCESS;
}
+ @SuppressWarnings("resource")
private CommandStatus defSerial(Command com) {
String[] parts = com.remnCommand.split(" ");
if(parts.length < 2) {
- LOGGER.severe(com.error("Not enough arguments to def-serial. Requires at least a block name and at least one reader name\n"));
+ LOGGER.severe(com.error(
+ "Not enough arguments to def-serial. Requires at least a block name and at least one reader name\n"));
return FAIL;
}
@@ -401,7 +411,7 @@ public class BlockReaderCLI {
return FAIL;
}
String blockName = remn.substring(0, idx).trim();
- remn = remn.substring(idx).trim();
+ remn = remn.substring(idx).trim();
/*
* Check there isn't a reader already bound to this name.
@@ -415,11 +425,11 @@ public class BlockReaderCLI {
*/
idx = remn.indexOf(' ');
if(idx == -1) {
- LOGGER.severe(com.error("No source-name argument for def-simple.\n"));
+ LOGGER.severe(com.error("No source-name argument for def-simple.\n"));
return FAIL;
}
String sourceName = remn.substring(0, idx).trim();
- remn = remn.substring(idx).trim();
+ remn = remn.substring(idx).trim();
/*
* Check there is a source bound to that name.
@@ -440,11 +450,13 @@ public class BlockReaderCLI {
String delim = remn;
try {
+ @SuppressWarnings("resource")
BlockReader reader = new SimpleBlockReader(delim, stat.sources.get(sourceName));
stat.readers.put(blockName, reader);
- } catch (PatternSyntaxException psex) {
- LOGGER.severe(com.error("Invalid regular expression '%s' for delimiter. (%s)\n", delim, psex.getMessage()));
+ } catch(PatternSyntaxException psex) {
+ LOGGER.severe(com.error("Invalid regular expression '%s' for delimiter. (%s)\n", delim,
+ psex.getMessage()));
return FAIL;
}
diff --git a/base/src/main/java/bjc/utils/cli/objects/Command.java b/base/src/main/java/bjc/utils/cli/objects/Command.java
index 3a7d452..04cdfd9 100644
--- a/base/src/main/java/bjc/utils/cli/objects/Command.java
+++ b/base/src/main/java/bjc/utils/cli/objects/Command.java
@@ -38,15 +38,15 @@ public class Command {
/**
* The full text of this command.
*/
- public final String fullCommand;
+ public final String fullCommand;
/**
* The text of this command without its name.
*/
- public final String remnCommand;
+ public final String remnCommand;
/**
* The name of this command.
*/
- public final String nameCommand;
+ public final String nameCommand;
/**
* The name of the I/O source this command was read from.
@@ -57,13 +57,13 @@ public class Command {
* Create a new command.
*
* @param ln
- * The string to get the command from.
+ * The string to get the command from.
*
* @param lno
- * The number of the line the command came from.
+ * The number of the line the command came from.
*
* @param ioSrc
- * The name of where the I/O came from.
+ * The name of where the I/O came from.
*/
public Command(String ln, int lno, String ioSrc) {
int idx = ln.indexOf(' ');
@@ -87,17 +87,18 @@ public class Command {
* through the line.
*
* @param ln
- * The string to get the command from.
+ * The string to get the command from.
*
* @param lno
- * The line number of the command.
+ * The line number of the command.
*
* @param ioSource
- * The name of where the I/O came from.
+ * The name of where the I/O came from.
+ * @return The parsed command
*/
public static Command fromString(String ln, int lno, String ioSource) {
/* Ignore blank lines and comments. */
- if(ln.equals("")) return null;
+ if(ln.equals("")) return null;
if(ln.startsWith("#")) return null;
/* Trim off comments part-way through the line. */
@@ -114,10 +115,11 @@ public class Command {
* command.
*
* @param info
- * The informational message.
+ * The informational message.
*
* @param parms
- * The parameters for the informational message.
+ * The parameters for the informational message.
+ * @return The information message.
*/
public String info(String info, Object... parms) {
String msg = String.format(info, parms);
@@ -129,10 +131,12 @@ public class Command {
* Warn about something in relation to this command.
*
* @param warning
- * The warning message.
+ * The warning message.
*
* @param parms
- * The parameters for the warning message.
+ * The parameters for the warning message.
+ *
+ * @return The formatted warning.
*/
public String warn(String warning, Object... parms) {
String msg = String.format(warning, parms);
@@ -143,11 +147,13 @@ public class Command {
/**
* Give an error about something in relation to this command.
*
- * @param error
- * The error message.
+ * @param err
+ * The error message.
*
* @param parms
- * The parameters for the error message.
+ * The parameters for the error message.
+ *
+ * @return The formatted error
*/
public String error(String err, Object... parms) {
String msg = String.format(err, parms);
diff --git a/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java b/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java
index 280afd0..aa9bcf3 100644
--- a/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java
+++ b/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java
@@ -23,11 +23,11 @@ import static bjc.utils.cli.objects.Command.CommandStatus.*;
public class DefineCLI {
private final Logger LOGGER = Logger.getLogger(DefineCLI.class.getName());
- public static class DefineState {
+ static class DefineState {
public final Map<String, UnaryOperator<String>> defines;
- public final Map<String, String> strings;
- public final Map<String, String> formats;
+ public final Map<String, String> strings;
+ public final Map<String, String> formats;
public final Map<String, Pattern> patterns;
@@ -48,14 +48,23 @@ public class DefineCLI {
private DefineState stat;
+ /**
+ * Create a new Define CLI
+ */
public DefineCLI() {
stat = new DefineState();
}
+ /**
+ * Main method
+ *
+ * @param args
+ * CLI args
+ */
public static void main(String[] args) {
DefineCLI defin = new DefineCLI();
- try (Scanner scn = new Scanner(System.in)) {
+ try(Scanner scn = new Scanner(System.in)) {
defin.run(scn, "console", true);
}
}
@@ -64,25 +73,23 @@ public class DefineCLI {
* Run the CLI on an input source.
*
* @param input
- * The place to read input from.
+ * The place to read input from.
* @param ioSource
- * The name of the place to read input from.
+ * The name of the place to read input from.
* @param interactive
- * Whether or not the source is interactive
+ * Whether or not the source is interactive
*/
public void run(Scanner input, String ioSource, boolean interactive) {
int lno = 0;
- while (input.hasNextLine()) {
- if (interactive)
- System.out.printf("define-conf(%d)>", lno);
+ while(input.hasNextLine()) {
+ if(interactive) System.out.printf("define-conf(%d)>", lno);
String ln = input.nextLine();
lno += 1;
Command com = Command.fromString(ln, lno, ioSource);
- if (com == null)
- continue;
+ if(com == null) continue;
handleCommand(com, interactive);
}
@@ -90,8 +97,16 @@ public class DefineCLI {
input.close();
}
+ /**
+ * Handle a command
+ *
+ * @param com
+ * The command to handle
+ * @param interactive
+ * Whether or not our I/O stream is interactive
+ */
public void handleCommand(Command com, boolean interactive) {
- switch (com.nameCommand) {
+ switch(com.nameCommand) {
case "def-string":
default:
LOGGER.severe(com.error("Unknown command %s\n", com.nameCommand));
@@ -103,14 +118,14 @@ public class DefineCLI {
String remn = com.remnCommand;
int idx = remn.indexOf(' ');
- if (idx == -1) {
+ if(idx == -1) {
LOGGER.warning(com.warn("Binding empty string to name '%s'\n", remn));
idx = remn.length();
}
String name = remn.substring(0, idx);
String strang = remn.substring(idx);
- if (stat.strings.containsKey(name)) {
+ if(stat.strings.containsKey(name)) {
LOGGER.warning(com.warn("Shadowing string '%s'\n", name));
}
@@ -123,14 +138,14 @@ public class DefineCLI {
String remn = com.remnCommand;
int idx = remn.indexOf(' ');
- if (idx == -1) {
+ if(idx == -1) {
LOGGER.warning(com.warn("Binding empty format to name '%s'\n", remn));
idx = remn.length();
}
String name = remn.substring(0, idx);
String fmt = remn.substring(idx);
- if (stat.formats.containsKey(name)) {
+ if(stat.formats.containsKey(name)) {
LOGGER.warning(com.warn("Shadowing format '%s'\n", name));
}
diff --git a/base/src/main/java/bjc/utils/components/ComponentDescription.java b/base/src/main/java/bjc/utils/components/ComponentDescription.java
index 8d44855..4f52ace 100644
--- a/base/src/main/java/bjc/utils/components/ComponentDescription.java
+++ b/base/src/main/java/bjc/utils/components/ComponentDescription.java
@@ -7,6 +7,7 @@ package bjc.utils.components;
*/
public class ComponentDescription implements IDescribedComponent {
/* Check arguments are good. */
+ @SuppressWarnings("unused")
private static void sanityCheckArgs(final String name, final String author, final String description,
final int version) {
if (name == null) {
diff --git a/base/src/main/java/bjc/utils/data/Either.java b/base/src/main/java/bjc/utils/data/Either.java
index 2b64feb..20a06f5 100644
--- a/base/src/main/java/bjc/utils/data/Either.java
+++ b/base/src/main/java/bjc/utils/data/Either.java
@@ -119,13 +119,13 @@ public class Either<LeftType, RightType> implements IPair<LeftType, RightType> {
return new Either<>(cLeft, null);
});
- } else {
- return otherPair.bind((otherLeft, otherRight) -> {
- CombinedRight cRight = rightCombiner.apply(rightVal, otherRight);
-
- return new Either<>(null, cRight);
- });
}
+
+ return otherPair.bind((otherLeft, otherRight) -> {
+ CombinedRight cRight = rightCombiner.apply(rightVal, otherRight);
+
+ return new Either<>(null, cRight);
+ });
}
@Override
diff --git a/base/src/main/java/bjc/utils/data/internals/BoundLazy.java b/base/src/main/java/bjc/utils/data/internals/BoundLazy.java
index b160c0c..a1c2ea0 100644
--- a/base/src/main/java/bjc/utils/data/internals/BoundLazy.java
+++ b/base/src/main/java/bjc/utils/data/internals/BoundLazy.java
@@ -14,6 +14,7 @@ import bjc.utils.funcdata.IList;
*
* @author Ben Culkin
*/
+@SuppressWarnings("javadoc")
public class BoundLazy<OldType, BoundContainedType> implements IHolder<BoundContainedType> {
/* The old value. */
private final Supplier<IHolder<OldType>> oldSupplier;
diff --git a/base/src/main/java/bjc/utils/data/internals/BoundLazyPair.java b/base/src/main/java/bjc/utils/data/internals/BoundLazyPair.java
index df2f0d8..401f5d5 100644
--- a/base/src/main/java/bjc/utils/data/internals/BoundLazyPair.java
+++ b/base/src/main/java/bjc/utils/data/internals/BoundLazyPair.java
@@ -14,6 +14,7 @@ import bjc.utils.data.LazyPair;
*
* @author Ben Culkin
*/
+@SuppressWarnings("javadoc")
public class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> implements IPair<NewLeft, NewRight> {
/* The supplier of the left value. */
private final Supplier<OldLeft> leftSupplier;
diff --git a/base/src/main/java/bjc/utils/data/internals/BoundListHolder.java b/base/src/main/java/bjc/utils/data/internals/BoundListHolder.java
index 8f9e87f..31178da 100644
--- a/base/src/main/java/bjc/utils/data/internals/BoundListHolder.java
+++ b/base/src/main/java/bjc/utils/data/internals/BoundListHolder.java
@@ -12,6 +12,7 @@ import bjc.utils.funcdata.IList;
*
* @author Ben Culkin
*/
+@SuppressWarnings("javadoc")
public class BoundListHolder<ContainedType> implements IHolder<ContainedType> {
/* The list of contained holders. */
private final IList<IHolder<ContainedType>> heldHolders;
diff --git a/base/src/main/java/bjc/utils/esodata/AbbrevMap.java b/base/src/main/java/bjc/utils/esodata/AbbrevMap.java
index 5aa44fc..64f542a 100644
--- a/base/src/main/java/bjc/utils/esodata/AbbrevMap.java
+++ b/base/src/main/java/bjc/utils/esodata/AbbrevMap.java
@@ -35,7 +35,7 @@ public class AbbrevMap {
* Create a new abbreviation map.
*
* @param words
- * The initial set of words to put in the map.
+ * The initial set of words to put in the map.
*/
public AbbrevMap(final String... words) {
wrds = new HashSet<>(Arrays.asList(words));
@@ -56,7 +56,7 @@ public class AbbrevMap {
seen = new HashSet<>();
- for (final String word : wrds) {
+ for(final String word : wrds) {
intAddWord(word);
}
}
@@ -65,12 +65,12 @@ public class AbbrevMap {
* Adds words to the abbreviation map.
*
* @param words
- * The words to add to the abbreviation map.
+ * The words to add to the abbreviation map.
*/
public void addWords(final String... words) {
wrds.addAll(Arrays.asList(words));
- for (final String word : words) {
+ for(final String word : words) {
intAddWord(word);
}
}
@@ -81,23 +81,23 @@ public class AbbrevMap {
abbrevMap.put(word, word);
/* Skip blank words. */
- if (word.equals("")) return;
+ if(word.equals("")) return;
/* Handle each possible abbreviation. */
- for (int i = word.length(); i > 0; i--) {
+ for(int i = word.length(); i > 0; i--) {
final String subword = word.substring(0, i);
- if (seen.contains(subword)) {
+ if(seen.contains(subword)) {
/*
* Remove a mapping if its ambiguous and not a
* whole word.
*/
- if (abbrevMap.containsKey(subword) && !wrds.contains(subword)) {
+ if(abbrevMap.containsKey(subword) && !wrds.contains(subword)) {
final String oldword = abbrevMap.remove(subword);
ambMap.put(subword, oldword);
ambMap.put(subword, word);
- } else if (!wrds.contains(subword)) {
+ } else if(!wrds.contains(subword)) {
ambMap.put(subword, word);
}
} else {
@@ -115,12 +115,12 @@ public class AbbrevMap {
* the map. Use {@link AbbrevMap#recalculate()} to fix it if it occurs.
*
* @param words
- * The words to remove.
+ * The words to remove.
*/
public void removeWords(final String... words) {
wrds.removeAll(Arrays.asList(words));
- for (final String word : words) {
+ for(final String word : words) {
intRemoveWord(word);
}
}
@@ -128,22 +128,22 @@ public class AbbrevMap {
/* Actually remove a word. */
private void intRemoveWord(final String word) {
/* Skip blank words. */
- if (word.equals("")) return;
+ if(word.equals("")) return;
/* Handle each possible abbreviation. */
- for (int i = word.length(); i > 0; i--) {
+ for(int i = word.length(); i > 0; i--) {
final String subword = word.substring(0, i);
- if (abbrevMap.containsKey(subword)) {
+ if(abbrevMap.containsKey(subword)) {
abbrevMap.remove(subword);
} else {
ambMap.remove(subword, word);
final Set<String> possWords = ambMap.get(subword);
- if (possWords.size() == 0) {
+ if(possWords.size() == 0) {
seen.remove(subword);
- } else if (possWords.size() == 1) {
+ } else if(possWords.size() == 1) {
/*
* An abbreviation went from ambiguous
* to non-ambiguous.
@@ -162,17 +162,16 @@ public class AbbrevMap {
* into.
*
* @param abbrev
- * The abbreviation to convert.
+ * The abbreviation to convert.
*
- * @return
- * All the expansions for the provided abbreviation.
+ * @return All the expansions for the provided abbreviation.
*/
public String[] deabbrev(final String abbrev) {
- if (abbrevMap.containsKey(abbrev)) {
+ if(abbrevMap.containsKey(abbrev)) {
return new String[] { abbrevMap.get(abbrev) };
- } else {
- return ambMap.get(abbrev).toArray(new String[0]);
}
+
+ return ambMap.get(abbrev).toArray(new String[0]);
}
@Override
@@ -187,15 +186,15 @@ public class AbbrevMap {
@Override
public boolean equals(final Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (!(obj instanceof AbbrevMap)) return false;
+ if(this == obj) return true;
+ if(obj == null) return false;
+ if(!(obj instanceof AbbrevMap)) return false;
final AbbrevMap other = (AbbrevMap) obj;
- if (wrds == null) {
- if (other.wrds != null) return false;
- } else if (!wrds.equals(other.wrds)) return false;
+ if(wrds == null) {
+ if(other.wrds != null) return false;
+ } else if(!wrds.equals(other.wrds)) return false;
return true;
}
diff --git a/base/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java b/base/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java
index b1e82d7..36e0ac1 100644
--- a/base/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java
+++ b/base/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java
@@ -5,24 +5,52 @@ import java.io.IOException;
import java.util.function.BooleanSupplier;
import java.util.function.Supplier;
+/**
+ * A block reader composed from functions.
+ *
+ * @author EVE
+ *
+ */
public class BoundBlockReader implements BlockReader {
+ /**
+ * A function that serves to close an I/O source.
+ *
+ * @author EVE
+ *
+ */
@FunctionalInterface
public interface Closer {
+ /**
+ * Close the I/O source this is attached to.
+ *
+ * @throws IOException
+ * If something goes wrong
+ */
public void close() throws IOException;
}
- private BooleanSupplier checker;
- private Supplier<Block> getter;
- private Closer closer;
+ private BooleanSupplier checker;
+ private Supplier<Block> getter;
+ private Closer closer;
private Block current;
private int blockNo;
+ /**
+ * Create a new bound block reader.
+ *
+ * @param blockChecker
+ * Predicate for checking if a block is available
+ * @param blockGetter
+ * Function to retrieve a block
+ * @param blockCloser
+ * Function to close a block source
+ */
public BoundBlockReader(BooleanSupplier blockChecker, Supplier<Block> blockGetter, Closer blockCloser) {
checker = blockChecker;
- getter = blockGetter;
- closer = blockCloser;
+ getter = blockGetter;
+ closer = blockCloser;
blockNo = 0;
}
@@ -40,11 +68,11 @@ public class BoundBlockReader implements BlockReader {
@Override
public boolean nextBlock() {
if(checker.getAsBoolean()) {
- current = getter.get();
+ current = getter.get();
blockNo += 1;
return true;
- }
+ }
return false;
}
diff --git a/base/src/main/java/bjc/utils/ioutils/blocks/FilteredBlockReader.java b/base/src/main/java/bjc/utils/ioutils/blocks/FilteredBlockReader.java
index 0b43f7a..c575f05 100644
--- a/base/src/main/java/bjc/utils/ioutils/blocks/FilteredBlockReader.java
+++ b/base/src/main/java/bjc/utils/ioutils/blocks/FilteredBlockReader.java
@@ -16,8 +16,8 @@ public class FilteredBlockReader implements BlockReader {
*
* Both have already been checked for the predicate.
*/
- private Block current;
- private Block pending;
+ private Block current;
+ private Block pending;
/*
* Number of blocks that passed the predicate.
@@ -39,8 +39,8 @@ public class FilteredBlockReader implements BlockReader {
}
public FilteredBlockReader(BlockReader src, Predicate<Block> predic, Consumer<Block> failAct) {
- source = src;
- pred = predic;
+ source = src;
+ pred = predic;
failAction = failAct;
blockNo = 0;
@@ -60,11 +60,11 @@ public class FilteredBlockReader implements BlockReader {
if(pred.test(pending)) {
blockNo += 1;
return true;
- } else {
- failAction.accept(pending);
}
+
+ failAction.accept(pending);
}
-
+
return false;
}
diff --git a/base/src/main/java/bjc/utils/ioutils/format/CLModifiers.java b/base/src/main/java/bjc/utils/ioutils/format/CLModifiers.java
index a695f2f..a535697 100644
--- a/base/src/main/java/bjc/utils/ioutils/format/CLModifiers.java
+++ b/base/src/main/java/bjc/utils/ioutils/format/CLModifiers.java
@@ -1,18 +1,45 @@
package bjc.utils.ioutils.format;
+/**
+ * A collection of the modifiers attached to a CL format directive.
+ *
+ * @author EVE
+ *
+ */
public class CLModifiers {
- public final boolean atMod;
- public final boolean colonMod;
+ /**
+ * Whether the at mod is on.
+ */
+ public final boolean atMod;
+ /**
+ * Whether the colon mod is on.
+ */
+ public final boolean colonMod;
+ /**
+ * Create a new set of CL modifiers.
+ *
+ * @param at
+ * The state of the at mod.
+ * @param colon
+ * The state of the colon mod.
+ */
public CLModifiers(boolean at, boolean colon) {
atMod = at;
colonMod = colon;
}
+ /**
+ * Create a set of modifiers from a modifier string.
+ *
+ * @param modString
+ * The string to parse modifiers from.
+ * @return A set of modifiers matching the string.
+ */
public static CLModifiers fromString(String modString) {
boolean atMod = false;
boolean colonMod = false;
- if (modString != null) {
+ if(modString != null) {
atMod = modString.contains("@");
colonMod = modString.contains(":");
}
diff --git a/base/src/main/java/bjc/utils/ioutils/format/Directive.java b/base/src/main/java/bjc/utils/ioutils/format/Directive.java
index 0b1e889..fb03bbc 100644
--- a/base/src/main/java/bjc/utils/ioutils/format/Directive.java
+++ b/base/src/main/java/bjc/utils/ioutils/format/Directive.java
@@ -4,11 +4,32 @@ import java.util.regex.Matcher;
import bjc.utils.esodata.Tape;
+/**
+ * A CL format directive.
+ *
+ * @author EVE
+ *
+ */
@FunctionalInterface
public interface Directive {
- /*
- * @TODO fill in parameters
+ /**
+ * Execute this format directive.
+ *
+ * @param sb
+ * The buffer the string is being output to.
+ * @param item
+ * The current parameter being passed
+ * @param mods
+ * The directive modifiers
+ * @param arrParams
+ * The prefix parameters to the directive
+ * @param tParams
+ * All of the provided format parameters
+ * @param dirMatcher
+ * The matcher for format directives
+ * @param fmt
+ * The formatter itself.
*/
- public void format(StringBuffer sb, Object item, CLModifiers mods,
- CLParameters arrParams, Tape<Object> tParams, Matcher dirMatcher, CLFormatter fmt);
+ public void format(StringBuffer sb, Object item, CLModifiers mods, CLParameters arrParams, Tape<Object> tParams,
+ Matcher dirMatcher, CLFormatter fmt);
} \ No newline at end of file
diff --git a/base/src/main/java/bjc/utils/ioutils/format/EscapeException.java b/base/src/main/java/bjc/utils/ioutils/format/EscapeException.java
index a1df55a..086f1cd 100644
--- a/base/src/main/java/bjc/utils/ioutils/format/EscapeException.java
+++ b/base/src/main/java/bjc/utils/ioutils/format/EscapeException.java
@@ -1,14 +1,32 @@
package bjc.utils.ioutils.format;
+/**
+ * An exception thrown to escape CL iteration directives.
+ *
+ * @author EVE
+ *
+ */
public class EscapeException extends RuntimeException {
private static final long serialVersionUID = -4552821131068559005L;
+ /**
+ * Whether or not this exception should end iteration.
+ */
public final boolean endIteration;
+ /**
+ * Create a new escape exception.
+ */
public EscapeException() {
endIteration = false;
}
+ /**
+ * Create a new escape exception.
+ *
+ * @param end
+ * Whether or not to end the iteration.
+ */
public EscapeException(boolean end) {
endIteration = end;
}
diff --git a/base/src/main/java/bjc/utils/ioutils/format/IterationDirective.java b/base/src/main/java/bjc/utils/ioutils/format/IterationDirective.java
index 353ff94..e13cb1c 100644
--- a/base/src/main/java/bjc/utils/ioutils/format/IterationDirective.java
+++ b/base/src/main/java/bjc/utils/ioutils/format/IterationDirective.java
@@ -2,9 +2,7 @@ package bjc.utils.ioutils.format;
import bjc.utils.esodata.Tape;
-import java.util.ArrayList;
import java.util.IllegalFormatConversionException;
-import java.util.List;
import java.util.regex.Matcher;
class IterationDirective implements Directive {
diff --git a/base/src/main/java/bjc/utils/math/DualExpr.java b/base/src/main/java/bjc/utils/math/DualExpr.java
index d0e9acf..8c73f34 100644
--- a/base/src/main/java/bjc/utils/math/DualExpr.java
+++ b/base/src/main/java/bjc/utils/math/DualExpr.java
@@ -1,4 +1,5 @@
package bjc.utils.math;
+
/**
* Represents an expression using dual numbers.
*
@@ -68,11 +69,11 @@ public class DualExpr {
/**
* The left (or first) part of the expression.
*/
- public DualExpr left;
+ public DualExpr left;
/**
* The right (or second) part of the expression.
*/
- public DualExpr right;
+ public DualExpr right;
/**
* The power to use, for power operations.
@@ -83,7 +84,7 @@ public class DualExpr {
* Create a new constant dual number.
*
* @param num
- * The value of the dual number.
+ * The value of the dual number.
*/
public DualExpr(Dual num) {
this.type = ExprType.CONSTANT;
@@ -95,9 +96,9 @@ public class DualExpr {
* Create a new unary dual number.
*
* @param type
- * The type of operation to perform.
+ * The type of operation to perform.
* @param val
- * The parameter to the value.
+ * The parameter to the value.
*/
public DualExpr(DualExpr.ExprType type, DualExpr val) {
this.type = type;
@@ -109,9 +110,11 @@ public class DualExpr {
* Create a new binary dual number.
*
* @param type
- * The type of operation to perform.
- * @param val
- * The parameter to the value.
+ * The type of operation to perform.
+ * @param left
+ * The left hand side of the expression.
+ * @param right
+ * The right hand side of the expression.
*/
public DualExpr(DualExpr.ExprType type, DualExpr left, DualExpr right) {
this.type = type;
@@ -124,9 +127,9 @@ public class DualExpr {
* Create a new power expression.
*
* @param left
- * The expression to raise.
+ * The expression to raise.
* @param power
- * The power to raise it by.
+ * The power to raise it by.
*/
public DualExpr(DualExpr left, int power) {
this.type = ExprType.POWER;
@@ -148,7 +151,7 @@ public class DualExpr {
Dual lval, rval;
/* Perform the right operation for each type. */
- switch (type) {
+ switch(type) {
case CONSTANT:
return number;
case ADDITION:
@@ -176,7 +179,7 @@ public class DualExpr {
rval = right.evaluate();
{
- if (rval.real == 0) {
+ if(rval.real == 0) {
throw new IllegalArgumentException("ERROR: Attempted to divide by zero.");
}
@@ -206,16 +209,15 @@ public class DualExpr {
case LOGARITHM:
lval = left.evaluate();
- if (lval.real <= 0) {
- throw new IllegalArgumentException(
- "ERROR: Attempted to take non-positive log.");
+ if(lval.real <= 0) {
+ throw new IllegalArgumentException("ERROR: Attempted to take non-positive log.");
}
return new Dual(Math.log(lval.real), lval.dual / lval.real);
case POWER:
lval = left.evaluate();
- if (lval.real == 0) {
+ if(lval.real == 0) {
throw new IllegalArgumentException("ERROR: Raising zero to a power.");
}
@@ -239,7 +241,7 @@ public class DualExpr {
@Override
public String toString() {
- switch (type) {
+ switch(type) {
case ABSOLUTE:
return String.format("abs(%s)", left.toString());
case ADDITION:
@@ -271,58 +273,54 @@ public class DualExpr {
public int hashCode() {
final int prime = 31;
int result = 1;
-
+
result = prime * result + ((left == null) ? 0 : left.hashCode());
result = prime * result + ((number == null) ? 0 : number.hashCode());
result = prime * result + power;
result = prime * result + ((right == null) ? 0 : right.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
-
+
return result;
}
@Override
public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
-
+ if(this == obj) return true;
+ if(obj == null) return false;
+ if(getClass() != obj.getClass()) return false;
+
DualExpr other = (DualExpr) obj;
- if (type != other.type) {
+ if(type != other.type) {
return false;
}
-
- if (left == null) {
- if (other.left != null) {
+
+ if(left == null) {
+ if(other.left != null) {
return false;
}
- } else if (!left.equals(other.left)) {
+ } else if(!left.equals(other.left)) {
return false;
}
-
- if (number == null) {
- if (other.number != null)
- return false;
- } else if (!number.equals(other.number)) {
+
+ if(number == null) {
+ if(other.number != null) return false;
+ } else if(!number.equals(other.number)) {
return false;
}
-
- if (power != other.power) {
+
+ if(power != other.power) {
return false;
}
-
- if (right == null) {
- if (other.right != null) {
+
+ if(right == null) {
+ if(other.right != null) {
return false;
}
- } else if (!right.equals(other.right)) {
+ } else if(!right.equals(other.right)) {
return false;
}
-
+
return true;
}
} \ No newline at end of file
diff --git a/base/src/main/java/bjc/utils/math/NumberUtils.java b/base/src/main/java/bjc/utils/math/NumberUtils.java
index 9391040..ed58bb8 100644
--- a/base/src/main/java/bjc/utils/math/NumberUtils.java
+++ b/base/src/main/java/bjc/utils/math/NumberUtils.java
@@ -27,7 +27,7 @@ public class NumberUtils {
}
if(currNumber >= 1000) {
- int numM = (int)(currNumber / 1000);
+ int numM = (int) (currNumber / 1000);
currNumber = currNumber % 1000;
for(int i = 0; i < numM; i++) {
@@ -54,7 +54,7 @@ public class NumberUtils {
}
if(currNumber >= 100) {
- int numC = (int)(currNumber / 100);
+ int numC = (int) (currNumber / 100);
currNumber = currNumber % 100;
for(int i = 0; i < numC; i++) {
@@ -81,7 +81,7 @@ public class NumberUtils {
}
if(currNumber >= 10) {
- int numX = (int)(currNumber / 10);
+ int numX = (int) (currNumber / 10);
currNumber = currNumber % 10;
for(int i = 0; i < numX; i++) {
@@ -108,7 +108,7 @@ public class NumberUtils {
}
if(currNumber >= 1) {
- int numI = (int)(currNumber / 1);
+ int numI = (int) (currNumber / 1);
currNumber = currNumber % 1;
for(int i = 0; i < numI; i++) {
@@ -118,25 +118,23 @@ public class NumberUtils {
return work.toString();
}
-
+
public static String toCardinal(long number) {
return toCardinal(number, null);
}
- private static String[] cardinals = new String[] {
- "zero", "one", "two", "three", "four", "five", "six", "seven",
- "eight", "nine", "ten", "eleven", "twelve", "thirteen",
- "fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
- "nineteen", "twenty",
- };
+ private static String[] cardinals = new String[] { "zero", "one", "two", "three", "four", "five", "six",
+ "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
+ "sixteen", "seventeen", "eighteen", "nineteen", "twenty", };
public static class CardinalState {
- public final Map<Long, String> customNumbers;
- public final Map<LongPredicate, BiFunction<Long, CardinalState, String>> customScales;
+ public final Map<Long, String> customNumbers;
+ public final Map<LongPredicate, BiFunction<Long, CardinalState, String>> customScales;
- public CardinalState(Map<Long, String> customNumbers, Map<LongPredicate, BiFunction<Long, CardinalState, String>> customScales) {
+ public CardinalState(Map<Long, String> customNumbers,
+ Map<LongPredicate, BiFunction<Long, CardinalState, String>> customScales) {
this.customNumbers = customNumbers;
- this.customScales = customScales;
+ this.customScales = customScales;
}
public String handleCustom(long number) {
@@ -144,7 +142,8 @@ public class NumberUtils {
return customNumbers.get(number);
}
- for(Entry<LongPredicate, BiFunction<Long, CardinalState, String>> ent : customScales.entrySet()) {
+ for(Entry<LongPredicate, BiFunction<Long, CardinalState, String>> ent : customScales
+ .entrySet()) {
if(ent.getKey().test(number)) {
return ent.getValue().apply(number, this);
}
@@ -163,11 +162,11 @@ public class NumberUtils {
if(number < 0) return "negative " + toCardinal(number * -1, custom);
- if(number <= 20) return cardinals[(int)number];
+ if(number <= 20) return cardinals[(int) number];
if(number < 100) {
if(number % 10 == 0) {
- switch((int)number) {
+ switch((int) number) {
case 30:
return "thirty";
case 40:
@@ -183,51 +182,52 @@ public class NumberUtils {
case 90:
return "ninety";
default:
- /*
+ /*
* Shouldn't happen.
*/
- assert(false);
+ assert (false);
}
}
- long numTens = (long)(number / 10);
+ long numTens = (long) (number / 10);
long numOnes = number % 10;
return toCardinal(numTens, custom) + "-" + toCardinal(numOnes, custom);
}
if(number < 1000) {
- long numHundreds = (long)(number / 100);
- long rest = number % 100;
+ long numHundreds = (long) (number / 100);
+ long rest = number % 100;
return toCardinal(numHundreds, custom) + " hundred and " + toCardinal(rest, custom);
}
- long MILLION = (long)(Math.pow(10, 6));
+ long MILLION = (long) (Math.pow(10, 6));
if(number < MILLION) {
- long numThousands = (long)(number / 1000);
- long rest = number % 1000;
+ long numThousands = (long) (number / 1000);
+ long rest = number % 1000;
return toCardinal(numThousands, custom) + " thousand, " + toCardinal(rest, custom);
}
- long BILLION = (long)(Math.pow(10, 9));
+ long BILLION = (long) (Math.pow(10, 9));
if(number < BILLION) {
- long numMillions = (long)(number / MILLION);
- long rest = number % MILLION;
+ long numMillions = (long) (number / MILLION);
+ long rest = number % MILLION;
return toCardinal(numMillions, custom) + " million, " + toCardinal(rest, custom);
}
- long TRILLION = (long)(Math.pow(10, 12));
+ long TRILLION = (long) (Math.pow(10, 12));
if(number < TRILLION) {
- long numBillions = (long)(number / BILLION);
- long rest = number % BILLION;
+ long numBillions = (long) (number / BILLION);
+ long rest = number % BILLION;
return toCardinal(numBillions, custom) + " billion, " + toCardinal(rest, custom);
}
- throw new IllegalArgumentException("Numbers greater than or equal to 1 trillion are not supported yet.");
+ throw new IllegalArgumentException(
+ "Numbers greater than or equal to 1 trillion are not supported yet.");
}
public static String toOrdinal(long number) {
@@ -236,7 +236,7 @@ public class NumberUtils {
}
if(number < 20) {
- switch((int)number) {
+ switch((int) number) {
case 0:
return "zeroth";
case 1:
@@ -281,13 +281,13 @@ public class NumberUtils {
/*
* Shouldn't happen.
*/
- assert(false);
+ assert (false);
}
}
if(number < 100) {
if(number % 10 == 0) {
- switch((int)number) {
+ switch((int) number) {
case 20:
return "twentieth";
case 30:
@@ -304,6 +304,8 @@ public class NumberUtils {
return "eightieth";
case 90:
return "ninetieth";
+ default:
+ throw new IllegalArgumentException(String.format("Illegal number %d", number));
}
}
@@ -311,15 +313,15 @@ public class NumberUtils {
return toCardinal(number - numPostfix) + "-" + toOrdinal(numPostfix);
}
- long procNum = number % 100;
- long tens = (long)(procNum / 10);
- long ones = procNum % 10;
+ long procNum = number % 100;
+ long tens = (long) (procNum / 10);
+ long ones = procNum % 10;
if(tens == 1) {
return Long.toString(number) + "th";
- }
+ }
- switch((int)ones) {
+ switch((int) ones) {
case 1:
return Long.toString(number) + "st";
case 2:
@@ -330,33 +332,36 @@ public class NumberUtils {
return Long.toString(number) + "th";
}
}
-
+
private static char[] radixChars = new char[62];
static {
int idx = 0;
for(char i = 0; i < 10; i++) {
- radixChars[idx] = (char)('0' + i);
+ radixChars[idx] = (char) ('0' + i);
idx += 1;
}
for(char i = 0; i < 26; i++) {
- radixChars[idx] = (char)('A' + i);
+ radixChars[idx] = (char) ('A' + i);
idx += 1;
}
for(char i = 0; i < 26; i++) {
- radixChars[idx] = (char)('a' + i);
+ radixChars[idx] = (char) ('a' + i);
idx += 1;
}
}
- public static String toCommaString(long val, int mincols, char padchar, int commaInterval, char commaChar, boolean signed, int radix) {
+ public static String toCommaString(long val, int mincols, char padchar, int commaInterval, char commaChar,
+ boolean signed, int radix) {
if(radix > radixChars.length) {
- throw new IllegalArgumentException(String.format("Radix %d is larger than largest supported radix %d", radix, radixChars.length));
+ throw new IllegalArgumentException(
+ String.format("Radix %d is larger than largest supported radix %d", radix,
+ radixChars.length));
}
StringBuilder work = new StringBuilder();
@@ -376,15 +381,16 @@ public class NumberUtils {
while(currVal != 0) {
valCounter += 1;
- int radDigit = (int)(currVal % radix);
+ int radDigit = (int) (currVal % radix);
work.append(radixChars[radDigit]);
- currVal = (long)(currVal / radix);
+ currVal = (long) (currVal / radix);
if(commaInterval != 0 && valCounter % commaInterval == 0) work.append(commaChar);
}
}
- if(isNeg) work.append("-");
+ if(isNeg)
+ work.append("-");
else if(signed) work.append("+");
work.reverse();
diff --git a/base/src/main/java/bjc/utils/parserutils/delims/DelimiterGroup.java b/base/src/main/java/bjc/utils/parserutils/delims/DelimiterGroup.java
index b1d8597..73c3473 100644
--- a/base/src/main/java/bjc/utils/parserutils/delims/DelimiterGroup.java
+++ b/base/src/main/java/bjc/utils/parserutils/delims/DelimiterGroup.java
@@ -181,13 +181,13 @@ public class DelimiterGroup<T> {
/**
* Check if a group is excluded at the top level of this group.
*
- * @param groupName
+ * @param grupName
* The group to check.
*
* @return Whether or not the provided group is excluded.
*/
- public boolean excludes(final T groupName) {
- return topLevelExclusions.contains(groupName);
+ public boolean excludes(final T grupName) {
+ return topLevelExclusions.contains(grupName);
}
/**