original_string: protected function getBlock(\DOMElement $element) {
      $block = '';
      /** @var \DOMNode $node */
      foreach ($element->childNodes as $node) {
        switch ($node->nodeType) {
  
          case XML_ELEMENT_NODE:
            /** @var \DOMElement $node */
            switch ($node->nodeName) {
  
              // Explicitly handle these elements.
  
              case 'i':
              case 'em':
                $block .= '*' . $this->getBlock($node) . '*';
                break;
  
              case 'b':
              case 'strong':
                $block .= '**' . $this->getBlock($node) . '**';
                break;
  
              case 'a':
                if ($node->hasAttribute('href')) {
                  $block .= '[' . $this->getBlock($node) . ']' .
                    '(' . $node->getAttribute('href') . ')';
                }
                break;
  
              // Other inline elements.
              default:
                // Recursively handle any descendant elements we care about.
                $block .= $this->getBlock($node);
                break;
  
            }
            break;
  
          case XML_TEXT_NODE:
            /** @var \DOMText $node */
            $block .= self::escape($node->textContent);
            break;
  
        }
      }
  
      // Handle white-listed elements.
      if (in_array($element->nodeName, $this->white_list)) {
        $tag = $element->cloneNode();
        if (!empty($block)) {
          $tag->appendChild(new \DOMText($block));
        }
        $block = $this->dom->saveXML($tag);
      }
  
      return $block;
    }
code: protected function getBlock(\DOMElement $element) {
      $block = '';
      /** @var \DOMNode $node */
      foreach ($element->childNodes as $node) {
        switch ($node->nodeType) {
  
          case XML_ELEMENT_NODE:
            /** @var \DOMElement $node */
            switch ($node->nodeName) {
  
              // Explicitly handle these elements.
  
              case 'i':
              case 'em':
                $block .= '*' . $this->getBlock($node) . '*';
                break;
  
              case 'b':
              case 'strong':
                $block .= '**' . $this->getBlock($node) . '**';
                break;
  
              case 'a':
                if ($node->hasAttribute('href')) {
                  $block .= '[' . $this->getBlock($node) . ']' .
                    '(' . $node->getAttribute('href') . ')';
                }
                break;
  
              // Other inline elements.
              default:
                // Recursively handle any descendant elements we care about.
                $block .= $this->getBlock($node);
                break;
  
            }
            break;
  
          case XML_TEXT_NODE:
            /** @var \DOMText $node */
            $block .= self::escape($node->textContent);
            break;
  
        }
      }
  
      // Handle white-listed elements.
      if (in_array($element->nodeName, $this->white_list)) {
        $tag = $element->cloneNode();
        if (!empty($block)) {
          $tag->appendChild(new \DOMText($block));
        }
        $block = $this->dom->saveXML($tag);
      }
  
      return $block;
    }
code_tokens: protected function getBlock ( \ DOMElement $ element ) { $ block = '' ; /** @var \DOMNode $node */ foreach ( $ element -> childNodes as $ node ) { switch ( $ node -> nodeType ) { case XML_ELEMENT_NODE : /** @var \DOMElement $node */ switch ( $ node -> nodeName ) { // Explicitly handle these elements. case 'i' : case 'em' : $ block .= '*' . $ this -> getBlock ( $ node ) . '*' ; break ; case 'b' : case 'strong' : $ block .= '**' . $ this -> getBlock ( $ node ) . '**' ; break ; case 'a' : if ( $ node -> hasAttribute ( 'href' ) ) { $ block .= '[' . $ this -> getBlock ( $ node ) . ']' . '(' . $ node -> getAttribute ( 'href' ) . ')' ; } break ; // Other inline elements. default : // Recursively handle any descendant elements we care about. $ block .= $ this -> getBlock ( $ node ) ; break ; } break ; case XML_TEXT_NODE : /** @var \DOMText $node */ $ block .= self :: escape ( $ node -> textContent ) ; break ; } } // Handle white-listed elements. if ( in_array ( $ element -> nodeName , $ this -> white_list ) ) { $ tag = $ element -> cloneNode ( ) ; if ( ! empty ( $ block ) ) { $ tag -> appendChild ( new \ DOMText ( $ block ) ) ; } $ block = $ this -> dom -> saveXML ( $ tag ) ; } return $ block ; }
docstring: Converts a DOM element into a single Markdown block.
  
  Handles inline elements.
  
  @param \DOMElement $element
  The Node to transform.
  
  @return string
  A single Markdown block string.
docstring_tokens: Converts a DOM element into a single Markdown block .