package bjc.utils.ioutils.format; import java.util.regex.Matcher; import bjc.utils.esodata.Tape; class AestheticDirective implements Directive { @Override public void format(StringBuffer sb, Object item, CLModifiers mods, CLParameters params, Tape tParams, Matcher dirMatcher, CLFormatter fmt) { CLFormatter.checkItem(item, 'A'); int mincol = 0, colinc = 1, minpad = 0; char padchar = ' '; if(params.length() > 1) { mincol = params.getIntDefault(0, "minimum column count", 'A', 0); } if(params.length() < 4) { throw new IllegalArgumentException( "Must provide either zero, one or four arguments to A directive"); } colinc = params.getIntDefault(1, "padding increment", 'A', 1); minpad = params.getIntDefault(2, "minimum amount of padding", 'A', 0); padchar = params.getCharDefault(3, "padding character", 'A', ' '); StringBuilder work = new StringBuilder(); if(mods.atMod) { for(int i = 0; i < minpad; i++) { work.append(padchar); } for(int i = work.length(); i < mincol; i++) { for(int k = 0; k < colinc; k++) { work.append(padchar); } } } work.append(item.toString()); if(!mods.atMod) { for(int i = 0; i < minpad; i++) { work.append(padchar); } for(int i = work.length(); i < mincol; i++) { for(int k = 0; k < colinc; k++) { work.append(padchar); } } } tParams.right(); } }