<?php
    class EasyEmbed extends Modules {
        public function __init(): void {
            # Replace comment codes before Markdown filtering (priority 5).
            $this->setPriority("markup_text", 4);
        }

        public function markup_text($text): string {
            $urls = array(
                '|<!--[^>]*youtube.com/watch\?v=([a-z0-9_\-]{11})[^>]*-->|i'
                    => 'https://www.youtube.com/embed/$1',

                '|<!--[^>]*youtu.be/([a-z0-9_\-]{11})[^>]*-->|i'
                    => 'https://www.youtube.com/embed/$1',

                '|<!--[^>]*vimeo.com/([0-9]{9})[^>]*-->|i'
                    => 'https://player.vimeo.com/video/$1',

                '|<!--[^>]*twitch.tv/[^/]+/v/([0-9]{9})[^>]*-->|i'
                    => 'https://player.twitch.tv/?video=v$1',

                '|<!--[^>]*archive.org/details/([a-z0-9_\-]+)[^>]*-->|i'
                    => 'https://archive.org/embed/$1'
            );

            foreach ($urls as $view => &$embed)
                $embed = '<iframe class="video_embed" src="'.
                         fix($embed, true).
                         '" allowfullscreen></iframe>';

            return preg_replace(array_keys($urls), array_values($urls), $text);
        }
    }