original_string: protected function end($parser, $tag)
      {
          //Make the tag lower case, for consistency
          $tag = strtolower($tag);
  
          //Add the data to the paths that require it
          $data = '</'.$tag.'>';
          $this->addData($parser, $data);
  
          //Loop through each callback and see if the path matches the
          //current path
          foreach ($this->callbacks as $path => $callbacks) {
              //If parsing should continue, and the paths match, then a callback
              //needs to be made
              if ($this->parse && $this->currentPath === $path) {
                  if (!$this->fireCallbacks($path, $callbacks)) {
                      break;
                  }
              }
          }
  
          //Unset the path data for this path, as it's no longer needed
          unset($this->pathData[$this->currentPath]);
  
          //Update the path with the new path (effectively moving up a directory)
          $this->currentPath = substr(
              $this->currentPath,
              0,
              strlen($this->currentPath) - (strlen($tag) + 1)
          );
  
          return $parser;
      }
code: protected function end($parser, $tag)
      {
          //Make the tag lower case, for consistency
          $tag = strtolower($tag);
  
          //Add the data to the paths that require it
          $data = '</'.$tag.'>';
          $this->addData($parser, $data);
  
          //Loop through each callback and see if the path matches the
          //current path
          foreach ($this->callbacks as $path => $callbacks) {
              //If parsing should continue, and the paths match, then a callback
              //needs to be made
              if ($this->parse && $this->currentPath === $path) {
                  if (!$this->fireCallbacks($path, $callbacks)) {
                      break;
                  }
              }
          }
  
          //Unset the path data for this path, as it's no longer needed
          unset($this->pathData[$this->currentPath]);
  
          //Update the path with the new path (effectively moving up a directory)
          $this->currentPath = substr(
              $this->currentPath,
              0,
              strlen($this->currentPath) - (strlen($tag) + 1)
          );
  
          return $parser;
      }
code_tokens: protected function end ( $ parser , $ tag ) { //Make the tag lower case, for consistency $ tag = strtolower ( $ tag ) ; //Add the data to the paths that require it $ data = '</' . $ tag . '>' ; $ this -> addData ( $ parser , $ data ) ; //Loop through each callback and see if the path matches the //current path foreach ( $ this -> callbacks as $ path => $ callbacks ) { //If parsing should continue, and the paths match, then a callback //needs to be made if ( $ this -> parse && $ this -> currentPath === $ path ) { if ( ! $ this -> fireCallbacks ( $ path , $ callbacks ) ) { break ; } } } //Unset the path data for this path, as it's no longer needed unset ( $ this -> pathData [ $ this -> currentPath ] ) ; //Update the path with the new path (effectively moving up a directory) $ this -> currentPath = substr ( $ this -> currentPath , 0 , strlen ( $ this -> currentPath ) - ( strlen ( $ tag ) + 1 ) ) ; return $ parser ; }
docstring: Parses the end of a tag
  
  @param resource $parser
  @param string   $tag
  
  @return NULL
docstring_tokens: Parses the end of a tag