original_string: public function render(renderable $widget) {
          $classname = get_class($widget);
          // Strip namespaces.
          $classname = preg_replace('/^.*\\\/', '', $classname);
          // Keep a copy at this point, we may need to look for a deprecated method.
          $deprecatedmethod = 'render_'.$classname;
          // Remove _renderable suffixes
          $classname = preg_replace('/_renderable$/', '', $classname);
  
          $rendermethod = 'render_'.$classname;
          if (method_exists($this, $rendermethod)) {
              return $this->$rendermethod($widget);
          }
          if ($rendermethod !== $deprecatedmethod && method_exists($this, $deprecatedmethod)) {
              // This is exactly where we don't want to be.
              // If you have arrived here you have a renderable component within your plugin that has the name
              // blah_renderable, and you have a render method render_blah_renderable on your plugin.
              // In 2.8 we revamped output, as part of this change we changed slightly how renderables got rendered
              // and the _renderable suffix now gets removed when looking for a render method.
              // You need to change your renderers render_blah_renderable to render_blah.
              // Until you do this it will not be possible for a theme to override the renderer to override your method.
              // Please do it ASAP.
              static $debugged = array();
              if (!isset($debugged[$deprecatedmethod])) {
                  debugging(sprintf('Deprecated call. Please rename your renderables render method from %s to %s.',
                      $deprecatedmethod, $rendermethod), DEBUG_DEVELOPER);
                  $debugged[$deprecatedmethod] = true;
              }
              return $this->$deprecatedmethod($widget);
          }
          // pass to core renderer if method not found here
          return $this->output->render($widget);
      }
code: public function render(renderable $widget) {
          $classname = get_class($widget);
          // Strip namespaces.
          $classname = preg_replace('/^.*\\\/', '', $classname);
          // Keep a copy at this point, we may need to look for a deprecated method.
          $deprecatedmethod = 'render_'.$classname;
          // Remove _renderable suffixes
          $classname = preg_replace('/_renderable$/', '', $classname);
  
          $rendermethod = 'render_'.$classname;
          if (method_exists($this, $rendermethod)) {
              return $this->$rendermethod($widget);
          }
          if ($rendermethod !== $deprecatedmethod && method_exists($this, $deprecatedmethod)) {
              // This is exactly where we don't want to be.
              // If you have arrived here you have a renderable component within your plugin that has the name
              // blah_renderable, and you have a render method render_blah_renderable on your plugin.
              // In 2.8 we revamped output, as part of this change we changed slightly how renderables got rendered
              // and the _renderable suffix now gets removed when looking for a render method.
              // You need to change your renderers render_blah_renderable to render_blah.
              // Until you do this it will not be possible for a theme to override the renderer to override your method.
              // Please do it ASAP.
              static $debugged = array();
              if (!isset($debugged[$deprecatedmethod])) {
                  debugging(sprintf('Deprecated call. Please rename your renderables render method from %s to %s.',
                      $deprecatedmethod, $rendermethod), DEBUG_DEVELOPER);
                  $debugged[$deprecatedmethod] = true;
              }
              return $this->$deprecatedmethod($widget);
          }
          // pass to core renderer if method not found here
          return $this->output->render($widget);
      }
code_tokens: public function render ( renderable $ widget ) { $ classname = get_class ( $ widget ) ; // Strip namespaces. $ classname = preg_replace ( '/^.*\\\/' , '' , $ classname ) ; // Keep a copy at this point, we may need to look for a deprecated method. $ deprecatedmethod = 'render_' . $ classname ; // Remove _renderable suffixes $ classname = preg_replace ( '/_renderable$/' , '' , $ classname ) ; $ rendermethod = 'render_' . $ classname ; if ( method_exists ( $ this , $ rendermethod ) ) { return $ this -> $ rendermethod ( $ widget ) ; } if ( $ rendermethod !== $ deprecatedmethod && method_exists ( $ this , $ deprecatedmethod ) ) { // This is exactly where we don't want to be. // If you have arrived here you have a renderable component within your plugin that has the name // blah_renderable, and you have a render method render_blah_renderable on your plugin. // In 2.8 we revamped output, as part of this change we changed slightly how renderables got rendered // and the _renderable suffix now gets removed when looking for a render method. // You need to change your renderers render_blah_renderable to render_blah. // Until you do this it will not be possible for a theme to override the renderer to override your method. // Please do it ASAP. static $ debugged = array ( ) ; if ( ! isset ( $ debugged [ $ deprecatedmethod ] ) ) { debugging ( sprintf ( 'Deprecated call. Please rename your renderables render method from %s to %s.' , $ deprecatedmethod , $ rendermethod ) , DEBUG_DEVELOPER ) ; $ debugged [ $ deprecatedmethod ] = true ; } return $ this -> $ deprecatedmethod ( $ widget ) ; } // pass to core renderer if method not found here return $ this -> output -> render ( $ widget ) ; }
docstring: Renders the provided widget and returns the HTML to display it.
  
  @param renderable $widget instance with renderable interface
  @return string
docstring_tokens: Renders the provided widget and returns the HTML to display it .