Skip to content
This repository has been archived by the owner on Sep 18, 2023. It is now read-only.

Render quill insert deltas to HTML, Markdown and GitHub flavoured Markdown (150k installs on Packagist)

License

Notifications You must be signed in to change notification settings

deanblackborough/php-quill-renderer

Repository files navigation

Latest Stable Version Packagist License Minimum PHP Version Supported PHP Version Supported PHP Version Validate dependencies and run tests

PHP Quill Renderer

Render quill insert deltas to HTML, Markdown and GitHub flavoured Markdown.

Read-only

It doesn't look like there will be new version of Quill, I've decided to make the repo read-only, I'm not going to dedicate anymore time to this package.

Description

Quill deltas renderer, converts deltas to HTML and Markdown, the Quill attributes supported are listed in the table below, the goal is to eventually support every Quill feature.

Quill is a modern WYSIWYG editor built for compatibility and extensibility.

Installation

The easiest way to use the PHP Quill Renderer is via composer. composer require deanblackborough/php-quill-renderer, alternatively you can include the classes in my src/ directory directly in your library or app.

Usage

Via API, single $quill_json

try {
    $quill = new \DBlackborough\Quill\Render($quill_json);
    $result = $quill->render();
} catch (\Exception $e) {
    echo $e->getMessage();
}

echo $result;

Via API, multiple $quill_json, passed in via array

try {
    $quill = new RenderMultiple($quill_json, 'HTML');
    
    $result_one = $quill->render('one');
    $result_two = $quill->render('two');
} catch (\Exception $e) {
    echo $e->getMessage();
}

echo $result_one;
echo $result_two;

Direct, parse and then render, single $quill_json - updated in v3.10.0

$parser = new \DBlackborough\Quill\Parser\Html();
$renderer = new \DBlackborough\Quill\Renderer\Html();

$parser->load($quill_json)->parse();

echo $renderer->load($parser->deltas())->render();

Direct, parse and then render, multiple $quill_json - updated in v3.10.0

$parser = new \DBlackborough\Quill\Parser\Html();
$renderer = new \DBlackborough\Quill\Renderer\Html();

$parser->loadMultiple(['one'=> $quill_json_1, 'two' => $quill_json_2)->parseMultiple();

echo $renderer->load($parser->deltasByIndex('one'))->render();
echo $renderer->load($parser->deltasByIndex('two'))->render();

Quill attributes and text flow support

Attribute v1+ v2+ v3 HTML v3 Markdown
Bold Yes Yes Yes Yes
Italic Yes Yes Yes Yes
Link Yes Yes Yes Yes
Strike Yes Yes Yes N/A
Script:Sub Yes Yes Yes N/A
Script:Super Yes Yes Yes N/A
Underline Yes Yes Yes N/A
Header Yes Yes Yes Yes
Image Yes Yes Yes Yes
Video No No Yes Yes
List Yes Yes Yes Yes
Child lists No No No No
Indent/Outdent No No No No
Text direction No No No N/A
Color No No No N/K
Font No No No N/K
Text align No No No N/A
Block quote No No No No
Code block No No No No
Custom attributes No No Yes N/A
Line breaks No No Yes Yes
Paragraphs Yes Yes Yes Yes
Attribute HTML Tag Markdown Token
Bold <strong> **
Italic <em> *
Link <a> [Text](Link)
Strike <s>
Script:Sub <sub>
Script:Super <sup>
Underline <u>
Header <h[n]> #[n]
Image <img> ![Image](\path\to\image)
Video <iframe> ![Video](\path\to\video)
List <ul> <ol> * & [n]

Copyright and license

The deanblackborough/php-quill-renderer library is copyright © Dean Blackborough and licensed for use under the MIT License (MIT).

Credits

  • carlos [Bugfix] v1.01.0.
  • pdiveris [Issue #43] - Null inserts.
  • Mark Davison - Pushed me in the right direction for v3.00.0.
  • tominventisbe [Issue #54] - Parser::load() does not reset the deltas array.
  • tominventisbe [Issue #55] - Image deltas with multiple attributes incorrectly being passed to Compound delta.
  • bcorcoran [Issue #81] - Suggested reverting requirements to necessary requirements.
  • kingga [Issue #86] - Video support.
  • Jonathanm10 [Issue #87] - Newlines proceeding inserts ignored, bug report.
  • raphaelsaunier [Issue #87] - Newlines proceeding inserts ignored, bug location.
  • Basil [Issue #101] - Newline only inserts being ignored by parser.
  • Lee Hesselden [PR #104] - Color delta to allowing spans with a style:color="#xxx" definition. (Feature will be extended by [Issue #106])
  • Alex [PR #112] - Custom attributes assigned to style attribute if sensible.
  • davidraijmakers [Issue #108] - Children not supported with headers.
  • philippkuehn [Issue #109] - Multiple list output incorrect and paragraphs not being closed.
  • mechanicalgux [Issue #117] - Compound deltas don't know that they can be links.
  • Lode Claassen [PR #121] - Missing supported format in exception messages.
  • Lode Claassen [PR #122] - Validation code DRY.
  • Lode Claassen [PR #123] - Allow already decoded json to be passed to parser.
  • Nicholas Humphries [PR #128] - Videos with attributes not supported.
  • hybridvision [Issue #132] - Issue rendering single item lists when they aren't the first content.

Coding standards and documentation credits

About

Render quill insert deltas to HTML, Markdown and GitHub flavoured Markdown (150k installs on Packagist)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages