diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-03-20 15:03:32 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-03-20 15:03:32 +0000 |
commit | 1b93da3262de157e7a1339b1b4ce3ff5c22081a5 (patch) | |
tree | 81e4e3abb3b902d62b0b3d5cea6ab5d1230d9c77 | |
parent | ebf66379186db094ba94914c2aed4e6a485d4708 (diff) | |
download | rails-1b93da3262de157e7a1339b1b4ce3ff5c22081a5.tar.gz rails-1b93da3262de157e7a1339b1b4ce3ff5c22081a5.tar.bz2 rails-1b93da3262de157e7a1339b1b4ce3ff5c22081a5.zip |
Added TextHelper#simple_format as a non-dependency text presentation helper.Fixed TextHelper#markdown to use blank? instead of empty? so it can deal with nil strings passed #814 [Johan Sorensen]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@933 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | actionpack/CHANGELOG | 4 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/text_helper.rb | 15 | ||||
-rw-r--r-- | actionpack/test/template/text_helper_test.rb | 6 |
3 files changed, 24 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 3595b54a81..4aac69d45a 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,9 @@ *SVN* +* Fixed TextHelper#markdown to use blank? instead of empty? so it can deal with nil strings passed #814 [Johan Sörensen] + +* Added TextHelper#simple_format as a non-dependency text presentation helper #814 [Johan Sörensen] + * Added that the html options disabled, readonly, and multiple can all be treated as booleans. So specifying <tt>disabled => :true</tt> will give <tt>disabled="disabled"</tt>. #809 [mindel] * Added path collection syntax for Routes that will gobble up the rest of the url and pass it on to the controller #830 [rayners]. Example: diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index b97b1e130a..aa4d3ab8af 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -90,11 +90,24 @@ module ActionView # Returns the text with all the Markdown codes turned into HTML-tags. # <i>This method is only available if BlueCloth can be required</i>. def markdown(text) - text.empty? ? "" : BlueCloth.new(text).to_html + text.blank? ? "" : BlueCloth.new(text).to_html end rescue LoadError # We can't really help what's not there end + + # Returns +text+ transformed into html using very simple formatting rules + # Surrounds paragraphs with <tt><p></tt> tags, and converts line breaks into <tt><br /></tt> + # Two consecutive newlines(<tt>\n\n</tt>) are considered as a paragraph, one newline (<tt>\n</tt>) is + # considered a linebreak, three or more consecutive newlines are turned into two newlines + def simple_format(text) + text.gsub!(/(\r\n|\n|\r)/, "\n") # lets make them newlines crossplatform + text.gsub!(/\n\n+/, "\n\n") # zap dupes + text.gsub!(/\n\n/, '</p>\0<p>') # turn two newlines into paragraph + text.gsub!(/([^\n])(\n)([^\n])/, '\1\2<br />\3') # turn single newline into <br /> + + return '<p>' + text + '</p>' # wrap the first and last line in paragraphs before we're done + end # Turns all urls and email addresses into clickable links. The +link+ parameter can limit what should be linked. # Options are :all (default), :email_addresses, and :urls. diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index aba0d99699..efc66b3bd1 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -3,6 +3,12 @@ require File.dirname(__FILE__) + '/../../lib/action_view/helpers/text_helper' class TextHelperTest < Test::Unit::TestCase include ActionView::Helpers::TextHelper + + def test_simple_format + assert_equal "<p>crazy\n<br /> cross\n<br /> platform linebreaks</p>", simple_format("crazy\r\n cross\r platform linebreaks") + assert_equal "<p>A paragraph</p>\n\n<p>and another one!</p>", simple_format("A paragraph\n\nand another one!") + assert_equal "<p>A paragraph\n<br /> With a newline</p>", simple_format("A paragraph\n With a newline") + end def test_truncate assert_equal "Hello World!", truncate("Hello World!", 12) |