getProcessedMultilineText function

String getProcessedMultilineText(
  1. String text
)

Implementation

String getProcessedMultilineText(
    String text
    )
{
    int processedLineTagCount = processedLineTagArray.length;

    if ( processedLineTagCount > 0 )
    {
        List<String> lineArray = text.replaceAll( '\r', '' ).split( '\n' );
        int lineCount = lineArray.length;

        for ( int lineIndex = 0;
              lineIndex < lineCount;
              ++lineIndex )
        {
            String line = lineArray[ lineIndex ];

            while ( line.startsWith( '\n' ) )
            {
                line = line.substring( 1 );
            }

            for ( var processedLineTag in processedLineTagArray )
            {
                if ( line.startsWith( processedLineTag.name ) )
                {
                    if ( processedLineTag.innerDefinition == '' )
                    {
                        lineArray[ lineIndex ]
                            = processedLineTag.openingDefinition
                              + line.substring( processedLineTag.name.length )
                              + processedLineTag.closingDefinition;
                    }
                    else
                    {
                        int spaceCharacterIndex = line.indexOf( ' ', processedLineTag.name.length );

                        if ( spaceCharacterIndex >= 0 )
                        {
                            lineArray[ lineIndex ]
                                = processedLineTag.openingDefinition
                                  + line.substring( processedLineTag.name.length, spaceCharacterIndex )
                                  + processedLineTag.innerDefinition
                                  + line.substring( spaceCharacterIndex + 1 )
                                  + processedLineTag.closingDefinition;
                        }
                        else
                        {
                            lineArray[ lineIndex ]
                                = processedLineTag.openingDefinition
                                  + line.substring( processedLineTag.name.length )
                                  + processedLineTag.innerDefinition
                                  + processedLineTag.closingDefinition;
                        }
                    }

                    break;
                }
            }
        }

        text = lineArray.join( '\n' );
    }

    return getProcessedText( text );
}