parseDefValue function
Implementation
dynamic parseDefValue(
ParsingContext context,
int level
)
{
if ( context.lineIndex < context.lineArray.length )
{
var DefLine( :line, :lineSpaceCount )
= parseDefLine( context, level );
if ( line == '[' )
{
return parseDefArray( context, level );
}
else if ( line == '{' )
{
return parseDefObject( context, level );
}
else if ( line == '(' )
{
return parseDefMap( context, level );
}
else if ( line.startsWith( '\'' )
|| line.startsWith( '"' )
|| line.startsWith( '`' )
|| line.startsWith( 'ยด' ) )
{
context.lineIndex--;
return parseDefQuotedString( context, level );
}
else
{
var tokenArray = getTokenArray( line );
if ( tokenArray.length == 1
&& tokenArray[ 0 ] == line.trim() )
{
if ( line == 'undefined' )
{
return undefined;
}
else if ( line == 'null' )
{
return null;
}
else if ( line == 'false' )
{
return false;
}
else if ( line == 'true' )
{
return true;
}
else if ( line == 'NaN' )
{
return double.nan;
}
else if ( line == '-Infinity' )
{
return double.negativeInfinity;
}
else if ( line == 'Infinity' )
{
return double.infinity;
}
else if ( _hexadecimalIntegerExpression.hasMatch( line ) ||
_decimalRealExpression.hasMatch( line ) ||
_exponentialDecimalRealExpression.hasMatch( line ) )
{
num? number = num.tryParse( line );
if ( number != null
&& !number.isNaN )
{
return number;
}
}
}
context.lineIndex--;
return parseDefUnquotedString( context, level );
}
}
else
{
throwParsingError( 'Invalid DEF value', context, level );
}
}