<?php
namespace Isekai;

use Wikimedia\Parsoid\Ext\ExtensionTagHandler;
use Wikimedia\Parsoid\Ext\ParsoidExtensionAPI;

class BlockQuoteTagHandler extends ExtensionTagHandler {
    public function sourceToDom(ParsoidExtensionAPI $extApi, string $src, array $extArgs) {
        return $extApi->extTagToDOM(
            $extArgs,
            '',
            $src,
            [
                'wrapperTag' => 'span',
                'parseOpts' => [
                    'extTag' => 'blockquote',
                ],
            ],
        );
    }

    public function getInnerWikitext(ParsoidExtensionAPI $extApi, \DOMElement $dom) {
        $wikiText = '';
        foreach($dom->childNodes as $child){
            if($child instanceof \DOMText){
                $wikiText .= $child->nodeValue;
            } else {
                $wikiText .= $extApi->domToWikitext([], $child);
            }
        }
        return $wikiText;
    }

    public function domToWikitext(ParsoidExtensionAPI $extApi, \DOMElement $node, bool $wrapperUnmodified): string {
        $innerCode = $this->getInnerWikitext($extApi, $node);
        return "<span>\n{$innerCode}\n</span>";
    }
}