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;
  }
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;
  }
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 ; }
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.
Converts a DOM element into a single Markdown block .