From 598eab90ffb60638a578b5b205388cb755485280 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Mon, 25 Jul 2011 14:12:12 -0700 Subject: let TIP and friends handle a multiline paragraph Normally I would have done this in master, but there was already a guide with wrapped content, so worked here. I am going to cross-merge now. --- railties/guides/rails_guides/generator.rb | 2 +- railties/guides/rails_guides/textile_extensions.rb | 35 +++++++++++----------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/railties/guides/rails_guides/generator.rb b/railties/guides/rails_guides/generator.rb index 14d671c8f3..d304512ff7 100644 --- a/railties/guides/rails_guides/generator.rb +++ b/railties/guides/rails_guides/generator.rb @@ -204,7 +204,7 @@ module RailsGuides t = RedCloth.new(body) t.hard_breaks = false t.lite_mode = lite_mode - t.to_html(:notestuff, :plusplus, :code, :tip) + t.to_html(:notestuff, :plusplus, :code) end end diff --git a/railties/guides/rails_guides/textile_extensions.rb b/railties/guides/rails_guides/textile_extensions.rb index 352c5e91dd..b3e0e32357 100644 --- a/railties/guides/rails_guides/textile_extensions.rb +++ b/railties/guides/rails_guides/textile_extensions.rb @@ -3,23 +3,24 @@ require 'active_support/core_ext/object/inclusion' module RailsGuides module TextileExtensions def notestuff(body) - body.gsub!(/^(IMPORTANT|CAUTION|WARNING|NOTE|INFO)[.:](.*)$/) do |m| - css_class = $1.downcase - css_class = 'warning' if css_class.in?(['caution', 'important']) - - result = "

" - result << $2.strip - result << '

' - result - end - end - - def tip(body) - body.gsub!(/^TIP[.:](.*)$/) do |m| - result = "

" - result << $1.strip - result << '

' - result + # The following regexp detects special labels followed by a + # paragraph, perhaps at the end of the document. + # + # It is important that we do not eat more than one newline + # because formatting may be wrong otherwise. For example, + # if a bulleted list follows the first item is not rendered + # as a list item, but as a paragraph starting with a plain + # asterisk. + body.gsub!(/^(TIP|IMPORTANT|CAUTION|WARNING|NOTE|INFO)[.:](.*?)(\n(?=\n)|\Z)/m) do |m| + css_class = case $1 + when 'CAUTION', 'IMPORTANT' + 'warning' + when 'TIP' + 'info' + else + $1.downcase + end + %Q(

#{$2.strip}

) end end -- cgit v1.2.3