From 5bf4cbbdb74dfaaac258dc93e54dcae8295211e9 Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Mon, 24 Mar 2008 02:29:30 +0000 Subject: Allow the #simple_format text_helper to take an html_options hash for each paragraph. Closes #2448 [Francois Beausoleil, thechrisoshow] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9083 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/text_helper.rb | 18 +++++++++++++----- actionpack/test/template/text_helper_test.rb | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index bcc258acc2..a1e487c2e1 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +# Allow the #simple_format text_helper to take an html_options hash for each paragraph. #2448 [Francois Beausoleil, thechrisoshow] + * Fix regression from filter refactoring where re-adding a skipped filter resulted in it being called twice. [rick] * Refactor filters to use Active Support callbacks. #11235 [Josh Peek] diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index 3d479608f3..f8c3b67474 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -291,6 +291,8 @@ module ActionView # considered as a linebreak and a
tag is appended. This # method does not remove the newlines from the +text+. # + # You can pass any HTML attributes into html_options. These + # will be added to all created paragraphs. # ==== Examples # my_text = "Here is some basic text...\n...with a line break." # @@ -301,11 +303,17 @@ module ActionView # # simple_format(more_text) # # => "

We want to put a paragraph...

\n\n

...right there.

" - def simple_format(text) - content_tag 'p', text.to_s. - gsub(/\r\n?/, "\n"). # \r\n and \r -> \n - gsub(/\n\n+/, "

\n\n

"). # 2+ newline -> paragraph - gsub(/([^\n]\n)(?=[^\n])/, '\1
') # 1 newline -> br + # + # simple_format("Look ma! A class!", :class => 'description') + # # => "

Look ma! A class!

" + def simple_format(text, html_options={}) + start_tag = tag('p', html_options, true) + text = text.to_s.dup + text.gsub!(/\r\n?/, "\n") # \r\n and \r -> \n + text.gsub!(/\n\n+/, "

\n\n#{start_tag}") # 2+ newline -> paragraph + text.gsub!(/([^\n]\n)(?=[^\n])/, '\1
') # 1 newline -> br + text.insert 0, start_tag + text << "

" end # Turns all URLs and e-mail addresses into clickable links. The +link+ parameter diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index dd5725376f..0cd83334d5 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -24,6 +24,9 @@ class TextHelperTest < Test::Unit::TestCase text = "A\r\n \nB\n\n\r\n\t\nC\nD".freeze assert_equal "

A\n
\n
B

\n\n

\t\n
C\n
D

", simple_format(text) + + assert_equal %q(

This is a classy test

), simple_format("This is a classy test", :class => 'test') + assert_equal %Q(

para 1

\n\n

para 2

), simple_format("para 1\n\npara 2", :class => 'test') end def test_truncate -- cgit v1.2.3