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));
 }