private ANWRow parse()

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;
        }