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

Commit

Permalink
Merge pull request #10 from deanblackborough/v0.40
Browse files Browse the repository at this point in the history
V0.40
  • Loading branch information
deanblackborough authored Mar 10, 2017
2 parents 352a4d0 + 19b26ac commit 56dc37c
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 13 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

Full changelog for PHP Quill Renderer

# v0.40.0 - 2017-03-10

* Added support for sub and super script.

# v0.30.0 - 2017-03-06

* Added support for links. [Feature]
Expand Down
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,15 @@ Quill Attribute | HTML Tag
--- | ---
Bold | `<strong>`
Italic | `<em>`
Underline | `<u>`
Strike | `<s>`
Link | `<a>`
Strike | `<s>`
Script:Sub | `<sub>`
Script:Super | `<sup>`
Underline | `<u>`

## Planned features
## Planned features in possible order

* Lists (Bullets and Ordered)
* Links
* Formatting
* External images
* Remaining toolbar options
11 changes: 9 additions & 2 deletions src/DBlackborough/Quill/Renderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ protected function isAttributeValid($attribute, $value)
$valid = true;
}
break;
case 'script':
if (array_key_exists('attributes', $this->options) === true &&
array_key_exists($attribute, $this->options['attributes']) === true &&
in_array($value, array('sub', 'super')) === true) {

$valid = true;
}
break;
case 'link':
if (array_key_exists('attributes', $this->options) === true &&
array_key_exists($attribute, $this->options['attributes']) === true &&
Expand Down Expand Up @@ -160,8 +168,7 @@ public function setOption($option, $value)
public function setAttributeOption($option, $value)
{
if (array_key_exists('attributes', $this->options) === true &&
array_key_exists($option, $this->options['attributes']) === true
) {
array_key_exists($option, $this->options['attributes']) === true) {

$this->options['attributes'][$option]['tag'] = $value;
return true;
Expand Down
26 changes: 19 additions & 7 deletions src/DBlackborough/Quill/Renderer/Html.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,18 +46,26 @@ protected function defaultOptions()
'italic' => array(
'tag' => 'em'
),
'underline' => array(
'tag' => 'u'
),
'strike' => array(
'tag' => 's'
),
'link' => array(
'tag' => 'a',
'attributes' => array(
'href' => null
)
)
),
'script' => array(
'sub' => array(
'tag' => 'sub'
),
'super' => array(
'tag' => 'sup'
)
),
'strike' => array(
'tag' => 's'
),
'underline' => array(
'tag' => 'u'
),
),
'block' => 'p',
'newline' => 'br'
Expand All @@ -83,6 +91,10 @@ protected function getTagAndAttributes($attribute, $value)
return $this->options['attributes'][$attribute];
break;

case 'script':
return $this->options['attributes'][$attribute][$value];
break;

case 'link':
$result = $this->options['attributes'][$attribute];
$result['attributes']['href'] = $value;
Expand Down
16 changes: 16 additions & 0 deletions tests/SingleSimpleAttributesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ final class SingleSimpleAttributesTest extends \PHPUnit_Framework_TestCase
private $strike_deltas = '{"ops":[{"insert":"Lorem ipsum dolor sit amet "},{"attributes":{"strike":true},"insert":"sollicitudin"},{"insert":" quam, nec auctor eros felis elementum quam. Fusce vel mollis enim."}]}';
private $underline_deltas = '{"ops":[{"insert":"Lorem ipsum dolor sit amet "},{"attributes":{"underline":true},"insert":"sollicitudin"},{"insert":" quam, nec auctor eros felis elementum quam. Fusce vel mollis enim."}]}';
private $link_deltas = '{"ops":[{"insert":"Lorem ipsum dolor sit amet, "},{"attributes":{"link":"http://www.example.com"},"insert":"consectetur"},{"insert":" adipiscing elit. In sed efficitur enim. Suspendisse mattis purus id odio varius suscipit. Nunc posuere fermentum blandit. \n\nIn vitae eros nec mauris dignissim porttitor. Morbi a tempus tellus. Mauris quis velit sapien. "},{"attributes":{"link":"http://www.example.com"},"insert":"Etiam "},{"insert":"sit amet enim venenatis, eleifend lectus ac, ultricies orci. Sed tristique laoreet mi nec imperdiet. Vivamus non dui diam. \n\nAliquam erat eros, dignissim in quam id.\n"}]}';
private $subscript_deltas = '{"ops":[{"insert":"Lorem ipsum dolor sit"},{"attributes":{"script":"sub"},"insert":"x"},{"insert":" amet, consectetur adipiscing elit. Pellentesque at elit dapibus risus molestie rhoncus dapibus eu nulla. Vestibulum at eros id augue cursus egestas.\n"}]}';
private $superscript_deltas = '{"ops":[{"insert":"Lorem ipsum dolor sit"},{"attributes":{"script":"super"},"insert":"x"},{"insert":" amet, consectetur adipiscing elit. Pellentesque at elit dapibus risus molestie rhoncus dapibus eu nulla. Vestibulum at eros id augue cursus egestas.\n"}]}';

public function setUp()
{
Expand Down Expand Up @@ -78,4 +80,18 @@ public function testLinksBecomeAHrefs()
$this->renderer->load($this->link_deltas);
$this->assertEquals($expected, $this->renderer->render(), __METHOD__ . ' failed');
}

public function testScriptSubBecomeSub()
{
$expected = '<p>Lorem ipsum dolor sit<sub>x</sub> amet, consectetur adipiscing elit. Pellentesque at elit dapibus risus molestie rhoncus dapibus eu nulla. Vestibulum at eros id augue cursus egestas.</p>';
$this->renderer->load($this->subscript_deltas);
$this->assertEquals($expected, $this->renderer->render(), __METHOD__ . ' failed');
}

public function testScriptSuperBecomeSup()
{
$expected = '<p>Lorem ipsum dolor sit<sup>x</sup> amet, consectetur adipiscing elit. Pellentesque at elit dapibus risus molestie rhoncus dapibus eu nulla. Vestibulum at eros id augue cursus egestas.</p>';
$this->renderer->load($this->superscript_deltas);
$this->assertEquals($expected, $this->renderer->render(), __METHOD__ . ' failed');
}
}

0 comments on commit 56dc37c

Please sign in to comment.