protected function get_choices() { if (empty($this->parameters['ddl_values'])) { return array(); } $values = stack_utils::list_to_array('[' . trim($this->parameters['ddl_values']) . ']', false); if (empty($values)) { return array(); } $choices = array('' => stack_string('notanswered')); foreach ($values as $value) { $choices[$value] = $value; } return $choices; }
public function test_list_to_array() { // Do not recurse over lists. $a = array(); $strin = ''; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $a = array(); $strin = '[]'; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $a = array('1'); $strin = '[1]'; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $a = array('1', '2'); $strin = '[1,2]'; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $strin = '[x^2, sin(x)]'; $a = array('x^2', ' sin(x)'); $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $a = array('1', 'x+y'); $strin = '[1,x+y]'; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $a = array('[1,2]'); $strin = '[[1,2]]'; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $strin = '[[1,2,3], {x^2,x^3}]'; $a = array('[1,2,3]', ' {x^2,x^3}'); $this->assertEquals($a, stack_utils::list_to_array($strin, false)); $a = array('1', '1/sum([1,3])', 'matrix([1],[2])'); $strin = '[1,1/sum([1,3]),matrix([1],[2])]'; $this->assertEquals($a, stack_utils::list_to_array($strin, false)); // Recurse over lists. $strin = '[[1,2,3], {x^2,x^3}]'; $a = array(array('1', '2', '3'), ' {x^2,x^3}'); $this->assertEquals($a, stack_utils::list_to_array($strin, true)); }
/** * @return string the teacher's answer, displayed to the student in the general feedback. */ public function get_teacher_answer_display($value, $display) { $values = stack_utils::list_to_array($value, false); $values = array_map(function ($ex) { return '<code>' . $ex . '</code>'; }, $values); $value = "<br/>" . implode("<br/>", $values); return stack_string('teacheranswershow', array('value' => $value, 'display' => $display)); }