From b808287326a66bde4a47c9dc329a82448946d513 Mon Sep 17 00:00:00 2001 From: Dean Blackborough Date: Fri, 10 Mar 2017 16:51:15 +0000 Subject: [PATCH 1/2] Tests - Failing tests for sub and super script. --- tests/SingleSimpleAttributesTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/SingleSimpleAttributesTest.php b/tests/SingleSimpleAttributesTest.php index 71ea291..f7fd9dc 100644 --- a/tests/SingleSimpleAttributesTest.php +++ b/tests/SingleSimpleAttributesTest.php @@ -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() { @@ -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 = '

Lorem ipsum dolor sitx amet, consectetur adipiscing elit. Pellentesque at elit dapibus risus molestie rhoncus dapibus eu nulla. Vestibulum at eros id augue cursus egestas.

'; + $this->renderer->load($this->subscript_deltas); + $this->assertEquals($expected, $this->renderer->render(), __METHOD__ . ' failed'); + } + + public function testScriptSuperBecomeSup() + { + $expected = '

Lorem ipsum dolor sitx amet, consectetur adipiscing elit. Pellentesque at elit dapibus risus molestie rhoncus dapibus eu nulla. Vestibulum at eros id augue cursus egestas.

'; + $this->renderer->load($this->superscript_deltas); + $this->assertEquals($expected, $this->renderer->render(), __METHOD__ . ' failed'); + } } From 19b26ac80239750461c8721dd909237ef551ece4 Mon Sep 17 00:00:00 2001 From: Dean Blackborough Date: Fri, 10 Mar 2017 17:03:54 +0000 Subject: [PATCH 2/2] Sub and Super - Added support for sub and super script. --- CHANGELOG.md | 4 ++++ README.md | 11 ++++++---- src/DBlackborough/Quill/Renderer.php | 11 ++++++++-- src/DBlackborough/Quill/Renderer/Html.php | 26 +++++++++++++++++------ 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43d6577..e1a3d98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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] diff --git a/README.md b/README.md index 02b6715..fb586e2 100644 --- a/README.md +++ b/README.md @@ -40,12 +40,15 @@ Quill Attribute | HTML Tag --- | --- Bold | `` Italic | `` -Underline | `` -Strike | `` Link | `` +Strike | `` +Script:Sub | `` +Script:Super | `` +Underline | `` -## Planned features +## Planned features in possible order * Lists (Bullets and Ordered) -* Links +* Formatting * External images +* Remaining toolbar options diff --git a/src/DBlackborough/Quill/Renderer.php b/src/DBlackborough/Quill/Renderer.php index c1928de..c6f63bb 100644 --- a/src/DBlackborough/Quill/Renderer.php +++ b/src/DBlackborough/Quill/Renderer.php @@ -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 && @@ -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; diff --git a/src/DBlackborough/Quill/Renderer/Html.php b/src/DBlackborough/Quill/Renderer/Html.php index b41ea92..93f8fc1 100644 --- a/src/DBlackborough/Quill/Renderer/Html.php +++ b/src/DBlackborough/Quill/Renderer/Html.php @@ -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' @@ -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;