surface / commonmark-ext-youtube-iframe
Extension for league/commonmark to replace YouTube link with an iframe.
Installs: 4 109
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:commonmark-extension
Requires
- php: ^8.0
- league/commonmark: ^2.3
Requires (Dev)
- phpmd/phpmd: ^2.12
- phpro/grumphp: ^1.5
- phpstan/phpstan: ^1.5
- phpunit/phpunit: ^9.5
- sirbrillig/phpcs-import-detection: ^1.3
- slevomat/coding-standard: ^7.1
- squizlabs/php_codesniffer: ^3.6
README
An extension for league/commonmark version 2 built using PHP 8.0. This replaces YouTube links with the embed iframe.
The extension supports for the primary YouTube URL, with and without prefixed with
the www
. It also supports the short shareable URL using the youtu.be
domain.
Initially based on the YouTube extension.
Installation
The project should be installed via Composer:
composer require surface/commonmark-ext-youtube-iframe
Usage
Configure your CommonMark Environment
and add the extension.
use League\CommonMark\Environment\Environment; use League\CommonMark\MarkdownConverter as Converter; use Surface\CommonMark\Ext\YouTubeIframe\Extension as YouTubeExtension; $options = [ 'youtube_iframe' => [ 'width' => 800, 'height' => 600, ] ]; $environment = new Environment($options); $environment->addExtension(new YouTubeExtension()); $converter = new Converter($environment); echo $converter->convert('[](https://youtu.be/xxx)'); echo $converter->convert('[](https://www.youtube.com/watch?v=xxx)'); echo $converter->convert('[](https://youtu.be/xxx?height=480)'); echo $converter->convert('[](https://www.youtube.com/watch?v=xxx&width=640)');
Dimensions
You can control the dimensions of the videos by using the width
and
height
configuration options.
You can also configure the dimensions using query parameters on the embed URL.
You can provide the height
or width
or both.
?width=640 ?height=480 ?width=640&height=480
Full URL
You can disable the parsing of full YouTube URLs (with or without the www) by
using the following option. If this option is disabled, only URLs under the
‘short’ domain will be used (youtu.be
).
$options = [ 'youtube_iframe' => [ 'full_url' => false, ] ];
Testing
There are Unit and Integration tests for the project. These can be run using the following commands:
composer test composer run test composer run test-unit composer run test-integration
There are also scripts to run code sniffer, mess detector and static analysis:
composer run sniff composer run mess composer run stan
Changelog
Please refer to the CHANGELOG for more information on what has changed recently.
License
This library is licensed under the MIT license. See the License File for more information.