parseDefQuotedString function
Implementation
dynamic parseDefQuotedString(
ParsingContext context,
int level
)
{
var firstLineIndex = context.lineIndex + 1;
var string = '';
var quote = '';
var escapedQuote = '';
while ( context.lineIndex < context.lineArray.length )
{
var DefLine( :line, :lineSpaceCount )
= parseDefLine( context, level );
if ( context.lineIndex == firstLineIndex )
{
quote = line[ 0 ];
line = line.substring( 1 );
escapedQuote = '\\' + quote;
}
var tokenArray = getTokenArray( line );
var lastToken = tokenArray.isNotEmpty ? tokenArray.last : '';
if ( lastToken == '\\' )
{
tokenArray.removeLast();
string += getUnescapedText( tokenArray );
}
else if ( lastToken.endsWith( quote )
&& lastToken != escapedQuote )
{
tokenArray[ tokenArray.length - 1 ] = lastToken.substring( 0, lastToken.length - 1 );
string += getUnescapedText( tokenArray );
if ( quote == context.stringProcessingQuote
&& context.processQuotedStringFunction != null )
{
return context.processQuotedStringFunction!( string, context, level );
}
else
{
return string;
}
}
else
{
if ( lastToken.endsWith( '¨' )
&& lastToken != '\\¨' )
{
tokenArray[ tokenArray.length - 1 ] = lastToken.substring( 0, lastToken.length - 1 );
}
string += getUnescapedText( tokenArray ) + '\n';
}
}
throwParsingError( 'Invalid DEF quoted string', context, level );
return '';
}