std_print_q

From WeBWorK_wiki
Jump to navigation Jump to search


std_print_q -- plugin method used in "List.pm" type objects

Description

This is a method ( i.e. a subroutine whose first argument is a reference to a parent object ) which defines how the list of questions is printed from a [/docs/docs/pglanguage/pod/list.html List.pm] object.It formats a string containing the questions vertically in an ordered list, indexed by numbers with each question preceeded by an answer blank. The string is returned.

Syntax

std_print_q( $self, @array)

Params

$self is a reference to the parent list object and can be used to reference preferences stored there.
@array is the list of questions to be displayed.

Returns

A string, containing the questions, properly formatted.

Examples


$ml = new_match_list();
$ml->rf_print_a(~~&std_print_a); # set the answer format to use the std_print_a method
$ml->rf_print_q(~~&std_print_q); # set the question format to use the std_print_q method
$ml->ans_rule_len(20); # make the answer rules 20 characters long for each question. (Default is 4).
# enter three questions and their answers
$ml->qa( "What color is a rose?",
"Red",
"What color is the sky?",
"Blue",
"What color is the sea?",
"Green"
);
# choose two of these questions, ordered at random,
# which will be printed in the problem.
$ml->choose(2);
BEGIN_TEXT

Match the answers below with these questions:$BR
\{$ml->print_q\} Print the questions$BR
Answers:
\{$ml->print_a \} Print the answers


END_TEXT

ANS( $ml->ra_correct_ans() ); #submit the correct answers

Notes

This method is defined in [/docs/docs/pglanguage/pod/pgchoicemacros.html PGchoicemacros.pl]. Note that reversing

$ml->rf_print_a(~~&std_print_q);

$ml->rf_print_q(~~&std_print_a);



would result in the list of questions being labeled with letters and the list of answers being labeled with numbers.
The code in these two methods is a good basis for writing subroutines which provide different formats for listing questions or answers.