Render quill insert deltas to HTML, Markdown and GitHub flavoured Markdown.
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.
Over the next few weeks/months I want to continue adding support for additional Quill features and add, flesh out additional output formats, after Markdown I'm planning on plain txt, GitHub flavoured Markdown and possibly RTF/PDF.
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.
try {
$quill = new \DBlackborough\Quill\Render($quill_json);
$result = $quill->render();
} catch (\Exception $e) {
echo $e->getMessage();
}
echo $result;
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;
$parser = new \DBlackborough\Quill\Parser\Html();
$renderer = new \DBlackborough\Quill\Renderer\Html();
$parser->load($quill_json)->parse();
echo $renderer->load($parser->deltas())->render();
$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();
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 | In Development | In Development |
Indent/Outdent | No | No | Planned | Planned |
Text direction | No | No | Planned | N/A |
Color | No | No | Planned | N/K |
Font | No | No | Planned | N/K |
Text align | No | No | Planned | N/A |
Block quote | No | No | Planned | Planned |
Code block | No | No | Planned | Planned |
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] |
The deanblackborough/php-quill-renderer library is copyright © Dean Blackborough and licensed for use under the MIT License (MIT).
- 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])