original_string: public function render(renderable $widget) {
  
          $namespacedclassname = get_class($widget);
          $plainclassname = preg_replace('/^.*\\\/', '', $namespacedclassname);
          $rendermethod = 'render_'.$plainclassname;
  
          if (method_exists($this, $rendermethod)) {
              // Explicit rendering method exists, fall back to the default behaviour.
              return parent::render($widget);
          }
  
          $interfaces = class_implements($namespacedclassname);
  
          if (isset($interfaces['templatable'])) {
              // Default implementation of template-based rendering.
              $data = $widget->export_for_template($this);
              return parent::render_from_template('tool_policy/'.$plainclassname, $data);
  
          } else {
              return parent::render($widget);
          }
      }
code: public function render(renderable $widget) {
  
          $namespacedclassname = get_class($widget);
          $plainclassname = preg_replace('/^.*\\\/', '', $namespacedclassname);
          $rendermethod = 'render_'.$plainclassname;
  
          if (method_exists($this, $rendermethod)) {
              // Explicit rendering method exists, fall back to the default behaviour.
              return parent::render($widget);
          }
  
          $interfaces = class_implements($namespacedclassname);
  
          if (isset($interfaces['templatable'])) {
              // Default implementation of template-based rendering.
              $data = $widget->export_for_template($this);
              return parent::render_from_template('tool_policy/'.$plainclassname, $data);
  
          } else {
              return parent::render($widget);
          }
      }
code_tokens: public function render ( renderable $ widget ) { $ namespacedclassname = get_class ( $ widget ) ; $ plainclassname = preg_replace ( '/^.*\\\/' , '' , $ namespacedclassname ) ; $ rendermethod = 'render_' . $ plainclassname ; if ( method_exists ( $ this , $ rendermethod ) ) { // Explicit rendering method exists, fall back to the default behaviour. return parent :: render ( $ widget ) ; } $ interfaces = class_implements ( $ namespacedclassname ) ; if ( isset ( $ interfaces [ 'templatable' ] ) ) { // Default implementation of template-based rendering. $ data = $ widget -> export_for_template ( $ this ) ; return parent :: render_from_template ( 'tool_policy/' . $ plainclassname , $ data ) ; } else { return parent :: render ( $ widget ) ; } }
docstring: Overrides the parent so that templatable widgets are handled even without their explicit render method.
  
  @param renderable $widget
  @return string
docstring_tokens: Overrides the parent so that templatable widgets are handled even without their explicit render method .