summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-03-27 16:39:52 -0400
committerBen Culkin <scorpress@gmail.com>2020-03-27 16:39:52 -0400
commit373464d30d87bd8702fe27b920ed1406a0833ef3 (patch)
treec357c0a4fdd8f3f6ea8eb812ddc853f263c6c550
parente99f6c758c9e1ea5601e1076845912db5153e38c (diff)
Refactor test structure
Tests are now in a 'test' sub-package, so it is clear that they are indeed test code, not just disjoint parts of the main code
-rw-r--r--base/.classpath1
-rw-r--r--base/.settings/org.eclipse.jdt.core.prefs3
-rw-r--r--base/src/main/java/bjc/utils/funcutils/IteratorUtils.java2
-rw-r--r--base/src/main/java/bjc/utils/ioutils/ReportWriter.java4
-rw-r--r--base/src/main/java/bjc/utils/ioutils/SimpleProperties.java87
-rw-r--r--base/src/main/java/bjc/utils/misc/PropertyDB.java4
-rw-r--r--base/src/test/java/bjc/utils/test/cli/objects/CommandTest.java (renamed from base/src/test/java/bjc/utils/cli/objects/CommandTest.java)4
-rw-r--r--base/src/test/java/bjc/utils/test/data/BooleanToggleTest.java (renamed from base/src/test/java/bjc/utils/data/BooleanToggleTest.java)4
-rw-r--r--base/src/test/java/bjc/utils/test/data/CircularIteratorTest.java (renamed from base/src/test/java/bjc/utils/data/CircularIteratorTest.java)4
-rw-r--r--base/src/test/java/bjc/utils/test/data/QueuedIteratorTest.java (renamed from base/src/test/java/bjc/utils/data/QueuedIteratorTest.java)4
-rw-r--r--base/src/test/java/bjc/utils/test/funcutils/IteratorUtilsTest.java (renamed from base/src/test/java/bjc/utils/funcutils/IteratorUtilsTest.java)2
-rw-r--r--base/src/test/java/bjc/utils/test/funcutils/StringUtilsTest.java (renamed from base/src/test/java/bjc/utils/funcutils/StringUtilsTest.java)2
-rw-r--r--base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java (renamed from base/src/test/java/bjc/utils/ioutils/LevelSplitterTest.java)6
-rw-r--r--base/src/test/java/bjc/utils/test/ioutils/ReportWriterTest.java (renamed from base/src/test/java/bjc/utils/ioutils/ReportWriterTest.java)4
-rw-r--r--base/src/test/java/bjc/utils/test/ioutils/SimplePropertiesTest.java60
-rw-r--r--base/src/test/java/bjc/utils/test/parserutils/TokenUtilsTest.java (renamed from base/src/test/java/bjc/utils/parserutils/TokenUtilsTest.java)2
-rw-r--r--clformat/.classpath32
-rw-r--r--clformat/.project23
-rw-r--r--clformat/.settings/org.eclipse.core.resources.prefs5
-rw-r--r--clformat/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--clformat/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java12
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/CLString.java2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/ClauseDecree.java4
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/GroupDecree.java4
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/CaseDirective.java2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java1
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatContext.java2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatParameters.java2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/InflectDirective.java3
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/TabulateDirective.java2
33 files changed, 250 insertions, 53 deletions
diff --git a/base/.classpath b/base/.classpath
index 3d9f62c..9a48b8b 100644
--- a/base/.classpath
+++ b/base/.classpath
@@ -15,6 +15,7 @@
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src/examples/java"/>
diff --git a/base/.settings/org.eclipse.jdt.core.prefs b/base/.settings/org.eclipse.jdt.core.prefs
index 907db3b..72a79c3 100644
--- a/base/.settings/org.eclipse.jdt.core.prefs
+++ b/base/.settings/org.eclipse.jdt.core.prefs
@@ -27,6 +27,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -72,6 +73,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=info
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=info
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -108,4 +110,5 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=info
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
diff --git a/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java b/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java
index d691bab..732f1e9 100644
--- a/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java
+++ b/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java
@@ -3,7 +3,7 @@ package bjc.utils.funcutils;
import java.util.*;
import java.util.function.*;
-import bjc.utils.data.*;
+import bjc.utils.data.ArrayIterator;
/**
* Utility methods for dealing with iterators.
diff --git a/base/src/main/java/bjc/utils/ioutils/ReportWriter.java b/base/src/main/java/bjc/utils/ioutils/ReportWriter.java
index 4eb5aef..bc9b046 100644
--- a/base/src/main/java/bjc/utils/ioutils/ReportWriter.java
+++ b/base/src/main/java/bjc/utils/ioutils/ReportWriter.java
@@ -1,6 +1,7 @@
package bjc.utils.ioutils;
import java.io.IOException;
+import java.io.StringWriter;
import java.io.Writer;
import bjc.utils.esodata.DefaultList;
@@ -413,6 +414,9 @@ public class ReportWriter extends Writer {
return rw;
}
+ public ReportWriter() {
+ this(new StringWriter());
+ }
/**
* Create a new ReportWriter.
* @param write The place to write to.
diff --git a/base/src/main/java/bjc/utils/ioutils/SimpleProperties.java b/base/src/main/java/bjc/utils/ioutils/SimpleProperties.java
index 4f41c50..35dc47c 100644
--- a/base/src/main/java/bjc/utils/ioutils/SimpleProperties.java
+++ b/base/src/main/java/bjc/utils/ioutils/SimpleProperties.java
@@ -1,10 +1,12 @@
package bjc.utils.ioutils;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.io.Reader;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import java.util.NoSuchElementException;
import java.util.Scanner;
import java.util.Set;
@@ -15,6 +17,33 @@ import java.util.Set;
*
*/
public class SimpleProperties implements Map<String, String> {
+ /**
+ * Exception thrown when there is a duplicate key, when they are forbidden.
+ *
+ * @author 15405
+ *
+ */
+ public static class DuplicateKeys extends RuntimeException {
+ private static final long serialVersionUID = -5521190136366024804L;
+
+ /**
+ * Create a new duplicate key exception.
+ *
+ * @param keyName
+ * The name of the key that has been duplicated.
+ */
+ public DuplicateKeys(String keyName) {
+ super(String.format("Duplicate value encountered for key '%s'", keyName));
+ }
+ }
+
+ public static class InvalidLineFormat extends RuntimeException {
+ private static final long serialVersionUID = 5332131472090792841L;
+
+ public InvalidLineFormat(String lne) {
+ super(String.format("Line '%s' is improperly formatted.\n\tExpected format is a string key, followed by a single space, followed by the value", ""));
+ }
+ }
private final Map<String, String> props;
/**
@@ -23,22 +52,40 @@ public class SimpleProperties implements Map<String, String> {
public SimpleProperties() {
props = new HashMap<>();
}
-
+
/**
- * Load properties from the provided input stream.
+ * Load properties from an input stream.
+ *
+ * Delegates to {@link SimpleProperties#loadFrom(Reader, boolean)} to allow
+ * you to pass a input stream instead of a reader.
+ *
+ * @param is
+ * The stream to read from.
+ * @param allowDuplicates
+ * Whether or not duplicate keys should be allowed.
+ */
+ public void loadFrom(final InputStream is, final boolean allowDuplicates) {
+ loadFrom(new InputStreamReader(is), allowDuplicates);
+ }
+
+ /**
+ * Load properties from the provided input reader.
*
* The format is the name, a space, then the body.
*
* All leading/trailing spaces from the name &amp; body are removed.
*
* @param is
- * The stream to read from.
+ * The reader to read from.
*
* @param allowDuplicates
- * Whether or not duplicate keys should be allowed.
+ * Whether or not duplicate keys should be allowed. If they are,
+ * the end-value of the property will be what the last one was.
+ *
+ * @throws DuplicateKeys If duplicate keys have been found when they are prohibited.
*/
- public void loadFrom(final InputStream is, final boolean allowDuplicates) {
- try(Scanner scn = new Scanner(is)) {
+ public void loadFrom(final Reader rdr, final boolean allowDuplicates) {
+ try(Scanner scn = new Scanner(rdr)) {
while(scn.hasNextLine()) {
final String ln = scn.nextLine().trim();
@@ -55,10 +102,7 @@ public class SimpleProperties implements Map<String, String> {
* Complain about improperly formatted lines.
*/
if(sepIdx == -1) {
- final String fmt = "Properties must be a name, a space, then the body.\n\tOffending line is '%s'";
- final String msg = String.format(fmt, ln);
-
- throw new NoSuchElementException(msg);
+ throw new InvalidLineFormat(ln);
}
final String name = ln.substring(0, sepIdx).trim();
@@ -68,9 +112,7 @@ public class SimpleProperties implements Map<String, String> {
* Complain about duplicates, if that is wanted.
*/
if(!allowDuplicates && containsKey(name)) {
- final String msg = String.format("Duplicate key '%s'", name);
-
- throw new IllegalStateException(msg);
+ throw new DuplicateKeys(name);
}
put(name, body);
@@ -80,15 +122,26 @@ public class SimpleProperties implements Map<String, String> {
/**
* Output the set of read properties.
+ *
+ * Uses System.out, since one isn't specified.
*/
public void outputProperties() {
- System.out.println("Read properties:");
+ outputProperties(System.out);
+ }
+
+ /**
+ * Output the set of read properties.
+ *
+ * @param strim The stream to output properties to.
+ */
+ public void outputProperties(PrintStream strim) {
+ strim.println("Read properties:");
for(final Entry<String, String> entry : entrySet()) {
- System.out.printf("\t'%s'\t'%s'\n", entry.getKey(), entry.getValue());
+ strim.printf("\t'%s'\t'%s'\n", entry.getKey(), entry.getValue());
}
- System.out.println();
+ strim.println();
}
@Override
diff --git a/base/src/main/java/bjc/utils/misc/PropertyDB.java b/base/src/main/java/bjc/utils/misc/PropertyDB.java
index c9434ef..09e1999 100644
--- a/base/src/main/java/bjc/utils/misc/PropertyDB.java
+++ b/base/src/main/java/bjc/utils/misc/PropertyDB.java
@@ -54,7 +54,7 @@ public class PropertyDB {
regexes = new SimpleProperties();
regexes.loadFrom(PropertyDB.class.getResourceAsStream("/regexes.sprop"), false);
if(LOGLOAD) {
- regexes.outputProperties();
+ regexes.outputProperties(System.out);
System.out.println();
}
compiledRegexes = new HashMap<>();
@@ -67,7 +67,7 @@ public class PropertyDB {
formats = new SimpleProperties();
formats.loadFrom(PropertyDB.class.getResourceAsStream("/formats.sprop"), false);
if(LOGLOAD) {
- formats.outputProperties();
+ formats.outputProperties(System.out);
System.out.println();
}
});
diff --git a/base/src/test/java/bjc/utils/cli/objects/CommandTest.java b/base/src/test/java/bjc/utils/test/cli/objects/CommandTest.java
index 2bebaa9..1e253be 100644
--- a/base/src/test/java/bjc/utils/cli/objects/CommandTest.java
+++ b/base/src/test/java/bjc/utils/test/cli/objects/CommandTest.java
@@ -1,9 +1,11 @@
-package bjc.utils.cli.objects;
+package bjc.utils.test.cli.objects;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
+import bjc.utils.cli.objects.Command;
+
/**
* Test that CLI command objects work correctly.
*
diff --git a/base/src/test/java/bjc/utils/data/BooleanToggleTest.java b/base/src/test/java/bjc/utils/test/data/BooleanToggleTest.java
index 66f44c0..1373389 100644
--- a/base/src/test/java/bjc/utils/data/BooleanToggleTest.java
+++ b/base/src/test/java/bjc/utils/test/data/BooleanToggleTest.java
@@ -1,9 +1,11 @@
-package bjc.utils.data;
+package bjc.utils.test.data;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
+import bjc.utils.data.BooleanToggle;
+
/**
* Test for boolean toggles.
* @author bjculkin
diff --git a/base/src/test/java/bjc/utils/data/CircularIteratorTest.java b/base/src/test/java/bjc/utils/test/data/CircularIteratorTest.java
index 5e20a17..7aae211 100644
--- a/base/src/test/java/bjc/utils/data/CircularIteratorTest.java
+++ b/base/src/test/java/bjc/utils/test/data/CircularIteratorTest.java
@@ -1,4 +1,4 @@
-package bjc.utils.data;
+package bjc.utils.test.data;
import static bjc.utils.funcutils.TestUtils.assertIteratorEquals;
@@ -7,6 +7,8 @@ import java.util.List;
import org.junit.Test;
+import bjc.utils.data.CircularIterator;
+
/**
* Test for circular iterators.,
*
diff --git a/base/src/test/java/bjc/utils/data/QueuedIteratorTest.java b/base/src/test/java/bjc/utils/test/data/QueuedIteratorTest.java
index bbbca56..b34723e 100644
--- a/base/src/test/java/bjc/utils/data/QueuedIteratorTest.java
+++ b/base/src/test/java/bjc/utils/test/data/QueuedIteratorTest.java
@@ -1,4 +1,4 @@
-package bjc.utils.data;
+package bjc.utils.test.data;
import static bjc.utils.data.QueuedIterator.queued;
import static bjc.utils.funcutils.TestUtils.assertIteratorEquals;
@@ -6,6 +6,8 @@ import static java.util.Arrays.asList;
import org.junit.Test;
+import bjc.utils.data.QueuedIterator;
+
/**
* Test of QueuedIterator.
*
diff --git a/base/src/test/java/bjc/utils/funcutils/IteratorUtilsTest.java b/base/src/test/java/bjc/utils/test/funcutils/IteratorUtilsTest.java
index bf88038..965582b 100644
--- a/base/src/test/java/bjc/utils/funcutils/IteratorUtilsTest.java
+++ b/base/src/test/java/bjc/utils/test/funcutils/IteratorUtilsTest.java
@@ -1,4 +1,4 @@
-package bjc.utils.funcutils;
+package bjc.utils.test.funcutils;
import org.junit.Test;
diff --git a/base/src/test/java/bjc/utils/funcutils/StringUtilsTest.java b/base/src/test/java/bjc/utils/test/funcutils/StringUtilsTest.java
index 434912c..b53d3e9 100644
--- a/base/src/test/java/bjc/utils/funcutils/StringUtilsTest.java
+++ b/base/src/test/java/bjc/utils/test/funcutils/StringUtilsTest.java
@@ -1,4 +1,4 @@
-package bjc.utils.funcutils;
+package bjc.utils.test.funcutils;
import java.io.StringReader;
diff --git a/base/src/test/java/bjc/utils/ioutils/LevelSplitterTest.java b/base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java
index bdc5d8d..aadea72 100644
--- a/base/src/test/java/bjc/utils/ioutils/LevelSplitterTest.java
+++ b/base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java
@@ -1,10 +1,12 @@
-package bjc.utils.ioutils;
+package bjc.utils.test.ioutils;
import static bjc.utils.funcutils.TestUtils.assertListEquals;
-import static bjc.utils.ioutils.LevelSplitterTest.RXPair.pair;
+import static bjc.utils.test.ioutils.LevelSplitterTest.RXPair.pair;
import org.junit.Test;
+import bjc.utils.ioutils.LevelSplitter;
+
/**
* Test of LevelSplitter.
*
diff --git a/base/src/test/java/bjc/utils/ioutils/ReportWriterTest.java b/base/src/test/java/bjc/utils/test/ioutils/ReportWriterTest.java
index a9f7072..4918b95 100644
--- a/base/src/test/java/bjc/utils/ioutils/ReportWriterTest.java
+++ b/base/src/test/java/bjc/utils/test/ioutils/ReportWriterTest.java
@@ -1,4 +1,4 @@
-package bjc.utils.ioutils;
+package bjc.utils.test.ioutils;
import static org.junit.Assert.assertEquals;
@@ -7,6 +7,8 @@ import java.io.StringWriter;
import org.junit.Test;
+import bjc.utils.ioutils.ReportWriter;
+
/**
* Tests for ReportWriter.
*
diff --git a/base/src/test/java/bjc/utils/test/ioutils/SimplePropertiesTest.java b/base/src/test/java/bjc/utils/test/ioutils/SimplePropertiesTest.java
new file mode 100644
index 0000000..81f7ac8
--- /dev/null
+++ b/base/src/test/java/bjc/utils/test/ioutils/SimplePropertiesTest.java
@@ -0,0 +1,60 @@
+package bjc.utils.test.ioutils;
+
+import static org.junit.Assert.*;
+
+import java.io.StringReader;
+
+import org.junit.Test;
+
+import bjc.utils.ioutils.SimpleProperties;
+import bjc.utils.ioutils.SimpleProperties.DuplicateKeys;
+import bjc.utils.ioutils.SimpleProperties.InvalidLineFormat;
+
+/**
+ * Tests for SimpleProperties.
+ *
+ * @author Ben Culkin
+ *
+ */
+public class SimplePropertiesTest {
+
+ @Test
+ public void testSimpleProperties() {
+ SimpleProperties props = new SimpleProperties();
+
+ assertEquals(0, props.size());
+ assertTrue(props.isEmpty());
+ }
+
+ @Test
+ public void testLoadFrom() {
+ SimpleProperties props = new SimpleProperties();
+
+ StringReader rdr = new StringReader("a a\nb b\nc c1\nc c2\n#c c3");
+
+ props.loadFrom(rdr, true);
+
+ assertEquals(3, props.size());
+ assertEquals("a", props.get("a"));
+ assertEquals("b", props.get("b"));
+ assertEquals("c2", props.get("c"));
+ }
+
+ @Test(expected = DuplicateKeys.class)
+ public void testDuplicateKeys() {
+ SimpleProperties props = new SimpleProperties();
+
+ StringReader rdr = new StringReader("a a\nb b\nb b");
+
+ props.loadFrom(rdr, false);
+ }
+
+ @Test(expected = InvalidLineFormat.class)
+ public void testInvalidFormat() {
+ SimpleProperties props = new SimpleProperties();
+
+ StringReader rdr = new StringReader("a");
+
+ props.loadFrom(rdr, false);
+ }
+} \ No newline at end of file
diff --git a/base/src/test/java/bjc/utils/parserutils/TokenUtilsTest.java b/base/src/test/java/bjc/utils/test/parserutils/TokenUtilsTest.java
index 08606b3..99593ed 100644
--- a/base/src/test/java/bjc/utils/parserutils/TokenUtilsTest.java
+++ b/base/src/test/java/bjc/utils/test/parserutils/TokenUtilsTest.java
@@ -1,4 +1,4 @@
-package bjc.utils.parserutils;
+package bjc.utils.test.parserutils;
import static bjc.utils.parserutils.TokenUtils.descapeString;
import static bjc.utils.parserutils.TokenUtils.removeDQuotedStrings;
diff --git a/clformat/.classpath b/clformat/.classpath
new file mode 100644
index 0000000..2efb9ee
--- /dev/null
+++ b/clformat/.classpath
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="data">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/clformat/.project b/clformat/.project
new file mode 100644
index 0000000..3a9c3f2
--- /dev/null
+++ b/clformat/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>clformat</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/clformat/.settings/org.eclipse.core.resources.prefs b/clformat/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..41654f9
--- /dev/null
+++ b/clformat/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8
+encoding/data=UTF-8
diff --git a/clformat/.settings/org.eclipse.jdt.core.prefs b/clformat/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2f5cc74
--- /dev/null
+++ b/clformat/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/clformat/.settings/org.eclipse.m2e.core.prefs b/clformat/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/clformat/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java b/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java
index 56c64f6..a306b9c 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java
@@ -4,7 +4,7 @@ import java.io.*;
import java.util.*;
import bjc.utils.esodata.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.directives.*;
// Grab our easy converters/constructors
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java b/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java
index 498d9d5..cd3d0f3 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java
@@ -4,7 +4,7 @@ import java.util.*;
import bjc.esodata.AbbrevMap2;
import bjc.utils.esodata.Tape;
-import bjc.utils.parserutils.*;
+import bjc.utils.parserutils.TokenUtils;
/**
* Represents a set of parameters to a CL format directive.
@@ -82,17 +82,11 @@ public class CLParameters {
//
// If it becomes an issue, I'll resolve it
for (String key : namedParams.keySet()) {
- if (abbrevWords.contains(key)) continue;
-
- abbrevWords.add(key);
- nameAbbrevs.add(key);
+ refreshAbbrev(key);
}
for (String key : nameIndices.keySet()) {
- if (abbrevWords.contains(key)) continue;
-
- abbrevWords.add(key);
- nameAbbrevs.add(key);
+ refreshAbbrev(key);
}
}
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/CLString.java b/clformat/src/main/java/bjc/utils/ioutils/format/CLString.java
index 5e74cc1..ed830d4 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/CLString.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/CLString.java
@@ -4,7 +4,7 @@ import java.io.*;
import java.util.*;
import bjc.utils.esodata.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.directives.*;
/**
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/ClauseDecree.java b/clformat/src/main/java/bjc/utils/ioutils/format/ClauseDecree.java
index 4188e03..2fd7eda 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/ClauseDecree.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/ClauseDecree.java
@@ -1,10 +1,10 @@
package bjc.utils.ioutils.format;
-import bjc.utils.ioutils.*;
-
import java.io.*;
import java.util.*;
+import bjc.utils.ioutils.ReportWriter;
+
/**
* A decree that represents a single clause in a {@link GroupDecree}.
*
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/GroupDecree.java b/clformat/src/main/java/bjc/utils/ioutils/format/GroupDecree.java
index b3ae69b..47401a9 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/GroupDecree.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/GroupDecree.java
@@ -1,10 +1,10 @@
package bjc.utils.ioutils.format;
-import bjc.utils.ioutils.*;
-
import java.io.*;
import java.util.*;
+import bjc.utils.ioutils.ReportWriter;
+
/**
* Represents an enclosed group of decrees.
*
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/CaseDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/CaseDirective.java
index 3b21074..d1ab4ab 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/CaseDirective.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/CaseDirective.java
@@ -3,7 +3,7 @@ package bjc.utils.ioutils.format.directives;
import java.io.*;
import java.util.regex.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.*;
/**
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java
index bca488c..f8cc039 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java
@@ -3,7 +3,7 @@ package bjc.utils.ioutils.format.directives;
import java.io.*;
import java.util.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.*;
/**
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java
index 2eb5e4c..ae3ca05 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java
@@ -2,7 +2,6 @@ package bjc.utils.ioutils.format.directives;
import java.io.*;
import java.util.*;
-import java.util.regex.*;
import bjc.utils.esodata.*;
import bjc.utils.ioutils.format.*;
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatContext.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatContext.java
index f1147fb..f8791a5 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatContext.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatContext.java
@@ -3,7 +3,7 @@ package bjc.utils.ioutils.format.directives;
import java.io.*;
import bjc.utils.esodata.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
/**
* Encapsulates all of the state that is provided to edicts when they are
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatParameters.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatParameters.java
index e55fdd8..e47545c 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatParameters.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/FormatParameters.java
@@ -1,7 +1,7 @@
package bjc.utils.ioutils.format.directives;
import bjc.utils.esodata.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.*;
/**
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/InflectDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/InflectDirective.java
index ead1c06..b9de4af 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/InflectDirective.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/InflectDirective.java
@@ -3,8 +3,7 @@ package bjc.utils.ioutils.format.directives;
import java.io.*;
import java.util.*;
import bjc.inflexion.*;
-
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.*;
/**
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/TabulateDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/TabulateDirective.java
index 2aaef19..87bde35 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/TabulateDirective.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/TabulateDirective.java
@@ -3,7 +3,7 @@ package bjc.utils.ioutils.format.directives;
import java.io.*;
import bjc.utils.esodata.*;
-import bjc.utils.ioutils.*;
+import bjc.utils.ioutils.ReportWriter;
import bjc.utils.ioutils.format.*;
/**