diff options
| author | bjculkin <bjculkin@mix.wvu.edu> | 2018-02-10 00:00:07 -0500 |
|---|---|---|
| committer | bjculkin <bjculkin@mix.wvu.edu> | 2018-02-10 00:00:07 -0500 |
| commit | 49cd96c4c5bbb883c0c5c10d7916ad2e93ff2df0 (patch) | |
| tree | 024eeeb80dd000e7b4cf6eaed094fef54ed38388 /base/src/main/java/bjc/utils/ioutils/format/RadixDirective.java | |
| parent | 92ec9adfcb115fe86d5ba27fcc089db027374d6a (diff) | |
Update and refactor CL formatting
Diffstat (limited to 'base/src/main/java/bjc/utils/ioutils/format/RadixDirective.java')
| -rw-r--r-- | base/src/main/java/bjc/utils/ioutils/format/RadixDirective.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/ioutils/format/RadixDirective.java b/base/src/main/java/bjc/utils/ioutils/format/RadixDirective.java new file mode 100644 index 0000000..3742582 --- /dev/null +++ b/base/src/main/java/bjc/utils/ioutils/format/RadixDirective.java @@ -0,0 +1,44 @@ +package bjc.utils.ioutils.format; + +import bjc.utils.esodata.Tape; +import bjc.utils.math.NumberUtils; + +import java.util.IllegalFormatConversionException; +import java.util.regex.Matcher; + +class RadixDirective extends GeneralNumberDirective { + + @Override + public void format(StringBuffer buff, Object arg, CLModifiers mods, CLParameters params, Tape<Object> tParams, + Matcher dirMatcher, CLFormatter fmt) { + CLFormatter.checkItem(arg, 'R'); + + if(!(arg instanceof Number)) { + throw new IllegalFormatConversionException('R', arg.getClass()); + } + + /* + * @TODO see if this is the way we want to do this. + */ + long val = ((Number) arg).longValue(); + + if(params.length() == 0) { + if(mods.atMod) { + buff.append(NumberUtils.toRoman(val, mods.colonMod)); + } else if(mods.colonMod) { + buff.append(NumberUtils.toOrdinal(val)); + } else { + buff.append(NumberUtils.toCardinal(val)); + } + } else { + if(params.length() < 1) throw new IllegalArgumentException( + "R directive requires at least one parameter, the radix"); + + int radix = params.getInt(0, "radix", 'R'); + + handleNumberDirective(buff, mods, params, 0, val, radix); + } + + tParams.right(); + } +} |
