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/CharacterDirective.java | |
| parent | 92ec9adfcb115fe86d5ba27fcc089db027374d6a (diff) | |
Update and refactor CL formatting
Diffstat (limited to 'base/src/main/java/bjc/utils/ioutils/format/CharacterDirective.java')
| -rw-r--r-- | base/src/main/java/bjc/utils/ioutils/format/CharacterDirective.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/ioutils/format/CharacterDirective.java b/base/src/main/java/bjc/utils/ioutils/format/CharacterDirective.java new file mode 100644 index 0000000..7ff74bb --- /dev/null +++ b/base/src/main/java/bjc/utils/ioutils/format/CharacterDirective.java @@ -0,0 +1,34 @@ +package bjc.utils.ioutils.format; + +import bjc.utils.esodata.Tape; + +import java.util.IllegalFormatConversionException; +import java.util.regex.Matcher; + +class CharacterDirective implements Directive { + + @Override + public void format(StringBuffer buff, Object parm, CLModifiers mods, CLParameters arrParams, + Tape<Object> tParams, Matcher dirMatcher, CLFormatter fmt) { + CLFormatter.checkItem(parm, 'C'); + + if(!(parm instanceof Character)) { + throw new IllegalFormatConversionException('C', parm.getClass()); + } + + char ch = (Character) parm; + int codepoint = ch; + + if(mods.colonMod) { + /* + * Colon mod means print Unicode character name. + */ + buff.append(Character.getName(codepoint)); + } else { + buff.append(ch); + } + + tParams.right(); + } + +} |
