league/commonmark-ext-autolink

Extension for league/commonmark which autolinks URLs, emails, and @-mentions

Installs: 5 954

Dependents: 1

Suggesters: 0

Stars: 8

Watchers: 3

Forks: 1

Open Issues: 0

Type:commonmark-extension

v1.0.0 2019-06-29 11:23 UTC

README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

This extension adds GFM-style autolinking to the league/commonmark Markdown parser for PHP. It automatically link URLs and email addresses even when the CommonMark <...> autolink syntax is not used.

It also provides a parser to autolink @mentions to Twitter, Github, or any custom service you wish, though this is disabled by default.

Install

Via Composer

$ composer require league/commonmark-ext-autolink

Usage

Configure your Environment as usual and simply add the AutolinkExtension provided by this package:

use League\CommonMark\CommonMarkConverter;
use League\CommonMark\Environment;
use League\CommonMark\Ext\Autolink\AutolinkExtension;

// Obtain a pre-configured Environment with all the CommonMark parsers/renderers ready-to-go
$environment = Environment::createCommonMarkEnvironment();

// Add this extension
$environment->addExtension(new AutolinkExtension());

// Instantiate the converter engine and start converting some Markdown!
$converter = new CommonMarkConverter([], $environment);
echo $converter->convertToHtml('I successfully installed the https://github.com/thephpleague/commonmark-ext-autolink extension!');

@mention Autolinking

This extension also provides functionality to automatically link "mentions" like @colinodell to Twitter, Github, or any other site of your choice!

For Twitter:

use League\CommonMark\Environment;
use League\CommonMark\Ext\Autolink\InlineMentionParser;

$environment = Environment::createCommonMarkEnvironment();
$environment->addInlineParser(InlineMentionParser::createTwitterHandleParser());

// TODO: Instantiate your converter and convert some Markdown

For GitHub:

use League\CommonMark\Environment;
use League\CommonMark\Ext\Autolink\InlineMentionParser;

$environment = Environment::createCommonMarkEnvironment();
$environment->addInlineParser(InlineMentionParser::createGithubHandleParser());

// TODO: Instantiate your converter and convert some Markdown

Or configure your own custom one:

use League\CommonMark\Environment;
use League\CommonMark\Ext\Autolink\InlineMentionParser;

$environment = Environment::createCommonMarkEnvironment();
$environment->addInlineParser(new InlineMentionParser('https://www.example.com/users/%s/profile'));

// TODO: Instantiate your converter and convert some Markdown

When creating your own, you can provide two parameters to the constructor:

  • A URL template where %s is replaced with the username (required)
  • A regular expression to parse and validate the username (optional - defaults to '/^[A-Za-z0-9_]+(?!\w)/')

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Security

If you discover any security related issues, please email colinodell@gmail.com instead of using the issue tracker.

Credits

License

This library is licensed under the BSD-3 license. See the License File for more information.