/**
  * Outputs the object as plain text.
  * @param EXCEPTION_SIGNATURE $obj
  * @access private
  * @abstract
  */
 protected function _display_as_plain_text($obj)
 {
     $page_name = $obj->page_name;
     $dynamic_class_name = $obj->dynamic_class_name;
     $class_name = $obj->class_name;
     $application_description = $obj->application_description;
     $routine_name = $obj->routine_name;
     $error_message = $obj->message;
     $browser = $this->env->browser();
     echo $this->par($error_message);
     echo $this->sep();
     $table = new TEXT_TABLE_RENDERER($this);
     $table->add_item('Page', $page_name);
     if ($application_description) {
         $table->add_item('Application', $application_description);
     }
     if ($routine_name) {
         if ($dynamic_class_name) {
             if ($dynamic_class_name != $class_name) {
                 $table->add_item('Class', "{$dynamic_class_name} ({$class_name})");
             } else {
                 $table->add_item('Class', $class_name);
             }
         } else {
             $table->add_item('Class', $class_name);
         }
         if ($class_name == $routine_name) {
             $table->add_item('Routine', '<constructor>');
         } else {
             $table->add_item('Routine', $routine_name);
         }
     } else {
         $table->add_item('Scope', 'global');
     }
     $table->add_separator();
     $table->add_item('Server', $this->env->server_info());
     $table->add_item('Library', 'WebCore ' . $this->env->version);
     /** @var $options EXCEPTION_RENDERER_OPTIONS */
     $options = $this->_options;
     if ($options->include_browser_info) {
         $table->add_separator();
         $table->add_item('Browser', $browser->description_as_plain_text());
         $table->add_item('OS', $browser->system_id());
         $table->add_item('User agent', $browser->user_agent_string);
     }
     $table->display();
     echo $this->line();
     if ($options->include_page_data) {
         $this->_show_array_as_text('Post', $obj->variables_for(Var_type_post));
         $this->_show_array_as_text('URL', $obj->variables_for(Var_type_get));
         $this->_show_array_as_text('Cookie', $obj->variables_for(Var_type_cookie));
         $this->_show_array_as_text('Uploads', $obj->variables_for(Var_type_upload));
     }
 }
 /**
  * Outputs the object as plain text.
  * @param BROWSER $obj
  * @access private
  */
 protected function _display_as_plain_text($obj)
 {
     $browser = $obj;
     if ($this->show_user_agent) {
         echo $this->par($browser->user_agent_string);
     }
     $table = new TEXT_TABLE_RENDERER($this);
     $table->add_item('Application', $browser->name() . ' ' . $browser->version());
     $gd = $browser->gecko_date();
     if ($browser->is(Browser_gecko) && $gd->is_valid()) {
         $t = $gd->formatter();
         $t->type = Date_time_format_short_date;
         $table->add_item('Renderer', $browser->renderer_name() . ' ' . $browser->renderer_version() . ' (Released ' . $gd->format($t) . ')');
     } else {
         $table->add_item('Renderer', $browser->renderer_name() . ' ' . $browser->renderer_version());
     }
     $table->add_item('Operating System', $browser->system_id());
     $table->add_item('JavaScript', $this->_boolean_as_text($browser->supports(Browser_JavaScript)));
     $table->add_item('CSS', $this->_boolean_as_text($browser->supports(Browser_CSS_1), '1.0') . ' ' . $this->_boolean_as_text($browser->supports(Browser_CSS_2), '2.0') . ' ' . $this->_boolean_as_text($browser->supports(Browser_CSS_2_1), '2.1') . ' ');
     $table->add_item('DOM', $this->_boolean_as_text($browser->supports(Browser_DOM_1), '1.0') . ' ' . $this->_boolean_as_text($browser->supports(Browser_DOM_2), '2.0'));
     $table->add_item('Alpha PNG', $this->_boolean_as_text($browser->supports(Browser_alpha_PNG)));
     $table->add_item('Cookies', $this->_boolean_as_text($browser->supports(Browser_cookie)));
     $table->display();
 }