package org.python.core.stringlib;
/**
* Parsed PEP-3101 format specification of a single field.
*/
public final class InternalFormatSpec {
public char fill_char;
public char align;
public boolean alternate;
public char sign;
public int width = -1;
public int precision = -1;
public char type;
public String pad(String value, char defaultAlign, int leaveWidth) {
int remaining = width - value.length() - leaveWidth;
if (remaining <= 0) {
return value;
}
StringBuilder result = new StringBuilder();
int leading = remaining;
int useAlign = align;
if (useAlign == 0) {
useAlign = defaultAlign;
}
if (useAlign == '^') {
leading = remaining/2;
} else if (useAlign == '<') {
leading = 0;
}
char fill = fill_char != 0 ? fill_char : ' ';
for (int i = 0; i < leading; i++) {
result.append(fill);
}
result.append(value);
for (int i = 0; i < remaining - leading; i++) {
result.append(fill);
}
return result.toString();
}
}