Custom Robust eval Function
Note: This function can only be used in a Trusted Macro
This user defined function redefines the standard eval() function, allowing it to be given a number, empty string, or JSON object/array and not throw an exception.
Macros
Place both of these macros on the same library token.
1.3b56+
onCampaignLoad
[ defineFunction( "eval", "evalFunction@this", 1, 0 ) ]
evalFunction
// Error handling
[ assert( argCount() >= 1, "<b>eval()</b> - Invalid number of parameters <i>0</i>, expected at least <i>1</i> parameter.", 0 ) ]
// Initialise variables
[ Expression = arg( argCount()-1 ) ]
[ CancelEval = 0 ]
[ TypeTest = json.type( Expression ) ]
// Handle all numbers
[ if( isNumber( Expression ) == 1 ), code:
{
[ CancelEval = 1 ]
} ]
// Handle empty strings
[ if( TypeTest == "UNKNOWN" ), code:
{
[ if( Expression == "" ), code:
{
[ CancelEval = 1 ]
} ]
} ]
// Handle JSON types
[ if( TypeTest == "ARRAY" || TypeTest == "OBJECT" ), code:
{
[ CancelEval = 1 ]
} ]
// Evaluate or cancel, then return
[ if( CancelEval == 1 ), code:
{
[ macro.return = Expression ]
};{
[ macro.return = oldFunction( Expression ) ]
} ]