Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added autoParagraph to TextHelper with proper test cases and made it …

…non-static
  • Loading branch information...
commit d260f4a5b3c4e057355397da65ab7f8a3088d5a7 1 parent d1c88eb
@TeckniX TeckniX authored
View
54 lib/Cake/Test/Case/View/Helper/TextHelperTest.php
@@ -334,4 +334,58 @@ public function testAutoLinkEmailInvalid() {
$this->assertEquals($expected, $result);
}
+/**
+ * testAutoParagraph method
+ *
+ * @return void
+ */
+ public function testAutoParagraph() {
+ $text = 'This is a test text';
+ $expected = <<<TEXT
+<p>This is a test text</p>
+
+TEXT;
+ $result = $this->Text->autoParagraph($text);
+ $text = 'This is a <br/> <BR> test text';
+ $expected = <<<TEXT
+<p>This is a </p>
+<p> test text</p>
+
+TEXT;
+ $result = $this->Text->autoParagraph($text);
+ $this->assertEquals($expected, $result);
+ $result = $this->Text->autoParagraph($text);
+ $text = 'This is a <BR id="test"/><br class="test"> test text';
+ $expected = <<<TEXT
+<p>This is a </p>
+<p> test text</p>
+
+TEXT;
+ $result = $this->Text->autoParagraph($text);
+ $this->assertEquals($expected, $result);
+ $text = <<<TEXT
+This is a test text.
+This is a line return.
+TEXT;
+ $expected = <<<TEXT
+<p>This is a test text.<br />
+This is a line return.</p>
+
+TEXT;
+ $result = $this->Text->autoParagraph($text);
+ $this->assertEquals($expected, $result);
+ $text = <<<TEXT
+This is a test text.
+
+This is a new line.
+TEXT;
+ $expected = <<<TEXT
+<p>This is a test text.</p>
+<p>This is a new line.</p>
+
+TEXT;
+ $result = $this->Text->autoParagraph($text);
+ $this->assertEquals($expected, $result);
+ }
+
}
View
23 lib/Cake/View/Helper/TextHelper.php
@@ -229,6 +229,29 @@ public function highlight($text, $phrase, $options = array()) {
}
/**
+ * Formats paragraphs around given text for all line breaks
+ * <br /> added for single line return
+ * <p> added for double line return
+ *
+ * @param string $text Text
+ * @return string The text with proper <p> and <br /> tags
+ * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/text.html#TextHelper::autoParagraph
+ */
+ public function autoParagraph($text) {
+ if (trim($text) !== '') {
+ $text = preg_replace('|<br[^>]*>\s*<br[^>]*>|i', "\n\n", $text . "\n");
+ $text = preg_replace("/\n\n+/", "\n\n", str_replace(array("\r\n", "\r"), "\n", $text));
+ $texts = preg_split('/\n\s*\n/', $text, -1, PREG_SPLIT_NO_EMPTY);
+ $text = '';
+ foreach ($texts as $txt) {
+ $text .= '<p>' . nl2br(trim($txt, "\n")) . "</p>\n";
+ }
+ $text = preg_replace('|<p>\s*</p>|', '', $text);
+ }
+ return $text;
+ }
+
+/**
* @see String::stripLinks()
*
* @param string $text Text
Please sign in to comment.
Something went wrong with that request. Please try again.