diff options
| author | student <student@localhost> | 2018-03-05 16:48:11 -0500 |
|---|---|---|
| committer | student <student@localhost> | 2018-03-05 16:48:11 -0500 |
| commit | d3aff0509183a73aebf540bb46ea2e29807df855 (patch) | |
| tree | 06c2fbe67f893eed04f1c7f03a6af138d3b509cf /base/src/main/java/bjc/utils/ioutils | |
| parent | 7bba6e0f36d71301a352a59573a8fd34a3efce8e (diff) | |
Update
Diffstat (limited to 'base/src/main/java/bjc/utils/ioutils')
11 files changed, 170 insertions, 87 deletions
diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java index 6c84770..e840e86 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java @@ -7,6 +7,12 @@ import bjc.utils.ioutils.format.CLFormatter; import bjc.utils.ioutils.format.CLModifiers; import bjc.utils.ioutils.format.CLParameters; +/** + * Implementation of the A directive. + * + * @author student + * + */ public class AestheticDirective implements Directive { @Override @@ -17,13 +23,12 @@ public class AestheticDirective implements Directive { int mincol = 0, colinc = 1, minpad = 0; char padchar = ' '; - if(params.length() >= 1) { + if (params.length() >= 1) { mincol = params.getIntDefault(0, "minimum column count", 'A', 0); } - if(params.length() < 4) { - throw new IllegalArgumentException( - "Must provide either zero, one or four arguments to A directive"); + if (params.length() < 4) { + throw new IllegalArgumentException("Must provide either zero, one or four arguments to A directive"); } colinc = params.getIntDefault(1, "padding increment", 'A', 1); @@ -32,13 +37,13 @@ public class AestheticDirective implements Directive { StringBuilder work = new StringBuilder(); - if(mods.atMod) { - for(int i = 0; i < minpad; i++) { + if (mods.atMod) { + for (int i = 0; i < minpad; i++) { work.append(padchar); } - for(int i = work.length(); i < mincol; i++) { - for(int k = 0; k < colinc; k++) { + for (int i = work.length(); i < mincol; i++) { + for (int k = 0; k < colinc; k++) { work.append(padchar); } } @@ -46,13 +51,13 @@ public class AestheticDirective implements Directive { work.append(item.toString()); - if(!mods.atMod) { - for(int i = 0; i < minpad; i++) { + if (!mods.atMod) { + for (int i = 0; i < minpad; i++) { work.append(padchar); } - for(int i = work.length(); i < mincol; i++) { - for(int k = 0; k < colinc; k++) { + for (int i = work.length(); i < mincol; i++) { + for (int k = 0; k < colinc; k++) { work.append(padchar); } } diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java index 8041cf4..18557c8 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/CharacterDirective.java @@ -8,21 +8,27 @@ import bjc.utils.ioutils.format.CLParameters; import java.util.IllegalFormatConversionException; import java.util.regex.Matcher; +/** + * Implements the C directive. + * + * @author student + * + */ public class CharacterDirective implements Directive { @Override - public void format(StringBuffer buff, Object parm, CLModifiers mods, CLParameters arrParams, - Tape<Object> tParams, Matcher dirMatcher, CLFormatter fmt) { + public void format(StringBuffer buff, Object parm, CLModifiers mods, CLParameters arrParams, Tape<Object> tParams, + Matcher dirMatcher, CLFormatter fmt) { CLFormatter.checkItem(parm, 'C'); - if(!(parm instanceof Character)) { + if (!(parm instanceof Character)) { throw new IllegalFormatConversionException('C', parm.getClass()); } char ch = (Character) parm; int codepoint = ch; - if(mods.colonMod) { + if (mods.colonMod) { /* * Colon mod means print Unicode character name. */ diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java index 6ee512f..e32ce8f 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/ConditionalDirective.java @@ -10,6 +10,12 @@ import java.util.IllegalFormatConversionException; import java.util.List; import java.util.regex.Matcher; +/** + * Implements the [ directive. + * + * @author student + * + */ public class ConditionalDirective implements Directive { @Override @@ -21,29 +27,29 @@ public class ConditionalDirective implements Directive { String defClause = null; boolean isDefault = false; - while(dirMatcher.find()) { + while (dirMatcher.find()) { /* Process a list of clauses. */ String dirName = dirMatcher.group("name"); String dirMods = dirMatcher.group("modifiers"); - if(dirName != null) { + if (dirName != null) { /* Append everything up to this directive. */ dirMatcher.appendReplacement(condBody, ""); - if(dirName.equals("]")) { + if (dirName.equals("]")) { /* End the conditional. */ String clause = condBody.toString(); - if(isDefault) { + if (isDefault) { defClause = clause; } else { clauses.add(clause); } break; - } else if(dirName.equals(";")) { + } else if (dirName.equals(";")) { /* End the clause. */ String clause = condBody.toString(); - if(isDefault) { + if (isDefault) { defClause = clause; } else { clauses.add(clause); @@ -52,7 +58,7 @@ public class ConditionalDirective implements Directive { /* * Mark the next clause as the default. */ - if(dirMods.contains(":")) { + if (dirMods.contains(":")) { isDefault = true; } } else { @@ -63,44 +69,44 @@ public class ConditionalDirective implements Directive { } Object par = formatParams.item(); - if(mods.colonMod) { + if (mods.colonMod) { formatParams.right(); - if(par == null) { + if (par == null) { throw new IllegalArgumentException("No parameter provided for [ directive."); - } else if(!(par instanceof Boolean)) { + } else if (!(par instanceof Boolean)) { throw new IllegalFormatConversionException('[', par.getClass()); } boolean res = (Boolean) par; String frmt; - if(res) + if (res) frmt = clauses.get(1); else frmt = clauses.get(0); fmt.doFormatString(frmt, sb, formatParams); - } else if(mods.atMod) { - if(par == null) { + } else if (mods.atMod) { + if (par == null) { throw new IllegalArgumentException("No parameter provided for [ directive."); - } else if(!(par instanceof Boolean)) { + } else if (!(par instanceof Boolean)) { throw new IllegalFormatConversionException('[', par.getClass()); } boolean res = (Boolean) par; - if(res) { + if (res) { fmt.doFormatString(clauses.get(0), sb, formatParams); } else { formatParams.right(); } } else { int res; - if(arrParams.length() >= 1) { + if (arrParams.length() >= 1) { res = arrParams.getInt(0, "conditional choice", '['); } else { - if(par == null) { + if (par == null) { throw new IllegalArgumentException("No parameter provided for [ directive."); - } else if(!(par instanceof Number)) { + } else if (!(par instanceof Number)) { throw new IllegalFormatConversionException('[', par.getClass()); } res = ((Number) par).intValue(); @@ -108,8 +114,9 @@ public class ConditionalDirective implements Directive { formatParams.right(); } - if(res < 0 || res > clauses.size()) { - if(defClause != null) fmt.doFormatString(defClause, sb, formatParams); + if (res < 0 || res > clauses.size()) { + if (defClause != null) + fmt.doFormatString(defClause, sb, formatParams); } else { fmt.doFormatString(clauses.get(res), sb, formatParams); } diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/EscapeDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/EscapeDirective.java index ba1acf5..ec24405 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/EscapeDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/EscapeDirective.java @@ -8,6 +8,11 @@ import bjc.utils.ioutils.format.EscapeException; import java.util.regex.Matcher; +/** + * Implementation for the ^ directive. + * @author student + * + */ public class EscapeDirective implements Directive { @Override diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/FreshlineDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/FreshlineDirective.java index 8a0457a..542a5d1 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/FreshlineDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/FreshlineDirective.java @@ -7,6 +7,11 @@ import bjc.utils.ioutils.format.CLParameters; import java.util.regex.Matcher; +/** + * Implement the & directive. + * @author student + * + */ public class FreshlineDirective implements Directive { @Override diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/GeneralNumberDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/GeneralNumberDirective.java index 3c825ff..31e887b 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/GeneralNumberDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/GeneralNumberDirective.java @@ -4,40 +4,45 @@ import bjc.utils.ioutils.format.CLModifiers; import bjc.utils.ioutils.format.CLParameters; import bjc.utils.math.NumberUtils; +/** + * Implementation skeleton for number directives. + * + * @author student + * + */ public abstract class GeneralNumberDirective implements Directive { - protected static void handleNumberDirective(StringBuffer buff, CLModifiers mods, CLParameters params, - int argidx, long val, int radix) { + protected static void handleNumberDirective(StringBuffer buff, CLModifiers mods, CLParameters params, int argidx, + long val, int radix) { /* - * Initialize the two padding related parameters, and then fill - * them in from the directive parameters if they are present. + * Initialize the two padding related parameters, and then fill them in from the + * directive parameters if they are present. */ int mincol = 0; char padchar = ' '; - if(params.length() >= (argidx + 2)) { + if (params.length() >= (argidx + 2)) { mincol = params.getIntDefault(argidx + 1, "minimum column count", 'R', 0); } - if(params.length() >= (argidx + 3)) { + if (params.length() >= (argidx + 3)) { padchar = params.getCharDefault(argidx + 2, "padding character", 'R', ' '); } String res; - if(mods.colonMod) { + if (mods.colonMod) { /* - * We're doing commas, so check if the two comma-related - * parameters were supplied. + * We're doing commas, so check if the two comma-related parameters were + * supplied. */ int commaInterval = 0; char commaChar = ','; - if(params.length() >= (argidx + 3)) { + if (params.length() >= (argidx + 3)) { commaChar = params.getCharDefault((argidx + 3), "comma character", 'R', ' '); } - if(params.length() >= (argidx + 4)) { + if (params.length() >= (argidx + 4)) { commaInterval = params.getIntDefault((argidx + 4), "comma interval", 'R', 0); } - res = NumberUtils.toCommaString(val, mincol, padchar, commaInterval, commaChar, mods.atMod, - radix); + res = NumberUtils.toCommaString(val, mincol, padchar, commaInterval, commaChar, mods.atMod, radix); } else { res = NumberUtils.toNormalString(val, mincol, padchar, mods.atMod, radix); } diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/GotoDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/GotoDirective.java index 4dd24c3..ff06012 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/GotoDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/GotoDirective.java @@ -7,21 +7,27 @@ import bjc.utils.ioutils.format.CLParameters; import java.util.regex.Matcher; +/** + * Implement the * directive. + * + * @author student + * + */ public class GotoDirective implements Directive { @Override - public void format(StringBuffer sb, Object item, CLModifiers mods, CLParameters params, - Tape<Object> formatParams, Matcher dirMatcher, CLFormatter fmt) { - if(mods.colonMod) { + public void format(StringBuffer sb, Object item, CLModifiers mods, CLParameters params, Tape<Object> formatParams, + Matcher dirMatcher, CLFormatter fmt) { + if (mods.colonMod) { int num = 1; - if(params.length() >= 1) { + if (params.length() >= 1) { num = params.getIntDefault(0, "number of arguments backward", '*', 1); } formatParams.left(num); - } else if(mods.atMod) { + } else if (mods.atMod) { int num = 0; - if(params.length() >= 1) { + if (params.length() >= 1) { num = params.getIntDefault(0, "argument index", '*', 0); } @@ -29,7 +35,7 @@ public class GotoDirective implements Directive { formatParams.right(num); } else { int num = 1; - if(params.length() >= 1) { + if (params.length() >= 1) { num = params.getIntDefault(0, "number of arguments forward", '*', 1); } diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/IterationDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/IterationDirective.java index de093dd..f1adbb6 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/IterationDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/IterationDirective.java @@ -9,6 +9,12 @@ import bjc.utils.ioutils.format.CLParameters; import java.util.IllegalFormatConversionException; import java.util.regex.Matcher; +/** + * Implements the { directive. + * + * @author student + * + */ public class IterationDirective implements Directive { @Override @@ -18,15 +24,15 @@ public class IterationDirective implements Directive { StringBuffer condBody = new StringBuffer(); - while(dirMatcher.find()) { + while (dirMatcher.find()) { /* Process a list of clauses. */ String dirName = dirMatcher.group("name"); - if(dirName != null) { + if (dirName != null) { /* Append everything up to this directive. */ dirMatcher.appendReplacement(condBody, ""); - if(dirName.equals("}")) { + if (dirName.equals("}")) { /* End the iteration. */ break; } @@ -39,15 +45,15 @@ public class IterationDirective implements Directive { String frmt = condBody.toString(); Object iter = item; - if(frmt.equals("")) { + if (frmt.equals("")) { /* Grab an argument. */ - if(!(item instanceof String)) { + if (!(item instanceof String)) { throw new IllegalFormatConversionException('{', String.class); } frmt = (String) item; - if(!tParams.right()) { + if (!tParams.right()) { throw new IllegalArgumentException("Not enough parameters to '{' directive"); } @@ -56,18 +62,19 @@ public class IterationDirective implements Directive { int maxItr = Integer.MAX_VALUE; - if(arrParams.length() > 0) { + if (arrParams.length() > 0) { maxItr = arrParams.getInt(0, "maximum iterations", '{'); } int numItr = 0; - if(mods.atMod && mods.colonMod) { + if (mods.atMod && mods.colonMod) { do { - if(numItr > maxItr) break; + if (numItr > maxItr) + break; numItr += 1; - if(!(iter instanceof Iterable<?>)) { + if (!(iter instanceof Iterable<?>)) { throw new IllegalFormatConversionException('{', iter.getClass()); } @@ -78,27 +85,29 @@ public class IterationDirective implements Directive { fmt.doFormatString(frmt, sb, nParams); iter = tParams.right(); - } while(tParams.position() < tParams.size()); - } else if(mods.atMod) { - while(tParams.position() < tParams.size()) { - if(numItr > maxItr) break; + } while (tParams.position() < tParams.size()); + } else if (mods.atMod) { + while (tParams.position() < tParams.size()) { + if (numItr > maxItr) + break; numItr += 1; fmt.doFormatString(frmt, sb, tParams); } - } else if(mods.colonMod) { - if(!(item instanceof Iterable<?>)) { + } else if (mods.colonMod) { + if (!(item instanceof Iterable<?>)) { throw new IllegalFormatConversionException('{', item.getClass()); } @SuppressWarnings("unchecked") Iterable<Object> itr = (Iterable<Object>) item; - for(Object obj : itr) { - if(numItr > maxItr) break; + for (Object obj : itr) { + if (numItr > maxItr) + break; numItr += 1; - if(!(obj instanceof Iterable<?>)) { + if (!(obj instanceof Iterable<?>)) { throw new IllegalFormatConversionException('{', obj.getClass()); } @@ -109,7 +118,7 @@ public class IterationDirective implements Directive { fmt.doFormatString(frmt, sb, nParams); } } else { - if(!(item instanceof Iterable<?>)) { + if (!(item instanceof Iterable<?>)) { throw new IllegalFormatConversionException('{', item.getClass()); } @@ -118,8 +127,9 @@ public class IterationDirective implements Directive { Tape<Object> nParams = new SingleTape<>(itr); - while(nParams.position() < nParams.size()) { - if(numItr > maxItr) break; + while (nParams.position() < nParams.size()) { + if (numItr > maxItr) + break; numItr += 1; fmt.doFormatString(frmt, sb, nParams); diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/LiteralDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/LiteralDirective.java index e77ab35..5787590 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/LiteralDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/LiteralDirective.java @@ -7,11 +7,25 @@ import bjc.utils.ioutils.format.CLParameters; import java.util.regex.Matcher; +/** + * Implements directives that create a literal string. + * + * @author student + * + */ public class LiteralDirective implements Directive { private char directive; private String lit; + /** + * Create a new literal directive. + * + * @param lit + * The string for the directive. + * @param directive + * The character for the directive. + */ public LiteralDirective(String lit, char directive) { this.directive = directive; this.lit = lit; @@ -22,11 +36,11 @@ public class LiteralDirective implements Directive { Matcher dirMatcher, CLFormatter fmt) { int nTimes = 1; - if(params.length() >= 1) { + if (params.length() >= 1) { nTimes = params.getInt(0, "occurance count", directive); } - for(int i = 0; i < nTimes; i++) { + for (int i = 0; i < nTimes; i++) { buff.append(lit); } diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/NumberDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/NumberDirective.java index b65e3cd..e49eda7 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/NumberDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/NumberDirective.java @@ -8,8 +8,22 @@ import bjc.utils.ioutils.format.CLFormatter; import bjc.utils.ioutils.format.CLModifiers; import bjc.utils.ioutils.format.CLParameters; +/** + * Implements radix based numbers. + * + * @author student + * + */ public class NumberDirective extends GeneralNumberDirective { + /** + * Create a new radix based number directive. + * + * @param argidx + * The argument offset to use. + * @param radix + * The radix of the number to use. + */ public NumberDirective(int argidx, int radix) { this.argidx = argidx; this.radix = radix; @@ -23,7 +37,7 @@ public class NumberDirective extends GeneralNumberDirective { Matcher dirMatcher, CLFormatter fmt) { CLFormatter.checkItem(item, 'B'); - if(!(item instanceof Number)) { + if (!(item instanceof Number)) { throw new IllegalFormatConversionException('B', item.getClass()); } diff --git a/base/src/main/java/bjc/utils/ioutils/format/directives/RadixDirective.java b/base/src/main/java/bjc/utils/ioutils/format/directives/RadixDirective.java index 428c613..822962f 100644 --- a/base/src/main/java/bjc/utils/ioutils/format/directives/RadixDirective.java +++ b/base/src/main/java/bjc/utils/ioutils/format/directives/RadixDirective.java @@ -9,6 +9,12 @@ import bjc.utils.math.NumberUtils; import java.util.IllegalFormatConversionException; import java.util.regex.Matcher; +/** + * Generalized radix directive. + * + * @author student + * + */ public class RadixDirective extends GeneralNumberDirective { @Override @@ -16,7 +22,7 @@ public class RadixDirective extends GeneralNumberDirective { Matcher dirMatcher, CLFormatter fmt) { CLFormatter.checkItem(arg, 'R'); - if(!(arg instanceof Number)) { + if (!(arg instanceof Number)) { throw new IllegalFormatConversionException('R', arg.getClass()); } @@ -25,17 +31,17 @@ public class RadixDirective extends GeneralNumberDirective { */ long val = ((Number) arg).longValue(); - if(params.length() == 0) { - if(mods.atMod) { + if (params.length() == 0) { + if (mods.atMod) { buff.append(NumberUtils.toRoman(val, mods.colonMod)); - } else if(mods.colonMod) { + } else if (mods.colonMod) { buff.append(NumberUtils.toOrdinal(val)); } else { buff.append(NumberUtils.toCardinal(val)); } } else { - if(params.length() < 1) throw new IllegalArgumentException( - "R directive requires at least one parameter, the radix"); + if (params.length() < 1) + throw new IllegalArgumentException("R directive requires at least one parameter, the radix"); int radix = params.getInt(0, "radix", 'R'); |
