diff options
| author | Ben Culkin <scorpress@gmail.com> | 2020-12-16 20:44:37 -0500 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2020-12-16 20:44:37 -0500 |
| commit | d7b2e924d762e66b3f2be76242ee761e90113a8c (patch) | |
| tree | 6b2edf9731e7cce7a046ed9ebe7fafd36b6aff02 /clformat/src | |
| parent | 416c8a90cceb37c3bf8c8560d285b4be8e6d1cc6 (diff) | |
| parent | 64bd87e567a7dbfa4f2c745f4af6acab134cc746 (diff) | |
Merge branch 'master' of git@github.com:bculkin2442/bjc-utils2
Diffstat (limited to 'clformat/src')
4 files changed, 46 insertions, 12 deletions
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 c55fda4..276356c 100644 --- a/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java +++ b/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java @@ -357,7 +357,7 @@ public class CLFormatter { * implement floating point directives. */ throw new IllegalArgumentException( - "Floating-point directives aren't implemented yet."); + "For now, floating point directives are implemented via the `D directive. Use that instead"); case "W": /* * @TODO diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java index 856589c..3dfb45b 100644 --- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java +++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java @@ -83,23 +83,50 @@ class AestheticEdict implements Edict { StringBuilder work = new StringBuilder(); - char padchar = padcharPar.asChar(itemTape, "padding character", "A", ' '); + char padchar = padcharPar.asChar(itemTape, + "padding character", "A", ' '); - int mincol = mincolPar.asInt(itemTape, "minimum column count", "A", 0); - int colinc = colincPar.asInt(itemTape, "padding increment", "A", 1); - int minpad = minpadPar.asInt(itemTape, "minumum amount of padding", "A", 0); + int mincol = mincolPar.asInt(itemTape, + "minimum column count", "A", 0); + int colinc = colincPar.asInt(itemTape, + "padding increment", "A", 1); + int minpad = minpadPar.asInt(itemTape, + "minumum amount of padding", "A", 0); - if (padBefore) doPadding(work, padchar, mincol, colinc, minpad); + // if (padBefore) doPadding(work, padchar, mincol, colinc, minpad); work.append(itemString); - if (!padBefore) doPadding(work, padchar, mincol, colinc, minpad); + // if (!padBefore) doPadding(work, padchar, mincol, colinc, minpad); + + String padding = createPadding(work, padchar, mincol, colinc, minpad); + if (padBefore) work.insert(0, padding); + else work.append(padding); formCTX.writer.write(work.toString()); itemTape.right(); } + private String createPadding( + StringBuilder work, + char padchar, + int mincol, + int colinc, + int minpad) + { + StringBuilder padding = new StringBuilder(); + for (int i = 0; i < minpad; i++) padding.append(padchar); + + for (int i = work.length(); i < mincol; i++) { + for (int k = 0; k < colinc; k++) { + padding.append(padchar); + } + } + + return padding.toString(); + } + private void doPadding(StringBuilder work, char padchar, int mincol, int colinc, int minpad) { for (int i = 0; i < minpad; i++) work.append(padchar); diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/directives/DecimalDirective.java b/clformat/src/main/java/bjc/utils/ioutils/format/directives/DecimalDirective.java index 8c16917..0d1d0df 100644 --- a/clformat/src/main/java/bjc/utils/ioutils/format/directives/DecimalDirective.java +++ b/clformat/src/main/java/bjc/utils/ioutils/format/directives/DecimalDirective.java @@ -80,11 +80,12 @@ class DecimalEdict implements Edict { } } - StringBuffer work = new StringBuffer(); + //StringBuffer work = new StringBuffer(); - numForm.format(itemTape.item(), work, ZERO_FIELD); + //numForm.format(itemTape.item(), work, ZERO_FIELD); - formCTX.writer.write(work.toString()); + // formCTX.writer.write(work.toString()); + formCTX.writer.write(numForm.format(itemTape.item())); itemTape.right(); } } diff --git a/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java b/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java index 888ddcf..629e802 100644 --- a/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java +++ b/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java @@ -125,7 +125,8 @@ public class CLFormatterTest { assertFormat("foo", "~A", "foo"); assertFormat("foobar ", "~7A", "foobar"); assertFormat(" foobar", "~7@A", "foobar"); - assertFormat(" foobar", "~#mincol;8,#colinc;2,#minpad;1,#padchar;' @A", + assertFormat(" foobar", + "~#mincol;8,#colinc;2,#minpad;1,#padchar;' @A", "foobar"); } @@ -146,9 +147,14 @@ public class CLFormatterTest { @Test public void testRandomCases() { // Random test cases - assertEquals("3 dogs are here", format("~D dog~:[s are~; is~] here", 3, 3 == 1)); + assertEquals("3 dogs are here", + format("~D dog~:[s are~; is~] here", 3, 3 == 1)); } + /*private void assertFormat(String msg, String res, String fomt, Object... params) { + assertEquals(msg, res, format(fomt, params)); + }*/ + private void assertFormat(String res, String fomt, Object... params) { assertEquals(res, format(fomt, params)); } |
