From 92ec9adfcb115fe86d5ba27fcc089db027374d6a Mon Sep 17 00:00:00 2001 From: student Date: Fri, 9 Feb 2018 11:52:03 -0500 Subject: Work on CL format strings --- .../utils/ioutils/format/AestheticDirective.java | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java (limited to 'base/src/main/java/bjc/utils/ioutils/format/AestheticDirective.java') 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 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(); + } + +} -- cgit v1.2.3