From WeBWorK
Jump to: navigation, search

assign_option_aliases -- utility subroutine


This utility subroutine can be used within any subroutine, evaluator or filter which uses options. It provides a uniform way to alias option values. For example the domain of a function tested by fun_cmp can be specified either by limits => [0,5] (the principle option) or by domain => [0,5] . (domain is an alias for limits).


set_option_aliases($rh_options, %alias2option )


$rh_options -- reference to the hash containing the options received by the parent subroutine
%alias2option-- contains a list of possible aliases and the option they are assigned to:
 %alias2option = ( alias1 => option1, alias2 => option1, alias3 => option2 )


If the option itself is defined in the options received by the parent subroutine then any aliases which are also received are ignored. An assignment to the actual option has priority, after which the FIRST alias assigned to the option which is listed in the option hash received by the parent subroutine. (In other words, once an option receives a value, subsequent assignments through aliases are ignored.)


Nothing. But it modifies the contents pointed to by $rh_options.


from fun_cmp :

assign_option_aliases( \%opt,
'domain' => 'limits', # set the standard option 'limits' to the one specified as domain
'vars' => 'var', # set the standard option 'var' to the one specified as vars
'reltol' => 'relTol',
'param' => 'params',

set_default_options( \%opt,
'var' => $functVarDefault,
'params' => [],
'limits' => [[$functLLimitDefault, $functULimitDefault]],
'mode' => 'std',
'tolType' => (defined($opt{tol}) ) ? 'absolute' : 'relative',
'tol' => .01, # default mode should be relative, if the tol option is defined, the mode is absolute
'relTol' => $functRelPercentTolDefault,
'numPoints' => $functNumOfPoints,
'maxConstantOfIntegration' => $functMaxConstantOfIntegration,
'zeroLevel' => $functZeroLevelDefault,
'zeroLevelTol' => $functZeroLevelTolDefault,
'debug' => 0,


This subroutine must preceed set_default_options. (Otherwise all options will have SOME value, and this subroutine will have no affect.)

This subroutine is at the end of the macro file
follow us