diff options
author | Xavier Noria <fxn@hashref.com> | 2011-07-25 14:12:12 -0700 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2011-07-25 14:12:12 -0700 |
commit | 598eab90ffb60638a578b5b205388cb755485280 (patch) | |
tree | 26323a9190d940594367eb4879840bdfbc583e80 /railties/guides | |
parent | 50ca6f06c739994329cd936fce5f266bd799b37e (diff) | |
download | rails-598eab90ffb60638a578b5b205388cb755485280.tar.gz rails-598eab90ffb60638a578b5b205388cb755485280.tar.bz2 rails-598eab90ffb60638a578b5b205388cb755485280.zip |
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.
Diffstat (limited to 'railties/guides')
-rw-r--r-- | railties/guides/rails_guides/generator.rb | 2 | ||||
-rw-r--r-- | 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 = "<div class='#{css_class}'><p>" - result << $2.strip - result << '</p></div>' - result - end - end - - def tip(body) - body.gsub!(/^TIP[.:](.*)$/) do |m| - result = "<div class='info'><p>" - result << $1.strip - result << '</p></div>' - 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(<div class="#{css_class}"><p>#{$2.strip}</p></div>) end end |