in util/src/main/java/com/epam/deltix/util/text/table/AlignedNoWhitespacesTable.java [222:296]
private ANWRow parse(CharSequence line) {
for (int i = 0; i < values.length; ++i) {
final CharSubSequence value = values[i];
value.delegate = line;
final ANWColumn col = columns[i];
value.start = col.nameStart;
value.end = col.nameEnd;
// start of the value
if (Character.isWhitespace(line.charAt(value.start))) {
final int last = Math.min(line.length() - 1, col.nameEnd);
for (int ii = value.start + 1; ii <= last; ++ii) {
value.start = ii;
if (!Character.isWhitespace(line.charAt(ii))) {
break;
}
}
} else {
final int firstPossible = (i == 0) ? 0 : columns[i - 1].nameEnd + 1;
for (int ii = value.start - 1; ii >= firstPossible; --ii) {
if (Character.isWhitespace(line.charAt(ii))) {
break;
}
value.start = ii;
}
}
// end of the value
if (i == values.length - 1) {
for (int ii = line.length() - 1; ii >= value.start; --ii) {
value.end = ii;
if (!Character.isWhitespace(line.charAt(ii))) {
break;
}
}
} else if (Character.isWhitespace(line.charAt(value.end))) {
for (int ii = value.end - 1; ii >= value.start; --ii) {
value.end = ii;
if (!Character.isWhitespace(line.charAt(ii))) {
break;
}
}
} else {
for (int ii = value.end + 1; ii <= columns[i + 1].nameStart - 1; ++ii) {
if (Character.isWhitespace(line.charAt(ii))) {
break;
}
value.end = ii;
}
}
++value.end; // CharSubSequence requires 'end' to be set to the index next after the the last char }
}
return this;
}