summaryrefslogtreecommitdiff
path: root/clformat
diff options
context:
space:
mode:
Diffstat (limited to 'clformat')
-rw-r--r--clformat/data/clformat.sprop2
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/AestheticDirective.java39
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/directives/DecimalDirective.java7
-rw-r--r--clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java10
4 files changed, 46 insertions, 12 deletions
diff --git a/clformat/data/clformat.sprop b/clformat/data/clformat.sprop
index 2025c25..1d31de6 100644
--- a/clformat/data/clformat.sprop
+++ b/clformat/data/clformat.sprop
@@ -45,7 +45,7 @@ clFormatModifier (?:[@$:*]+)
## 1) A single, non-whitespace, non-/ character, optionally preceded by any
## number of grave characters.
## 2) A name enclosed in /'s
-clFormatName (?:(?<name>`*?[\S&&[^/]])|(?:/(?<funcname>[\S&&[^/]]+)/))
+clFormatName (?:(?<name>`*[\S&&[^/]])|(?:/(?<funcname>[\S&&[^/]]+)/))
#################################################
# Generic format strings for regular expressions.
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));
}