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 --- .../bjc/utils/ioutils/format/NumberDirective.java | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 base/src/main/java/bjc/utils/ioutils/format/NumberDirective.java (limited to 'base/src/main/java/bjc/utils/ioutils/format/NumberDirective.java') diff --git a/base/src/main/java/bjc/utils/ioutils/format/NumberDirective.java b/base/src/main/java/bjc/utils/ioutils/format/NumberDirective.java new file mode 100644 index 0000000..d5d4b29 --- /dev/null +++ b/base/src/main/java/bjc/utils/ioutils/format/NumberDirective.java @@ -0,0 +1,46 @@ +package bjc.utils.ioutils.format; + +import java.util.regex.Matcher; + +import bjc.utils.esodata.Tape; +import bjc.utils.ioutils.NumberUtils; + +public class NumberDirective implements Directive { + + @Override + public void format(StringBuffer sb, Object item, CLModifiers mods, CLParameters params, Tape tParams, + Matcher dirMatcher) { + /* + * 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)) { + mincol = params.getIntDefault(argidx + 1, "minimum column count", 'R', 0); + } + if (params.length() > (argidx + 3)) { + padchar = params.getCharDefault(argidx + 2, "padding character", 'R', ' '); + } + + if (mods.colonMod) { + /* + * We're doing commas, so check if the two comma-related parameters were + * supplied. + */ + int commaInterval = 0; + char commaChar = ','; + if (params.length() > (argidx + 3)) { + commaChar = params.getCharDefault((argidx + 3), "comma character", 'R', ' '); + } + if (params.length() > (argidx + 4)) { + commaInterval = params.getIntDefault((argidx + 4), "comma interval", 'R', 0); + } + + NumberUtils.toCommaString(val, mincol, padchar, commaInterval, commaChar, mods.atMod, radix); + } else { + NumberUtils.toNormalString(val, mincol, padchar, mods.atMod, radix); + } + } + +} -- cgit v1.2.3