summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java
diff options
context:
space:
mode:
authorstudent <student@69.161.224.52>2018-02-09 11:52:03 -0500
committerstudent <student@69.161.224.52>2018-02-09 11:52:03 -0500
commit92ec9adfcb115fe86d5ba27fcc089db027374d6a (patch)
tree3ebbce2d97c9fd9fd1ce29959210a6bf2fc8f5dd /base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java
parent46c1a3e1e7cf21f3c63dcb028fd1807e870dfbef (diff)
Work on CL format strings
Diffstat (limited to 'base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java')
-rw-r--r--base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java b/base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java
new file mode 100644
index 0000000..869834b
--- /dev/null
+++ b/base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java
@@ -0,0 +1,61 @@
+package bjc.utils.ioutils.format;
+
+import java.util.regex.Matcher;
+
+import bjc.utils.esodata.Tape;
+
+public class AestheticDirective implements Directive {
+
+ @Override
+ public void format(StringBuffer sb, Object item, CLModifiers mods, CLParameters params, Tape<Object> tParams,
+ Matcher dirMatcher) {
+ CLFormatter.checkItem(item, 'A');
+
+ int mincol = 0, colinc = 1, minpad = 0;
+ char padchar = ' ';
+
+ 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");
+ }
+
+ colinc = params.getIntDefault(1, "padding increment", 'A', 1);
+ minpad = params.getIntDefault(2, "minimum amount of padding", 'A', 0);
+ padchar = params.getCharDefault(3, "padding character", 'A', ' ');
+
+ StringBuilder work = new StringBuilder();
+
+ 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++) {
+ work.append(padchar);
+ }
+ }
+ }
+
+ work.append(item.toString());
+
+ 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++) {
+ work.append(padchar);
+ }
+ }
+ }
+
+ tParams.right();
+ }
+
+}